Переход на Firebird 3.0. Многопользовательский режим
SYSDBA (обсуждение | вклад) |
Alex (обсуждение | вклад) |
||
| (не показаны 14 промежуточных версий 1 участника) | |||
| Строка 1: | Строка 1: | ||
| − | Зачем переходить? При работе с базами данных, размер которых составляет десятки Гб и более, основное узкое место в производительности сервера -- это операции ввода/вывода с дисковой подсистемой. Firebird использует диск для размещения базы данных и для записи временных файлов сортировки. Очевидное решение -- задействовать оперативную память. Но, в случае с Firebird 2.5 возникает дилемма: SuperServer позволяет использовать общий на все коннекты кэш страниц, однако, при этом выполнение запросов будет происходить в рамках одной нити и только на одном процессоре/ядре, сколько бы их ни было установлено в системе. ClassicServer позволяет распараллелить коннекты на разные процессоры, но при этом отсутствует общий кэш данных. | + | Зачем переходить? При работе с базами данных, размер которых составляет десятки Гб и более, основное узкое место в производительности сервера -- это операции ввода/вывода с дисковой подсистемой. [[Firebird]] использует диск для размещения базы данных и для записи временных файлов сортировки. Очевидное решение -- задействовать оперативную память. Но, в случае с Firebird 2.5 возникает дилемма: SuperServer позволяет использовать общий на все коннекты кэш страниц, однако, при этом выполнение запросов будет происходить в рамках одной нити и только на одном процессоре/ядре, сколько бы их ни было установлено в системе. ClassicServer позволяет распараллелить коннекты на разные процессоры, но при этом отсутствует общий кэш данных. |
| − | В Firebird 3 | + | В 64-х разрядном Firebird 3 данные ограничения устранены. Теперь можно добиться значительного увеличения быстродействия (в нашей практике в 5-10 раз) за счет выделения кэша, сопоставимого с размером файла базы данных. |
Реальный случай, на примере одного из наших клиентов. Размер файла базы данных составляет 60 Гб. Сервер базы данных содержит два 10-ти ядерных процессора и 128 Гб оперативной памяти. Мы установили следующее распределение оперативной памяти: | Реальный случай, на примере одного из наших клиентов. Размер файла базы данных составляет 60 Гб. Сервер базы данных содержит два 10-ти ядерных процессора и 128 Гб оперативной памяти. Мы установили следующее распределение оперативной памяти: | ||
| Строка 17: | Строка 17: | ||
* Forced Writes = ON | * Forced Writes = ON | ||
| − | + | Были установлены следующие параметры в файле '''firebird.conf''': | |
DatabaseGrowthIncrement = 1024M | DatabaseGrowthIncrement = 1024M | ||
| Строка 47: | Строка 47: | ||
Устанавливаем режим безопасности максимально приближенный к тому, как было в версии 2.5, чтобы не нарушить работу всех существующих рабочих мест. | Устанавливаем режим безопасности максимально приближенный к тому, как было в версии 2.5, чтобы не нарушить работу всех существующих рабочих мест. | ||
| + | ===Если файл базы данных больше размера оперативной памяти=== | ||
| + | В приведенном выше примере размер файла базы данных меньше размера оперативной памяти компьютера и распределение памяти между кэшем страниц и буфером сортировки не вызывает особых проблем. Но, как распределить память, если она меньше файла базы данных? Здесь потребуется эксперемент. Начать мы рекомендуем со следующих параметров: | ||
| + | * 8-16 Гб под операционную систему, программы, сервисы, файловый кэш ОС | ||
| + | * 2/3 оставшейся памяти под кэш страниц базы данных | ||
| + | * 1/3 -- под буфер сортировки | ||
| + | Далее, наблюдаем за работающей системой: | ||
| + | * Если Windows Performance Monitor показывает [http://serverfault.com/questions/399855/how-much-swap-is-being-used-on-windows значительное использование] файла своппинга, следует увеличить количество памяти под нужды операционной системы. | ||
| + | * Если в папке для временных файлов (операционной системы или той, что прописана в firebird.conf) появляются файлы сортировки (и, особенно, если их размер не 0), то следует увеличить размер буфера сортировки за счет уменьшения кэша страниц базы данных. | ||
| + | ==Порядок перехода на Firebird 3== | ||
| + | Схема перехода на третью версию сервера Firebird: | ||
| + | http://gsbelarus.com/gs/images/gs/2017/fb3_2.png | ||
| + | ===Удаление сервера Firebird 2.5=== | ||
| + | Перед установкой новейшей версии сервера Firebird 3 следует остановить службу Firebird 2.5. Конечно, если у вас нет необходимости в одновременном использовании двух разных версий сервера. Такой случай подробно рассматривается ниже. | ||
| + | Если вы устанавливали сервер с помощью инстолятора, то остановить службу и деинсталировать сервер можно через панель управления Windows. | ||
| − | + | Если сервер Firebird 2.5 был установлен вручную, следует выполнить следующую последовательность действий: | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | Если | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
# Открываем командную строку (Пуск - Выполнить - cmd) | # Открываем командную строку (Пуск - Выполнить - cmd) | ||
| − | # Переходим в | + | # Переходим в папку сервера. В зависимости от места установки это может быть '''c:\program files\firebird'''. Команды: |
## c: | ## c: | ||
## cd \program files | ## cd \program files | ||
| Строка 99: | Строка 83: | ||
# Выполняем команду: instsvc remove | # Выполняем команду: instsvc remove | ||
# Выполняем команду: instreg remove | # Выполняем команду: instreg remove | ||
| − | # Выходим из | + | # Выходим из папки сервера: cd .. |
| − | # | + | # Удаляем папку |
| − | + | ===Установка и настройка сервера Firebird 3=== | |
| − | + | ||
| − | + | Для установки вы можете скачать инстолятор с официального [http://firebirdsql.org сайта] или воспользоваться архивом с [http://web.firebirdsql.org/download/snapshot_builds/win/3.0/ текущей ночной сборкой]. Мы рекомендуем второй способ, так как официальный инстолятор обновляется не часто -- раз в 4-6 месяцев. Следует использовать 64-ти разрядную версию сервера. | |
| − | # Распаковываем архив в новый каталог, например, '''c:\program files\ | + | |
| − | # Переходим в этот каталог | + | # Скачиваем архив |
| − | # | + | # Распаковываем архив в новый каталог, например, '''c:\program files\fb3''' |
| − | ## Для | + | # Проверяем, чтобы к каталогу Firebird был полный доступ |
| − | # | + | # Переходим в этот каталог |
| − | # Выполняем команду: gsec - | + | # Скачиваем с сайта gsbelarus.com библиотеку [http://gsbelarus.com/pw/downloads/gedemin-platform/gudf.dll-64-bit/ gudf.dll] и выкладываем ее в папку UDF сервера |
| + | # Настраиваем параметры сервера в файле '''firebird.conf''' | ||
| + | # Переходим в режим командной строки (cmd). Для выполнения описанных инструкций интерпретатор командной строки '''cmd.exe''' должен быть запущен от имени администратора. | ||
| + | # Выполняем команду: instsvc install -a | ||
| + | # Выполняем команду: instreg install | ||
| + | # Выполняем команду: gsec -user sysdba -passw 1 -add SYSDBA -pw masterkey | ||
| + | # Если при выполнении предыдущей команды возникла ошибка, то выполняем: gsec -user sysdba -passw 1 -modify SYSDBA -pw masterkey | ||
# Выполняем команду: instsvc start | # Выполняем команду: instsvc start | ||
| − | |||
| − | + | === Запуск программы === | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | = | + | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | == Запуск программы == | + | |
# Войдите в программу под учетной записью Administrator. (Может появиться сообщение, что сервер не настроен для работы с платформой Гедымин и предложение выполнить необходимую настройку. Следует согласиться и ввести логин SYSDBA и пароль masterkey) | # Войдите в программу под учетной записью Administrator. (Может появиться сообщение, что сервер не настроен для работы с платформой Гедымин и предложение выполнить необходимую настройку. Следует согласиться и ввести логин SYSDBA и пароль masterkey) | ||
# Дождитесь окончания процесса изменения структуры базы данных. | # Дождитесь окончания процесса изменения структуры базы данных. | ||
# В Исследователе перейдите в раздел Сервис - Администратор. | # В Исследователе перейдите в раздел Сервис - Администратор. | ||
| − | # Откройте окно Пользователи и на панели инструментов запустите команду Пересоздать учетные записи | + | # Откройте окно '''Пользователи''' и на панели инструментов запустите команду '''Пересоздать учетные записи'''. |
| + | # Тщательно проверьте все режимы работы программы. | ||
| + | |||
| + | ===Одновременная работа двух версий сервера Firebird=== | ||
| + | |||
| + | # В файле firebird.conf присвойте параметру RemoteServicePort значение, отличное от номера порта по-умолчанию (3050). Например, RemoteServicePort = 3054 | ||
| + | # При выполнении команд instsvc и instreg укажите с помощью параметра -n имя сервиса. Например, instsvc i -a -n fb3 | ||
| + | # В строке подключения к базе данных укажите номер порта. Например, dbserver/3054:d:\bases\mybase.fdb | ||
| + | |||
| + | ===Изменение размера буфера для файла базы данных=== | ||
| + | |||
| + | Размер кэша задается при восстановлении базы данных из архива. В последствии его можно изменить с помощью параметра '''-buffers n''' утилиты командной строки '''[[gfix]]''', которая находится в папке с выполняемыми файлами сервера Firebird. Пример вызова команды: | ||
| + | |||
| + | gfix database_name -user SYSDBA -password masterkey -buffers 2000 | ||
[[Category:Школа системного администратора]] | [[Category:Школа системного администратора]] | ||
[[Category:Firebird]] | [[Category:Firebird]] | ||
| + | |||
| + | __NOTOC__ | ||
Текущая версия на 16:23, 4 августа 2021
Зачем переходить? При работе с базами данных, размер которых составляет десятки Гб и более, основное узкое место в производительности сервера -- это операции ввода/вывода с дисковой подсистемой. Firebird использует диск для размещения базы данных и для записи временных файлов сортировки. Очевидное решение -- задействовать оперативную память. Но, в случае с Firebird 2.5 возникает дилемма: SuperServer позволяет использовать общий на все коннекты кэш страниц, однако, при этом выполнение запросов будет происходить в рамках одной нити и только на одном процессоре/ядре, сколько бы их ни было установлено в системе. ClassicServer позволяет распараллелить коннекты на разные процессоры, но при этом отсутствует общий кэш данных.
В 64-х разрядном Firebird 3 данные ограничения устранены. Теперь можно добиться значительного увеличения быстродействия (в нашей практике в 5-10 раз) за счет выделения кэша, сопоставимого с размером файла базы данных.
Реальный случай, на примере одного из наших клиентов. Размер файла базы данных составляет 60 Гб. Сервер базы данных содержит два 10-ти ядерных процессора и 128 Гб оперативной памяти. Мы установили следующее распределение оперативной памяти:
- 32 Гб для оперативной системы, выполняющихся процессов, файлового кэша оперативной системы
- 32 Гб под буфер сортировки сервера Firebird
- 64 Гб под кэш данных сервера Firebird
Использовались следующие параметры:
- размер страницы 8192 байт
- количество страниц в буфере 8 388 608
- Forced Writes = ON
Были установлены следующие параметры в файле firebird.conf:
DatabaseGrowthIncrement = 1024M
Чтобы не дергать лишний раз файловую систему при увеличении размера базы данных.
FileSystemCacheThreshold = 10M
Разрешим операционной системе использовать свой файловый кэш для нашей базы данных. Число должно быть больше, чем размер буфера в страницах.
FileSystemCacheSize = 20
Разрешим ОС использовать до 20% оперативной памяти под файловый кэш.
TempBlockSize = 2M
Блоки памяти под сортировку будут увеличиваться на такую величину.
TempCacheLimit = 32768M
32 Гб выделяем под буфер сортировки в оперативной памяти.
AuthServer = Legacy_Auth AuthClient = Legacy_Auth UserManager = Legacy_UserManager WireCrypt = Disabled WireCompression = false
Устанавливаем режим безопасности максимально приближенный к тому, как было в версии 2.5, чтобы не нарушить работу всех существующих рабочих мест.
[править] Если файл базы данных больше размера оперативной памяти
В приведенном выше примере размер файла базы данных меньше размера оперативной памяти компьютера и распределение памяти между кэшем страниц и буфером сортировки не вызывает особых проблем. Но, как распределить память, если она меньше файла базы данных? Здесь потребуется эксперемент. Начать мы рекомендуем со следующих параметров:
- 8-16 Гб под операционную систему, программы, сервисы, файловый кэш ОС
- 2/3 оставшейся памяти под кэш страниц базы данных
- 1/3 -- под буфер сортировки
Далее, наблюдаем за работающей системой:
- Если Windows Performance Monitor показывает значительное использование файла своппинга, следует увеличить количество памяти под нужды операционной системы.
- Если в папке для временных файлов (операционной системы или той, что прописана в firebird.conf) появляются файлы сортировки (и, особенно, если их размер не 0), то следует увеличить размер буфера сортировки за счет уменьшения кэша страниц базы данных.
[править] Порядок перехода на Firebird 3
Схема перехода на третью версию сервера Firebird:
[править] Удаление сервера Firebird 2.5
Перед установкой новейшей версии сервера Firebird 3 следует остановить службу Firebird 2.5. Конечно, если у вас нет необходимости в одновременном использовании двух разных версий сервера. Такой случай подробно рассматривается ниже.
Если вы устанавливали сервер с помощью инстолятора, то остановить службу и деинсталировать сервер можно через панель управления Windows.
Если сервер Firebird 2.5 был установлен вручную, следует выполнить следующую последовательность действий:
- Открываем командную строку (Пуск - Выполнить - cmd)
- Переходим в папку сервера. В зависимости от места установки это может быть c:\program files\firebird. Команды:
- c:
- cd \program files
- cd firebird
- Выполняем команду: instsvc stop
- Выполняем команду: instsvc remove
- Выполняем команду: instreg remove
- Выходим из папки сервера: cd ..
- Удаляем папку
[править] Установка и настройка сервера Firebird 3
Для установки вы можете скачать инстолятор с официального сайта или воспользоваться архивом с текущей ночной сборкой. Мы рекомендуем второй способ, так как официальный инстолятор обновляется не часто -- раз в 4-6 месяцев. Следует использовать 64-ти разрядную версию сервера.
- Скачиваем архив
- Распаковываем архив в новый каталог, например, c:\program files\fb3
- Проверяем, чтобы к каталогу Firebird был полный доступ
- Переходим в этот каталог
- Скачиваем с сайта gsbelarus.com библиотеку gudf.dll и выкладываем ее в папку UDF сервера
- Настраиваем параметры сервера в файле firebird.conf
- Переходим в режим командной строки (cmd). Для выполнения описанных инструкций интерпретатор командной строки cmd.exe должен быть запущен от имени администратора.
- Выполняем команду: instsvc install -a
- Выполняем команду: instreg install
- Выполняем команду: gsec -user sysdba -passw 1 -add SYSDBA -pw masterkey
- Если при выполнении предыдущей команды возникла ошибка, то выполняем: gsec -user sysdba -passw 1 -modify SYSDBA -pw masterkey
- Выполняем команду: instsvc start
[править] Запуск программы
- Войдите в программу под учетной записью Administrator. (Может появиться сообщение, что сервер не настроен для работы с платформой Гедымин и предложение выполнить необходимую настройку. Следует согласиться и ввести логин SYSDBA и пароль masterkey)
- Дождитесь окончания процесса изменения структуры базы данных.
- В Исследователе перейдите в раздел Сервис - Администратор.
- Откройте окно Пользователи и на панели инструментов запустите команду Пересоздать учетные записи.
- Тщательно проверьте все режимы работы программы.
[править] Одновременная работа двух версий сервера Firebird
- В файле firebird.conf присвойте параметру RemoteServicePort значение, отличное от номера порта по-умолчанию (3050). Например, RemoteServicePort = 3054
- При выполнении команд instsvc и instreg укажите с помощью параметра -n имя сервиса. Например, instsvc i -a -n fb3
- В строке подключения к базе данных укажите номер порта. Например, dbserver/3054:d:\bases\mybase.fdb
[править] Изменение размера буфера для файла базы данных
Размер кэша задается при восстановлении базы данных из архива. В последствии его можно изменить с помощью параметра -buffers n утилиты командной строки gfix, которая находится в папке с выполняемыми файлами сервера Firebird. Пример вызова команды:
gfix database_name -user SYSDBA -password masterkey -buffers 2000