Неиспользуемое пространство в sqlite

Я запустил sqlite3_analyzer, чтобы попытаться понять, почему база данных потребляет гораздо больше дискового пространства, чем ожидалось, даже после использования VACUUM. Вывод показывает, что есть много таблиц с дополнительными страницами, используемыми, казалось бы, без причины. Вот пример:

*** Table ACCOUNT_EMAILCONFIRMATION and all its indices ***********************

Percentage of total database......................   2.6%    
Number of entries................................. 0         
Bytes of storage consumed......................... 12288     
Bytes of payload.................................. 0            0.0% 
Bytes of metadata................................. 24           0.20% 
Average payload per entry......................... 0.0       
Average unused bytes per entry.................... 0.0       
Average metadata per entry........................ 0.0       
Maximum payload per entry......................... 0         
Entries that use overflow......................... 0         
Primary pages used................................ 3         
Overflow pages used............................... 0         
Total pages used.................................. 3         
Unused bytes on primary pages..................... 12264       99.80% 
Unused bytes on overflow pages.................... 0         
Unused bytes on all pages......................... 12264       99.80% 

Здесь для хранения нулевых записей используются три страницы, каждая по 4 096 байт. В результате крошечная база данных занимает сотни КБ. Это заставляет меня подозревать, что размер базы данных может быстро взорваться, когда я запущу свой Django-сайт в производство.

Почему это происходит? Как мне вернуть все это неиспользуемое пространство и предотвратить это в будущем?

Почему это происходит? Как мне вернуть все это неиспользуемое пространство и предотвратить это в будущем?

Вы можете вернуть неиспользуемое пространство, используя VACUUM (или полагаясь на auto_vacuum, но это не так тщательно) . Краткое объяснение того, почему и что делает VACUUM можно найти на https://www.sqlite.org/lang_vacuum.html

Вернуться на верх