В некотором смысле эта заметка имеет не совсем прямое отношение к IB. Часть из последующих утверждений вы можете применить и к своему персональному компьютеру, чтобы повысить скорость его работы.
Здесь не будут рассматриваться особенности SCSI-винчестеров или RAID. Либо пойдет речь о повышении быстродействия вообще, либо о повышении скорости работы с IDE-дисками. Разгон компьютера тоже не будет рассматриваться, т.к. это скорее способ повышения нестабильности системы, и годится разве что для игроманов.
Отступление по SCSI: проблемой для SCSI винчестеров и IB является неверное поведение SCSI-драйвера в Windows NT. Заключается оно в том, что когда NT производит операцию FLUSH (выгрузка кэша на диск), к SCSI-винчестеру не может производиться других обращений. Выглядит это так - при работе с IB компьютер периодически "замирает" - индикатор обращений к HDD мигает, хотя загрузка процессора практически на нуле. Продолжаться это может от от 1 до 20 минут (максимально зарегистрированное время). Исправить проблему можно только уменьшением размера кэша IB - параметр DATABASE_CACHE_PAGES в файле IBCONFIG. На других операционных системах подобная проблема, похоже, не возникает.
Второе отступление по SCSI: при наличии на одной шине SCSI быстрых и медленных устройств, совокупная производительность будет равна производительности самого медленного устройства. Поэтому следует избегать подключения к шине, на которой находится RAID, CD-ROM-ов и ленточных устройств. Для этих целей вам лучше приобрести отдельный SCSI-контроллер.
Отступление на тему разгона: действительно, разгон процессора может привести к периодическому появлению "синего экрана" под Windows NT, или к падению 95/98, что еще хуже. Даже если разогнать процессор на 20%, то для РСУБД это вряд ли будет иметь смысл - большинство операций РСУБД производит с диском. А дисковая подсистема работает намного медленнее, чем процессор и память. В итоге разгон компьютера даст общее повышение производительности системы на 1-2%. В то же время, любой из приведенных далее пунктов может дать как минимум 1.5-2 кратное повышение скорости работы системы в целом.
Начнем с операционной системы. Windows95/98 - наихудший выбор в качестве сервера для IB, поскольку эти операционные системы очень плохо работают с виртуальной памятью и многозадачными приложениями. Для IB нет разницы между Windows NT Server и Workstation, поэтому если компьютер не слишком мощный, лучше поставить Windows NT Workstation. Unix - тоже неплохой выбор.
Скорость работы IDE винчестеров можно существенно повысить (в 1.5 -
3 раза) путем установки драйвера BusMaster. Однако делать это рекомендуется
только в случае, когда материнская плата содержит чипсет, поддерживающий
работу в режиме BusMaster. Без драйвера же увеличения скорости работы с
винчестером не будет, даже если купить винчестер споддержкой UltraATA/66.
Для Windows98 устанавливать драйвер не нужно, т.к. он уже встроен в систему
- достаточно выставить в свойствах контроллера HDD чекбокс "use DMA".
Подробнее по BusMaster см. http://www.ixbt.ru,
FAQ по BusMaster.
Замечание: не рекомендуется устанавливать драйвер BusMaster,
если вы не уверены, что ваша материнская плата поддерживает этот режим
- вы можете в результате получить неработающую систему.
Теперь рассмотрим дисковые операции, производимые IB, кроме работы с файлом базы данных:
TMP_DIRECTORY 100000000
"D:\TEMP"
TMP_DIRECTORY 200000000
"E:\TEMP"
TMP_DIRECTORY 100000000
"F:\TEMP"
В данном случае IB будет использовать под временные файлы 100 мегабайт на диске D. Если на D кончится место, то сверх того 200 мегабайт на диске E. И если уж и этого не хватит, то еще 100 мегабайт на диске F.
Замечание: обратите на то, что имена каталогов для временных файлов указаны в двойных кавычках. Если не указать кавычки, то параметр tmp_directory игнорируется.
Замечание: при редактировании настроек IB через IB tray icon (Properties) параметр TMP_DIRECTORY удаляется из IBCONFIG. Поэтому после добавления параметров TMP_DIRECTORY редактируйте IBCONFIG только вручную, например в Notepad.
Разумеется, если расположить временные файлы на отдельном винчестере (например на таком, как для виртуальной памяти), то создание индексов и запросы с сортировкой будут выполняться намного быстрее, особенно при высокой активности одновременно работающих пользователей.
Примечание: подробнее по конфигурированию временных файлов см. Operations Guide, глава Server Configuration, раздел Temporary file management (стр. 92).
Для любой файловой системы лучше выбирать размер страницы базы данных 4К или 8К. По умолчанию InterBase создает БД с размером страницы 1К, что весьма мало, и при больших объемах данных будут проблемы не только со скоростью считывания и обновления, но и с глубиной индексов.
На NTFS лучше всего выбрать размер страницы 4К, предварительно отформатировав логический диск с размером блока также 4К. Не рекомендуется хранить на этом же логическом диске другие файлы, кроме базы данных.
Для FAT имеет смысл сделать размер страницы сразу 8К.