Здесь показаны различия между двумя версиями данной страницы.
чистка_кэша_беркли [21/06/2014 20:22] 178.168.196.176 |
чистка_кэша_беркли [16/05/2023 23:01] (текущий) radioxoma wiki syntax |
||
---|---|---|---|
Строка 3: | Строка 3: | ||
====== Чистка/оптимизация кэша Беркли ====== | ====== Чистка/оптимизация кэша Беркли ====== | ||
- | Сохранение тайлов в кэш Беркли, приводит к увеличению размеров файлов базы данных *.sdb или *.sdbv (далее - файлов БД). Удаление же тайлов из кэша Беркли (если вы вдруг таким занимались через операции с выделенной областью), не приводит к уменьшению размера файлов БД. Это связано с тем, что физически данные в БД не стираются, а лишь помечаются как удалённые, на место которых могут быть записаны новые данные. При этом, до определённого момента, увеличения размеров файлов БД не происходит. Такое поведение типично для сколь-нибудь сложных БД, и Беркли тому не исключение. Естественно, существуют и способы по уменьшению размеров файлов БД (чистка от удалённых данных), об одном из таких способов, применительно к кэшу Беркли, и будет рассказано ниже. | + | > Описываемая процедура предназначена для очистки кэша от уже удалённых тайлов, а не самого их удаления, которое должно выполняться из программы SAS.Planet. |
- | Внимание: | + | Сохранение тайлов в кэш Беркли, приводит к увеличению размеров файлов базы данных *.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, находящиеся внутри указанной папки (и во всех вложенных папках тоже). | ||
Строка 35: | Строка 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. В этом случае ничего не потеряется. | ||