Влияние параметров подключения на скорость сжатия MBTiles
Небольшое исследование в плане оптимизации времени сжатия MBTiles
Исходные параметры
DB: sample.mbtiles
SIZE: 4477M
TILES: 1332136 (~1.3M)
CHUNK SIZE: 100000
Параметры по умолчанию
PRAGMA synchronous=0 PRAGMA locking_mode=EXCLUSIVE PRAGMA journal_mode=DELETE
Время компрессии:
real 28m46.202s user 6m34.901s sys 16m5.388s
Отключение журналирования
Последняя стадия компрессии - удаление реальной таблицы с тайлами. Это приводит к значительному росту журнала транзакций. Его размер будет равен исходному файлу. Отключение журнала в случае сбоя приводит к потере всех изменений, производимых во время компрессии(но исходные данные остаются в целостности).
PRAGMA synchronous=0 PRAGMA locking_mode=EXCLUSIVE PRAGMA journal_mode=OFF
Время компрессии:
real 15m4.885s user 5m54.677s sys 6m32.340s
Увелечение cache_size
По умолчанию cache_size равен 2000 страниц. Увеличение размера ведет к значительному возрастанию потребления памяти!
PRAGMA synchronous=0 PRAGMA locking_mode=EXCLUSIVE PRAGMA journal_mode=DELETE PRAGMA cache_size=100000
Время компрессии:
real 26m21.234s user 6m36.169s sys 15m12.289s
Отключение вывода статистики
Не параметры подключения, но все же. Каждая операция добавления данных выводит время операции. Отключение можно произвести только отредактировав код.
#utils.py тут будет дифф когда нибудь
PRAGMA synchronous=0 PRAGMA locking_mode=EXCLUSIVE PRAGMA journal_mode=DELETE
Время компрессии:
real 20m15.349s user 3m3.098s sys 13m32.283s
Применение всех перечисленных оптимизаций
#вывод статистики отключен PRAGMA synchronous=0 PRAGMA locking_mode=EXCLUSIVE PRAGMA journal_mode=OFF PRAGMA cache_size=100000
Время компрессии:
real 9m33.636s user 2m28.588s sys 5m4.405s