我有一个7GB的SQLite文件,并且在云中运行来自不同虚拟机的多个查询。有些查询是使用内置的sqlite3包在Python中运行的,而另一些则来自中运行的SQL查询。文件本身位于网络共享上(由于策略原因,无法在本地复制)。
这些并发查询会使彼此慢下来吗?
我可以在网络共享上多次复制SQLite文件,并将每个并发查询连接到它自己的文件副本。那会让事情加速吗?
我可以想象,sqlite3 Python驱动程序和DBVisualizer都首先将数据库文件复制到本地临时存储区(或内存中),在这种情况下,不需要提高速度,或者没有速度。
发布于 2019-04-10 14:38:47
并发性不是问题,只要您只阅读。SQLite不允许在写入时并发,因为它从来没有为此设计过。我不知道python驱动程序和DBVisualized的内部结构,但希望smb、os和任何中间件都能自动缓存文件的至少部分,因为除非请求,否则会自动完成,以加快文件系统访问速度。详细信息将取决于os配置和访问详细信息。
我想就一些你没有问到的问题发表意见,那就是你的架构是否合适:
(而这些只是从你的问题中被感知到的)
SQLite是一个很好的软件,但是请考虑一下这对你来说是正确的技术,因为这几乎是一个什么时候不使用它的范例。当然,您可以创建一个循环设备并在内存中复制它,您可能会得到一些改进,但您也可以迁移到一个具有集成缓存系统的分布式系统(就像任何其他多用户关系数据库),并让该技术为您解决所有这些问题。
使用网络共享访问sqlite实际上是一种黑客行为,而众所周知,网络文件系统已造成数据丢失。由于其对写一致性的限制而受到攻击。
https://dba.stackexchange.com/questions/234461
复制相似问题