Причины повреждения базы данных Firebird
Я использую несколько разных версий Firebird (2.0, 2.1) на нескольких серверах Windows начального уровня с сильно изменяющимся оборудованием. Единственное совпадение между ними заключается в том, что они запускают одно и то же домашнее приложение с одинаковой структурой базы данных.
В последнее время я наблюдаю значительное замедление на нескольких серверах. Оказывается, что база данных повреждена, поэтому каждый раз, когда она ломается, я исправляю, резервирую и восстанавливаю базу данных, и в течение некоторого времени (1-2 недели) все в порядке, а затем повторяется снова. К счастью, я не видел потерю или повреждение данных... пока. Дело в том, что каждое такое время простоя приводит к снижению производительности, и часто для меня это может быть причиной, поскольку некоторые базы данных находятся в удаленных местах.
Я пытался выяснить, что является причиной коррупции, но я не смог. Тот факт, что он работает на другом оборудовании, указывает на то, что это не должно быть аппаратной проблемой.
Если мы исключим проблемы с оборудованием, у меня будет плохое предчувствие, что это ошибка в Firebird, так как я не делаю ничего необычного с помощью SQL. Есть ли у вас идеи, как выяснить, что именно является причиной коррупции, и, надеюсь, решить проблему?
[править] Согласно первому ответу: я получаю несколько разных проблем в firebird.log:
INET/inet_error: read errno = 10054
INET/inet_error: select in packet_receive errno = 10038
Relation has 12 orphan backversions (5 in use) in table LIMITAI (139)
Index 1 is corrupt on page 61700 level 1. File: ..\..\..\src\jrd\validation.cpp, line: 1659 (repeats for multiple pages and index numbers)
Page 50801 is an orphan (repeats for multiple pages)
2 ответа
Проверьте firebird.log. Он может содержать важную информацию о том, что происходит не так.
Проверьте, как ваше приложение обрабатывает транзакции. Firebird не любит длительные транзакции. Это приводит к замедлению работы и, в конечном итоге (в зависимости от нагрузки и т. Д.), Сбоям сервера.
Для проблем с производительностью я рекомендую Sinática Monitor.
НТН
Проверьте ваши серверы по следующему списку:
- Установлена последняя версия Firebird
- Режим принудительной записи для базы данных включен
- NTFS файловая система используется
- Система имеет ИБП (если нет - отключите кэш записи HDD)
- Аппаратные средства надежны (система не зависла из-за плохой памяти, нет плохих секторов и т. Д.)
- Рекомендуется использовать RAID с защищенным кешем памяти
Следуя этим простым правилам, у нас есть серверы, которые работают годами без каких-либо помех.