SASGIS

Веб-картография и навигация

SAS.Wiki

Веб-картография и навигация

Инструменты пользователя

Инструменты сайта


чистка_кэша_беркли

Это старая версия документа.


Главная страница

Чистка/оптимизация кэша Беркли

Сохранение тайлов в кэш Беркли, приводит к увеличению размеров файлов базы данных *.sdb или *.sdbv (далее - файлов БД). Удаление же тайлов из кэша Беркли (если вы вдруг таким занимались через операции с выделенной областью), не приводит к уменьшению размера файлов БД. Это связано с тем, что физически данные в БД не стираются, а лишь помечаются как удалённые, на место которых могут быть записаны новые данные. При этом, до определённого момента, увеличения размеров файлов БД не происходит. Такое поведение типично для сколь-нибудь сложных БД, и Беркли тому не исключение. Естественно, существуют и способы по уменьшению размеров файлов БД (чистка от удалённых данных), об одном из таких способов, применительно к кэшу Беркли, и будет рассказано ниже.

Внимание:

  • при всех операциях над кэшем Беркли «извне», SAS.Планета должна быть закрыта
  • перед всеми процедурами делайте бекапы файлов БД, которые вы планируете оптимизировать

Описываемая процедура предназначена для очистки кэша от уже удалённых файлов, а не самого их удаления, которое должно выполняться из программы SASПланета.

Используя набор утилит для кэша Беркли, можно очистить кэш от удалённых файлов. Очень удобно пользоваться утилитой sdb_util.exe, объединяющей в себе возможности почти всех отдельных утилит. В списке действий, которые данная утилита выполняет, есть Restore broken files from *.bad. То есть восстановление повреждённых файлов из файлов *.bad.

Действие Restore broken files from *.bad утилиты sdb_util.exe состоит из трёх этапов:
1) Создание дампа файла БД. Составляется список полноценных файлов, т. е. тех, которые одновременно и числятся в БД, и могут быть прочитаны. Файлы, не удовлетворяющие хотя бы одному из указанных условий, игнорируются. К этой категории относятся как повреждённые, так и удалённые файлы.
2) Создание из полученного дампа нового файла БД, содержащего только полноценные данные.
3) Верификация нового файла БД, если всё хорошо, файл дампа и файл *.bad удаляются, остаётся нормальный файл БД.

Откуда берутся файлы *.bad? При верификации утилитой db_verify.exe (или действием Verify cache (find broken files) утилиты sdb_util.exe) отыскиваются повреждённые файлы, то есть файлы, которые числятся в БД, но не могут быть прочитаны. Тогда файл БД получает «второе» расширение *.bad. На удалённые файлы утилита db_verify.exe не реагирует, так как они уже не числятся в БД. Поэтому, если «настоящих» повреждённых файлов в БД нет, то верификация пройдёт успешно, и к имени файла БД не будет добавлено расширение .bad.
Но никто не мешает нам добавить это расширение вручную.

Утилита sdb_util.exe обрабатывает все файлы *.bad, находящиеся внутри указанной папки (и во всех вложенных папках тоже).

Для переименования файлов БД удобно пользоваться Total Commander'ом.

Чем больше размеры файлов БД и их количество, тем больше времени занимает процедура очистки. Файлы *.bad не могут быть использованы SASПланетой ни для отображения, ни для скачивания, поэтому, пока идёт процедура очистки, SASПланетой пользоваться не получится. Отсюда рекомендация: не замахиваться на глобальную очистку, переименовывая сразу все файлы БД в кэше.

Если нужно почистить не весь кэш, а лишь определённую местность, то из всех имеющихся файлов БД следует выбрать только те, которые содержат тайлы этой местности. Для этого в SASПланете устанавливаем масштаб, равный масштабу, который нужно почистить, минус 8. Должно быть включено отображение границ тайлов. Смотрим на обозначения тайлов, попадающих на нужную местность. Цифры, указанные в виде x=XXX, y=YYY, будут входить в названия нужных нам файлов БД. Например, если мы хотим почистить карту Черногории на z15, находим Черногорию и устанавливаем масштаб 15-8=7. Карта попадает в тайл с x=35 и y=23. Значит, файл БД, содержащий эту карту, должен называться 35.23.sdb (ну, или 35.23.sdbv, если кэш версионный). Поиском находим этот файл и обрабатываем его.

Перевод этой страницы: