SQLite-在wal模式下是否可以按块增加数据库?

时间:2019-06-05 11:55:35

标签: database sqlite fragmentation wal

我正在SQLite数据库中相当快地记录数据,这会导致光盘上有很多碎片(通常是2500个碎片/文件)。稍后当我尝试搜索该数据库时,需要花费很长时间,这主要是因为我有硬盘驱动器(即,没有ssd)。我的目标是将碎片降到最低,因为这将提高我的搜索性能。

我尝试将块大小设置为〜100Mb,但是如果我超过了此数据量,它将再次开始添加小记录,这会导致碎片。我想要一个特定的块大小,当数据库超过当前大小时,数据库将增加,例如100Mb-> 200Mb-> 300Mb。实际上,虽然块大小是自动执行的,但看起来确实如此。

存储容量对我来说不是问题,我可以承受数据库大小的一些过冲(数据库为1Gb,但数据仅为700Mb)。

任何建议都值得欢迎:)

以下代码显示了我如何设置SQLite连接:

SQLiteConnectionStringBuilder connBuilder = new SQLiteConnectionStringBuilder();

connBuilder.DataSource = dbFilename;
connBuilder.DateTimeKind = DateTimeKind.Utc;
connBuilder.Version = 3;
connBuilder.PageSize = 65536;
connBuilder.JournalMode = SQLiteJournalModeEnum.Wal;
var connection = new SQLiteConnection(connBuilder.ToString());

...

using (connection)
{
    connection.Open();
    connection.SetChunkSize(10000000);
    ....
}

0 个答案:

没有答案