首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >网络共享上同一个大SQLite文件的多个并发连接

网络共享上同一个大SQLite文件的多个并发连接
EN

Database Administration用户
提问于 2019-04-10 14:05:39
回答 1查看 8.3K关注 0票数 3

我有一个7GB的SQLite文件,并且在云中运行来自不同虚拟机的多个查询。有些查询是使用内置的sqlite3包在Python中运行的,而另一些则来自中运行的SQL查询。文件本身位于网络共享上(由于策略原因,无法在本地复制)。

这些并发查询会使彼此慢下来吗?

我可以在网络共享上多次复制SQLite文件,并将每个并发查询连接到它自己的文件副本。那会让事情加速吗?

我可以想象,sqlite3 Python驱动程序和DBVisualizer都首先将数据库文件复制到本地临时存储区(或内存中),在这种情况下,不需要提高速度,或者没有速度。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-04-10 14:38:47

并发性不是问题,只要您只阅读。SQLite不允许在写入时并发,因为它从来没有为此设计过。我不知道python驱动程序和DBVisualized的内部结构,但希望smb、os和任何中间件都能自动缓存文件的至少部分,因为除非请求,否则会自动完成,以加快文件系统访问速度。详细信息将取决于os配置和访问详细信息。

我想就一些你没有问到的问题发表意见,那就是你的架构是否合适:

  • 您需要通过网络访问数据库。
  • 您需要具有一定级别的并发性。
  • 您需要控制访问,因为策略原因(可能还有一些策略原因可能是备份)
  • 你对表现有期望
  • 您需要以更细粒度的方式控制内存和磁盘上的内容。
  • 您的数据库已经超过了一个微不足道的大小。

(而这些只是从你的问题中被感知到的)

SQLite是一个很好的软件,但是请考虑一下这对你来说是正确的技术,因为这几乎是一个什么时候不使用它的范例。当然,您可以创建一个循环设备并在内存中复制它,您可能会得到一些改进,但您也可以迁移到一个具有集成缓存系统的分布式系统(就像任何其他多用户关系数据库),并让该技术为您解决所有这些问题。

使用网络共享访问sqlite实际上是一种黑客行为,而众所周知,网络文件系统已造成数据丢失。由于其对写一致性的限制而受到攻击。

票数 8
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/234461

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档