Оптимизация базы данных — различия между версиями

Материал из wiki.standart-n.ru
Перейти к: навигация, поиск
(Новая страница: «В случае, когда база значительно увеличилась в размерах и превысила 1,5-2 Гб, следует прове…»)
 
(Резервирование\Восстановление базы данных)
 
(не показаны 23 промежуточные версии 2 участников)
Строка 1: Строка 1:
 
В случае, когда база значительно увеличилась в размерах и превысила 1,5-2 Гб, следует провести оптимизацию данных.
 
В случае, когда база значительно увеличилась в размерах и превысила 1,5-2 Гб, следует провести оптимизацию данных.
 +
 +
==Создаем файловую копию базы данных==
 +
 +
Просим всех пользователей выйти из программы!
  
 
*Отключаем службу '''Firebird Server Manager''': Пуск/Панель управления, режим просмотра: "Мелкие значки".
 
*Отключаем службу '''Firebird Server Manager''': Пуск/Панель управления, режим просмотра: "Мелкие значки".
 
[[Файл:Оптимизация_бд_отключение_firebird.jpg|center|Отключение Firebird]]
 
[[Файл:Оптимизация_бд_отключение_firebird.jpg|center|Отключение Firebird]]
  
*Создаем файловую копию базы данных ZTRADE.FBD, переименовываем ее в ZTRADE_orig, и работаем с файловой копией:
+
*Создаем файловую копию базы данных ZTRADE.FBD. ZTRADE.FDB переименовываем в ZTRADE_orig, и работаем с файловой копией. Для удобства работы с ней переименуем, добавив в название дату:
 
[[Файл:Оптимизация_бд_файловая_копия_бд.jpg|center|Файловая копия бд]]
 
[[Файл:Оптимизация_бд_файловая_копия_бд.jpg|center|Файловая копия бд]]
  
 
*Включаем службу '''Firebird Server Manager''':
 
*Включаем службу '''Firebird Server Manager''':
 
[[Файл:Оптимизация_бд_включение_firebird.jpg|center|Включение Firebird]]
 
[[Файл:Оптимизация_бд_включение_firebird.jpg|center|Включение Firebird]]
 +
 +
==Заходим в программу IBExpert, создаем подключение к копии базы данных==
 +
* Заходим в меню «База данных»(Database) - «Зарегистрировать базу»(Register Database),
 +
* В  открывшемся окне  указываем Имя Сервера(Server name)  на котором лежит база данных, 
 +
* В окне Версия сервера(Server Version) выбираем  Firebird 2.5,
 +
* Файл базы данных(Database File) по иконке с папкой выбираем путь к нашей базой данных,
 +
* Пользователь(User name) - прописываем SYSDBA,
 +
* Пароль(Password) – masterkey,
 +
* Кодировка(Charset) выставляем WIN1251.
 +
[[Файл:Оптимизация_бд_регистрация_базы_данных.jpg|center|Регистрация бд]]
 +
 +
==Создаем бэкап базы данных==
 +
Для создания бэкапа выбираем '''«Службы»(Services)''' - '''«Резервирование базы данных»(Backup Database'''):
 +
[[Файл:Оптимизация_бд_бэкап_базы_данных.jpg|center|Бэкап бд]]
 +
*В появившемся окне, в поле ''Имя файла(File Name)'', встает путь к базе по умолчанию , например: «С:\Standart-N\base\ztrade_20150106.fbk».
 +
*Отключите галочку Сборка мусора(Garbage Collection)  и нажимайте кнопку «Начать резервное копирование»(Start Backup).
 +
 +
При успешном завершении бэкапа окно будет выглядеть следующим образом:
 +
[[Файл:Оптимизация_бд_успешное_завершение_бэкапа.jpg|center|Бэкап бд]]
 +
 +
==Просмотр системных таблиц==
 +
*Заходим в меню «База данных»(Databas) - «Регистрационная информация базы …»(Database Registration Info …).
 +
*В открывшемся окне «Параметры базы данных»  в левой панели выбираем в пункте «Дополнительно»(Additional) подменю «Эксплорер БД»(DB Explorer).
 +
*Справа отобразится несколько пунктов и нам нужно будет выбрать и установить галку  «Показывать системные  таблицы»(Show System Tables), после чего нажимаем кнопку «Ок».
 +
[[Файл:Оптимизация_бд_показывать_системные_таблицы.jpg|center|Системные таблицы]]
 +
*Дальше нам необходимо в левой панели «Database Explorer» два раза кликнуть по нашей базе, так чтобы мы увидели дерево данных в следующем виде:
 +
[[Файл:Оптимизация_бд_дерево_данных.jpg|center|Дерево данных]]
 +
 +
==Отключение логирования==
 +
Заходим  в меню  '''«Инструменты»(Tools)''' - '''«Менеджер протоколов данных»(Log Manager)''',
 +
Должно открыться окно, но может выйти окно с ошибкой:
 +
[[Файл:Оптимизация_бд_ошибка_при_открытии_менеджере_протоколов_данных.jpg|center|Ошибка]]
 +
Не пугайтесь, просто нажимайте кнопку «Ок» , она ни на что не влияет.Если  она у Вас появилась, то заодно закройте окно «Менеджер протоколов данных» и заново откройте.
 +
 +
В этом окне находим одноименную кнопку '''«Менеджер протоколов данных» (Log Manager)''' и выбираем пункт '''«Отменить протоколирование для всех таблиц»(Unprepare all tables)'''. У нас должны сняться все отметки, после чего мы нажимаем кнопку с молнией  [[Файл:Оптимизация_бд_кнопка_компиляции.jpg|Компиляция]] или  F9.. После чего должно появиться окно '''«Updating  logging triggers…»''' , в котором необходимо нажать кнопку '''«Подтвердить»(Commit)'''. Таким образом мы отключили с вами логирование базы данных.
 +
 +
==Очистка и удаление таблиц==
 +
Слева в окне мы видим дерево данных, самой нижней строкой стоит пункт «Системные таблицы», подсвеченный красным цветом.
 +
 +
Раскрываем плюсик и видим первые четыре таблицы, их нам с Вами нужно удалить, последовательно встаем на них мышью и правой кнопкой мыши выбираем пункт '''«Удалить таблицу …»(Drop table …).''' :
 +
*IBE$LOG_BLOB_FIELDS;
 +
*IBE$LOG_FIELDS;
 +
*IBE$LOG_KEYS
 +
*IBE$LOG_TABLES.
 +
 +
После того как мы удалили все четыре таблицы, в этом же дереве раскрываем пункт «Генераторы»  и удаляем последнюю строку в этом пункте, также выделенную красным цветом:
 +
*IBE$LOG_TABLES_GEN
 +
 +
Удаляем также правой кнопкой мыши.
 +
 +
Мы удали все необходимые системные таблицы , теперь нам необходимо '''очистить''' таблицы с логами .Также по плюсу раскрываем пункт «Таблицы», и последовательно чистим следующие таблицы:
 +
*ANALYTIC_DOC_DETAIL_1
 +
*ANALYTIC_DOC_DETAIL_2
 +
*ANALYTIC_DOC_DETAIL_3
 +
...
 +
Т.е все таблицы имеющие в своем название «ANALYTIC_DOC_DETAIL»
 +
*ANALYTIC_FALSIFICAT
 +
*ANALYTIC_GNVLS
 +
*ANALYTIC_MIN_ASSORT
 +
*ANALYTIC_PRICE
 +
*DOCS_LOG
 +
*DOC_DETAIL_ACTIVE_LOG
 +
*DOC_DETAIL_LOG
 +
*PARTS_LOG
 +
*TMP_LOG
 +
'''Ни в коем случае НЕ трогаем таблицу WARES_LOG'''
 +
 +
Очистку этих таблиц будем осуществлять следующим образом:
 +
Двойным щелчком мыши по вышеперечисленной таблице, так чтобы она у нас открылась . Затем ищем меню «Таблица»(Table) и выбираем пункт «Очистить таблицу»(Empty table) .
 +
[[Файл: Оптимизация_бд_очистка_таблицы.jpg|center| Очистка таблицы]]
 +
Затем у Нас появляется окно «Подтверждение» , и мы подтверждаем свои намерения:
 +
[[Файл: Оптимизация_бд_подтверждение_очистки_таблицы.jpg|center|Подтверждение очистки таблицы]]
 +
 +
==Резервирование\Восстановление базы данных==
 +
 +
После того как очистили таблицы, необходимо снова сделать резервирование данных, а потом восстановление, для этого идем в меню «Службы»(Services) и создаем резервную копию нашей почищенной базы данных ( «Резервирование базы данных»(Backup database)), при этом не забываем отключить флажок  Сборка мусора(Garbage Collection)  и нажимаем кнопку «Начать резервное копирование»(Start Backup).
 +
 +
Ждем окончание процесса создания бэкапа, затем нам необходимо восстановить нашу базу данных из этой резервной копии, для этого в том же меню «Службы» (Services)  выбираем пункт «Восстановление базы данных»(Restore Database).
 +
 +
В открывшемся окне с помощью кнопки [[Файл: Оптимизация_бд_кнопка_выбрать_бэкап_для_восстановления.jpg|Кнопка выбрать бэкап]]  нам нужно выбрать бэкап , который мы только что создали.
 +
Окно должно выглядеть  следующим образом:
 +
[[Файл: Оптимизация_восстановление_базы_данных.jpg|center|Восстановление базы данных]]
 +
После окончания процесса создастся новая база ZTRADE_NEW.FDB, переименовываем ее в ZTRADE.FDB.
 +
 +
В общем все, готово! Проверьте размер базы данных, она должна значительно уменьшиться в размерах. После чего можете сообщить пользователям,  что уже можно работать в программе!

Текущая версия на 10:18, 20 января 2017

В случае, когда база значительно увеличилась в размерах и превысила 1,5-2 Гб, следует провести оптимизацию данных.

Создаем файловую копию базы данных

Просим всех пользователей выйти из программы!

  • Отключаем службу Firebird Server Manager: Пуск/Панель управления, режим просмотра: "Мелкие значки".
Отключение Firebird
  • Создаем файловую копию базы данных ZTRADE.FBD. ZTRADE.FDB переименовываем в ZTRADE_orig, и работаем с файловой копией. Для удобства работы с ней переименуем, добавив в название дату:
Файловая копия бд
  • Включаем службу Firebird Server Manager:
Включение Firebird

Заходим в программу IBExpert, создаем подключение к копии базы данных

  • Заходим в меню «База данных»(Database) - «Зарегистрировать базу»(Register Database),
  • В открывшемся окне указываем Имя Сервера(Server name) на котором лежит база данных,
  • В окне Версия сервера(Server Version) выбираем Firebird 2.5,
  • Файл базы данных(Database File) по иконке с папкой выбираем путь к нашей базой данных,
  • Пользователь(User name) - прописываем SYSDBA,
  • Пароль(Password) – masterkey,
  • Кодировка(Charset) выставляем WIN1251.
Регистрация бд

Создаем бэкап базы данных

Для создания бэкапа выбираем «Службы»(Services) - «Резервирование базы данных»(Backup Database):

Бэкап бд
  • В появившемся окне, в поле Имя файла(File Name), встает путь к базе по умолчанию , например: «С:\Standart-N\base\ztrade_20150106.fbk».
  • Отключите галочку Сборка мусора(Garbage Collection) и нажимайте кнопку «Начать резервное копирование»(Start Backup).

При успешном завершении бэкапа окно будет выглядеть следующим образом:

Бэкап бд

Просмотр системных таблиц

  • Заходим в меню «База данных»(Databas) - «Регистрационная информация базы …»(Database Registration Info …).
  • В открывшемся окне «Параметры базы данных» в левой панели выбираем в пункте «Дополнительно»(Additional) подменю «Эксплорер БД»(DB Explorer).
  • Справа отобразится несколько пунктов и нам нужно будет выбрать и установить галку «Показывать системные таблицы»(Show System Tables), после чего нажимаем кнопку «Ок».
Системные таблицы
  • Дальше нам необходимо в левой панели «Database Explorer» два раза кликнуть по нашей базе, так чтобы мы увидели дерево данных в следующем виде:
Дерево данных

Отключение логирования

Заходим в меню «Инструменты»(Tools) - «Менеджер протоколов данных»(Log Manager), Должно открыться окно, но может выйти окно с ошибкой:

Ошибка

Не пугайтесь, просто нажимайте кнопку «Ок» , она ни на что не влияет.Если она у Вас появилась, то заодно закройте окно «Менеджер протоколов данных» и заново откройте.

В этом окне находим одноименную кнопку «Менеджер протоколов данных» (Log Manager) и выбираем пункт «Отменить протоколирование для всех таблиц»(Unprepare all tables). У нас должны сняться все отметки, после чего мы нажимаем кнопку с молнией Компиляция или F9.. После чего должно появиться окно «Updating logging triggers…» , в котором необходимо нажать кнопку «Подтвердить»(Commit). Таким образом мы отключили с вами логирование базы данных.

Очистка и удаление таблиц

Слева в окне мы видим дерево данных, самой нижней строкой стоит пункт «Системные таблицы», подсвеченный красным цветом.

Раскрываем плюсик и видим первые четыре таблицы, их нам с Вами нужно удалить, последовательно встаем на них мышью и правой кнопкой мыши выбираем пункт «Удалить таблицу …»(Drop table …). :

  • IBE$LOG_BLOB_FIELDS;
  • IBE$LOG_FIELDS;
  • IBE$LOG_KEYS
  • IBE$LOG_TABLES.

После того как мы удалили все четыре таблицы, в этом же дереве раскрываем пункт «Генераторы» и удаляем последнюю строку в этом пункте, также выделенную красным цветом:

  • IBE$LOG_TABLES_GEN

Удаляем также правой кнопкой мыши.

Мы удали все необходимые системные таблицы , теперь нам необходимо очистить таблицы с логами .Также по плюсу раскрываем пункт «Таблицы», и последовательно чистим следующие таблицы:

  • ANALYTIC_DOC_DETAIL_1
  • ANALYTIC_DOC_DETAIL_2
  • ANALYTIC_DOC_DETAIL_3

... Т.е все таблицы имеющие в своем название «ANALYTIC_DOC_DETAIL»

  • ANALYTIC_FALSIFICAT
  • ANALYTIC_GNVLS
  • ANALYTIC_MIN_ASSORT
  • ANALYTIC_PRICE
  • DOCS_LOG
  • DOC_DETAIL_ACTIVE_LOG
  • DOC_DETAIL_LOG
  • PARTS_LOG
  • TMP_LOG

Ни в коем случае НЕ трогаем таблицу WARES_LOG

Очистку этих таблиц будем осуществлять следующим образом: Двойным щелчком мыши по вышеперечисленной таблице, так чтобы она у нас открылась . Затем ищем меню «Таблица»(Table) и выбираем пункт «Очистить таблицу»(Empty table) .

Очистка таблицы

Затем у Нас появляется окно «Подтверждение» , и мы подтверждаем свои намерения:

Подтверждение очистки таблицы

Резервирование\Восстановление базы данных

После того как очистили таблицы, необходимо снова сделать резервирование данных, а потом восстановление, для этого идем в меню «Службы»(Services) и создаем резервную копию нашей почищенной базы данных ( «Резервирование базы данных»(Backup database)), при этом не забываем отключить флажок Сборка мусора(Garbage Collection) и нажимаем кнопку «Начать резервное копирование»(Start Backup).

Ждем окончание процесса создания бэкапа, затем нам необходимо восстановить нашу базу данных из этой резервной копии, для этого в том же меню «Службы» (Services) выбираем пункт «Восстановление базы данных»(Restore Database).

В открывшемся окне с помощью кнопки Кнопка выбрать бэкап нам нужно выбрать бэкап , который мы только что создали. Окно должно выглядеть следующим образом:

Восстановление базы данных

После окончания процесса создастся новая база ZTRADE_NEW.FDB, переименовываем ее в ZTRADE.FDB.

В общем все, готово! Проверьте размер базы данных, она должна значительно уменьшиться в размерах. После чего можете сообщить пользователям, что уже можно работать в программе!