SASGIS

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

SAS.Wiki

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

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

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


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

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

чистка_кэша_беркли [21/06/2014 20:41]
zed
чистка_кэша_беркли [16/05/2023 23:01] (текущий)
radioxoma wiki syntax
Строка 2: Строка 2:
  
 ====== Чистка/​оптимизация кэша Беркли ====== ====== Чистка/​оптимизация кэша Беркли ======
 +
 +> Описываемая процедура предназначена для очистки кэша от уже удалённых тайлов,​ а не самого их удаления,​ которое должно выполняться из программы SAS.Planet.
  
 Сохранение тайлов в кэш Беркли,​ приводит к увеличению размеров файлов базы данных *.sdb или *.sdbv (далее - файлов БД). Удаление же тайлов из кэша Беркли (если вы вдруг таким занимались через операции с выделенной областью),​ не приводит к уменьшению размера файлов БД. Это связано с тем, что физически данные в БД не стираются,​ а лишь помечаются как удалённые,​ на место которых могут быть записаны новые данные. При этом, до определённого момента,​ увеличения размеров файлов БД не происходит. Такое поведение типично для сколь-нибудь сложных БД, и Беркли тому не исключение. Естественно,​ существуют и способы по уменьшению размеров файлов БД (чистка от удалённых данных),​ о которых и будет рассказано ниже. Сохранение тайлов в кэш Беркли,​ приводит к увеличению размеров файлов базы данных *.sdb или *.sdbv (далее - файлов БД). Удаление же тайлов из кэша Беркли (если вы вдруг таким занимались через операции с выделенной областью),​ не приводит к уменьшению размера файлов БД. Это связано с тем, что физически данные в БД не стираются,​ а лишь помечаются как удалённые,​ на место которых могут быть записаны новые данные. При этом, до определённого момента,​ увеличения размеров файлов БД не происходит. Такое поведение типично для сколь-нибудь сложных БД, и Беркли тому не исключение. Естественно,​ существуют и способы по уменьшению размеров файлов БД (чистка от удалённых данных),​ о которых и будет рассказано ниже.
  
-Внимание:​  +Внимание:​ 
-  * при всех операциях над кэшем Беркли "​извне"​SAS.Планета должна быть закрыта+  * при всех операциях над кэшем Беркли "​извне"​ SAS.Планета должна быть закрыта
   * перед всеми процедурами делайте бэкапы файлов БД, которые вы планируете оптимизировать   * перед всеми процедурами делайте бэкапы файлов БД, которые вы планируете оптимизировать
- 
-Замечание:​ Описываемая процедура предназначена для очистки кэша от уже удалённых тайлов,​ а не самого их удаления,​ которое должно выполняться из программы SAS.Планета. ​ 
  
 ===== Чистка кэша с использованием sdb_util ===== ===== Чистка кэша с использованием sdb_util =====
Строка 15: Строка 15:
 Используя набор утилит для кэша Беркли,​ можно очистить кэш от удалённых тайлов. Очень удобно пользоваться утилитой **sdb_util.exe**,​ объединяющей в себе возможности почти всех отдельных утилит. В списке действий,​ которые данная утилита выполняет,​ есть **Restore broken files from *.bad** - восстановление повреждённых файлов из файлов *.bad. Используя набор утилит для кэша Беркли,​ можно очистить кэш от удалённых тайлов. Очень удобно пользоваться утилитой **sdb_util.exe**,​ объединяющей в себе возможности почти всех отдельных утилит. В списке действий,​ которые данная утилита выполняет,​ есть **Restore broken files from *.bad** - восстановление повреждённых файлов из файлов *.bad.
  
-Действие **Restore broken files from *.bad** утилиты **sdb_util.exe** состоит из трёх этапов:​\\ +Действие **Restore broken files from *.bad** утилиты **sdb_util.exe** состоит из трёх этапов:​ 
-1) Создание дампа отдельно-взятого файла БД. При этом происходит копирование во временный файл (*.dump) неповреждённых тайлов и тайлов не помеченных в БДкак удалённые.\\ +  ​- ​Создание дампа отдельно взятого файла БД. При этом происходит копирование во временный файл (*.dump) неповреждённых тайлов и тайловне помеченных в БД как удалённые. 
-2) Создание из полученного дампа нового файла БД, содержащего только полноценные данные.\\ +  ​- ​Создание из полученного дампа нового файла БД, содержащего только полноценные данные. 
-3) Верификация нового файла БД, если всё хорошо,​ файл дампа и файл *.bad удаляются,​ остаётся нормальный файл БД.+  ​- ​Верификация нового файла БД, если всё хорошо,​ файл дампа и файл *.bad удаляются,​ остаётся нормальный файл БД.
  
-Откуда берутся файлы *.bad? При проверке файлов БД утилитой **db_verify.exe** (или действием **Verify cache (find broken files)** утилиты **sdb_util.exe**) отыскиваются повреждённые тайлы, то есть тайлы, которые числятся в БД, но не могут быть прочитанывследствии ошибок в структуре БД или из-за физического повреждения файлов БД. Тогда файл БД получает "​второе"​ расширение *.bad. На удалённые из кэша тайлы утилита **db_verify.exe** не реагирует,​ поэтому,​ если с файлом БД нет никаких проблем и повреждений,​ верификация пройдёт успешно,​ и к имени файла БД не будет добавлено расширение .bad. **Но никто не мешает нам добавить это расширение вручную**.+Откуда берутся файлы *.bad? При проверке файлов БД утилитой **db_verify.exe** (или действием **Verify cache (find broken files)** утилиты **sdb_util.exe**) отыскиваются повреждённые тайлы, то есть тайлы, которые числятся в БД, но не могут быть прочитаны вследствие ошибок в структуре БД или из-за физического повреждения файлов БД. Тогда файл БД получает "​второе"​ расширение *.bad. На удалённые из кэша тайлы утилита **db_verify.exe** не реагирует,​ поэтому,​ если с файлом БД нет никаких проблем и повреждений,​ верификация пройдёт успешно,​ и к имени файла БД не будет добавлено расширение .bad. **Но никто не мешает нам добавить это расширение вручную**.
  
 Утилита **sdb_util.exe** обрабатывает все файлы *.bad, находящиеся внутри указанной папки (и во всех вложенных папках тоже). Утилита **sdb_util.exe** обрабатывает все файлы *.bad, находящиеся внутри указанной папки (и во всех вложенных папках тоже).
Строка 34: Строка 34:
 ===== Чистка кэша сторонними средствами ===== ===== Чистка кэша сторонними средствами =====
  
-Следует отметит,​ что существует ещё один //​теоретический//​ способ оптимизации кэша Беркли (на практике пока что для этого способа нету готовых утилит). В API BerkeleyDB предусмотрен специальный метод [[http://​docs.oracle.com/​cd/​E17076_02/​html/​api_reference/​C/​dbcompact.html|DB->​compact()]] - это метод "​щадящей"​ оптимизации (без пересоздания файла БД), поддерживает множество опций, но консольной утилиты для этой операции они почему-то не сделали. Возможно из-за того, что при обычных операциях записи в БД, там такая оптимизация проводится по-умолчанию,​ но не для всей БД, а только для тех страниц,​ которые используются для поиска/​записи текущего ключа (key). Т.е. структура БД самооптимизирующаяся. ​+Следует отметить, что существует ещё один //​теоретический//​ способ оптимизации кэша Беркли (на практике пока что для этого способа нет готовых утилит). В API BerkeleyDB предусмотрен специальный метод [[http://​docs.oracle.com/​cd/​E17076_02/​html/​api_reference/​C/​dbcompact.html|DB->​compact()]] - это метод "​щадящей"​ оптимизации (без пересоздания файла БД), поддерживает множество опций, но консольной утилиты для этой операции они почему-то не сделали. Возможно из-за того, что при обычных операциях записи в БД, там такая оптимизация проводится по-умолчанию,​ но не для всей БД, а только для тех страниц,​ которые используются для поиска/​записи текущего ключа (key). Т. е. структура БД самооптимизирующаяся. ​ 
 + 
 + 
 +====== Восстановление повреждённого кэша BerkeleyDB ======
  
 +Для восстановления повреждённого кэша BerkeleyDB:
 +  - Скачать файл http://​sasgis.org/​forum/​download/​file.php?​id=3150
 +  - Распаковать в директорию САС.Планеты
 +  - Исправить пути к утилитам из архива
 +  - Если кэш какой-то карты заглючил,​ надо скопировать оба bat-файла в директорию с этим кэшем. Запустить ''​verify.bat''​. Если какие-то файлы sdb и tne покорраптились,​ они будут переименованы в *.BAD (соответствующий кусок кэша будет потерян!). Если проблема не в файлах sdb и tne, а в логах (они находятся в директории env), надо удалить директорию env и запустить ''​load.bat''​.
 +Когда он отработает,​ можно запускать SAS.Planet, она откроет кэш и создаст новый env. В этом случае ничего не потеряется.