Я довольно быстро записываю данные в базу данных SQLite, что приводит к большому количеству фрагментов на диске (обычно 2500 фрагментов / файл).Когда я позже попытаюсь выполнить поиск по этой базе данных, это займет много времени, в основном из-за того, что у меня есть жесткий диск (т.е. не ssd).Моя цель - свести фрагментацию к минимуму, так как это увеличит мою производительность поиска.
Я попытался установить размер чанка ~ 100 Мб, но если я превысию этот объем данных, он начнет добавлять небольшие записиопять же, что приводит к фрагментации.Я хотел бы иметь определенный размер чанка, который база данных будет увеличивать при превышении текущего размера, например, 100 МБ -> 200 МБ -> 300 МБ.Я действительно, хотя размер куска делал это автоматически, но похоже, что так.
Емкость хранилища для меня не проблема, я могу выдержать некоторое превышение размера базы данных (например, база данных составляет 1 ГБ, но данные только 700 МБ)).
Любые предложения приветствуются:)
В приведенном ниже коде показано, как настроить соединение 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);
....
}