В каком порядке я должен вызывать ANALYZE и VACUUM в базе данных SQLite3? - PullRequest
0 голосов
/ 01 октября 2019

В каком порядке я должен вызывать ANALYZE и VACUUM в базе данных SQLite3? Какая разница, если есть? Мой вариант использования - создать базу данных для поиска, поэтому я заполняю ее данными, вызываю ANALYZE и VACUUM и затем никогда больше не изменяю базу данных.

Понимание того, имеет ли значение порядок для других баз данных, таких какPostgreSQL и другие также приветствуются.

1 Ответ

1 голос
/ 01 октября 2019

Analyze создает системные таблицы (с именем sqlite_stat? (Где? Это число)), которые используются, если они существуют, планировщиком запросов при запуске запроса, чтобы попытаться оптимизировать запросы.

Анализ имеетмало влияет на то, что делает VACUUM, что похоже на дефрагментацию диска, в том смысле, что он перезагружает базу данных, освобождая неиспользуемое пространство (страницы).

В вашем случае, я не думаю, что имеет значение, какой запускво-первых, как VACUUM вряд ли уменьшит размер sqlite_stat? столы. Тем не менее, в теории VACUUM должен быть запущен последним. Если вы предоставляете базу данных только для чтения, вы должны запустить обе базы данных, прежде чем поместить базу данных в ее окончательное место.

...