首页 > 解决方案 > 具有多个阅读器的 AWS EFS(或网络共享)上的 100GB 只读随机访问 SQLite 文件

问题描述

SQLite 不是为从 EFS(或网络共享)访问而设计的。这是由于性能和数据完整性。在这种情况下,使用的工具需要 sqlite,并且在不久的将来无法更改。

这就是我们所拥有的:

  1. 1..n 只读访问 SQLite 文件的 docker
  2. SQLite 文件为 100GB,包含一些非常大的表(>500M 记录)
  3. 只会读取 SQLite 文件。(数据不变)
  4. 随机访问读取sqlite数据

EFS 上的 SQLite 文件并安装到机器上的问题:

当前解决方案:

  1. 使用本地存储启动机器
  2. 将大的sqlite文件复制到本地存储
  3. 启动泊坞窗

复制需要 700 秒,这意味着启动需要一段时间。此外,每个 docker 都需要额外的本地(临时)存储。运行时所有计算的性能都很好。

问题:

预计 EFS 不会像本地存储一样快,但是由于此设置只需要只读访问权限,因此可以设置几个 sqlite 设置以提高性能。应该设置哪些 sqlite 设置?还是没有办法提高性能,我们目前的解决方案是唯一的吗?

增加 page_size 尚未测试,但可能会提高性能:

PRAGMA page_size = 65536;

由于此设置是只读的,因此以下设置没有任何效果,对吗?:

PRAGMA SYNCHRONOUS = OFF;
PRAGMA journal_mode = PERSIST;

标签: amazon-web-servicesdockersqlitenfsamazon-efs

解决方案


推荐阅读