SQlite 3 - узкое место с rbuFindMaindb - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь оптимизировать приложение C ++, которое использует sqlite 3 для доступа к базе данных.Насколько я знаю, он использует журналирование с WAL и имеет много файлов / таблиц (около 400).Профилируя это приложение с помощью Linux perf, я обнаружил, что оно проводит около 30% своего времени в функции rbuFindMaindb SQlite3.Эта функция в основном состоит из цикла, который проходит по всем журналируемым файлам WAL в виртуальной файловой системе, поэтому кажется, что для снижения стоимости указанного цикла мне нужно было бы уменьшить количество файлов WAL.Видя, что sqlite, очевидно, создает WAL для каждого файла базы данных, я не знаю, как это исправить.

Теперь мой вопрос: как мне это оптимизировать?Можно ли уменьшить количество файлов WAL без уменьшения количества файлов базы данных?Существует ли другой режим журналирования, который не вызывает rbuFindMaindb так часто?Могу ли я оптимизировать свою программу так, чтобы эта функция вызывалась реже?

Спасибо за ваши предложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...