2013-05-23 1 views
2

База данных Firebird 2.1.3, похоже, создает много мусора из незавершенных транзакций, из-за чего база данных запускается очень медленно, пока ее мусор не будет удален с помощью развертки базы данных или перезагрузки сервера. Моя база данных имеет размер 30gb +. Вы знаете, что может быть причиной этого? Выполняет ли какая-либо из новых хранимых процедур избыток мусора? Пожалуйста, помогите мне.?Удалить мусорную форму Firebird DataBase

ответ

3

База данных Firebird, которая замедляется после определенного периода времени, обычно является признаком плохого управления транзакциями клиентов. Это можно легко проверить путем проверки различных счетчиков транзакций со страницы заголовка, которые могут быть запрошены с помощью бега:

gstat -h <yourdatabase> 

, когда база данных становится медленным. Например: Практически все библиотеки доступа при запуске транзакций в режиме автоматической фиксации (в основном, когда вы не заботитесь о начале явных транзакций в своем клиентском приложении) используют COMMIT RETAINING, что в основном блокирует перемещение OIT/OAT вперед.

Помимо средства командной строки gstat, с Firebird 2.1 у вас также есть таблицы мониторинга, в частности MON $ TRANSACTIONS, для определения долгосрочных транзакций.

+0

Мне нужно удалить все записи мусора из базы данных. Пожалуйста, предоставьте мне любой способ.? – Vikas

+0

Запустите так называемый «Sweep», например. инструмент командной строки gfix. Смещение в основном посещает все записи в базе данных и удаляет устаревшие версии записей, если никакая параллельная транзакция не заинтересована в «просмотре» версии записи. Обход обычно наиболее эффективен, пока нет активных (длительных) транзакций. Другой вариант - воссоздать базу данных с нуля, выполнив цикл резервного копирования/восстановления через, например, инструмент командной строки gbak. – tsteinmaurer

 Смежные вопросы

  • Нет связанных вопросов^_^