SAS.Wiki

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

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

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


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

Различия

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

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

чистка_кэша_беркли [21/06/2014 20:41]
zed
чистка_кэша_беркли [11/09/2015 07:25] (текущий)
109.94.188.62
Строка 6: Строка 6:
  
 Внимание: ​ Внимание: ​
-  * при всех операциях над кэшем Беркли "​извне"​SAS.Планета должна быть закрыта+  * при всех операциях над кэшем Беркли "​извне"​ SAS.Планета должна быть закрыта
   * перед всеми процедурами делайте бэкапы файлов БД, которые вы планируете оптимизировать   * перед всеми процедурами делайте бэкапы файлов БД, которые вы планируете оптимизировать
  
Строка 16: Строка 16:
  
 Действие **Restore broken files from *.bad** утилиты **sdb_util.exe** состоит из трёх этапов:​\\ Действие **Restore broken files from *.bad** утилиты **sdb_util.exe** состоит из трёх этапов:​\\
-1) Создание дампа отдельно-взятого файла БД. При этом происходит копирование во временный файл (*.dump) неповреждённых тайлов и тайлов не помеченных в БДкак удалённые.\\+1) Создание дампа отдельно взятого файла БД. При этом происходит копирование во временный файл (*.dump) неповреждённых тайлов и тайловне помеченных в БД как удалённые.\\
 2) Создание из полученного дампа нового файла БД, содержащего только полноценные данные.\\ 2) Создание из полученного дампа нового файла БД, содержащего только полноценные данные.\\
 3) Верификация нового файла БД, если всё хорошо,​ файл дампа и файл *.bad удаляются,​ остаётся нормальный файл БД. 3) Верификация нового файла БД, если всё хорошо,​ файл дампа и файл *.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). Т. е. структура БД самооптимизирующаяся. ​