Как можно сжать базу данных SQLite с большим количеством записей в файл меньшего размера? - PullRequest
1 голос
/ 08 июля 2019

Сначала некоторый контекст. В настоящее время я использую несколько сценариев Python, которые собирают данные из разных источников. Поскольку я ожидаю получить много данных, я немного беспокоюсь о том, насколько хорошо моя машина может обрабатывать файлы большого размера, поэтому я отслеживаю, как развивается база данных. На данном этапе это не должно быть проблемой, но я заметил, что моя основная база данных (sqlite3) вообще не изменяется в размере. После некоторых исследований я обнаружил, что размер файла может остаться прежним, если в базе данных было больше записей ( Source ), что, скорее всего, произошло на стадии тестирования моих скриптов.

Я копирую свою базу данных каждый день в полночь и заметил, что размер сжатого zip-файла с каждым днем ​​уменьшается. Я использую скрипт для резервного копирования:

zip -r /backup/$(date +\%Y-\%m-\%d).zip /data

Каталог /data содержит несколько других небольших файлов, которые не должны были быть изменены ни в одном из сжатых zip-файлов.

Почему размер файла сжатого ZIP становится меньше?

1 Ответ

2 голосов
/ 08 июля 2019

Если файл базы данных не увеличивается при добавлении данных, это означает, что SQLite повторно использует свободное пространство: страницы базы данных, которые содержали строки, которые впоследствии были удалены.Эти страницы не стираются, а помечаются как свободные.SQLite не заботится о содержимом (и в конечном итоге перезапишет его), но zip все равно архивирует все.

Возможно, добавленные данные лучше сжаты, чем неиспользуемые данные, которые они перезаписывают.

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