
- •Серверы корпоративных баз данных
- •Проблемы выбора аппаратно-программной платформы и конфигурации сервера базы данных
- •Проблемы оценки конфигурации системы
- •Основы конфигурирования серверов баз данных
- •Характеристики рабочей нагрузки (тесты tpc)
- •Что такое tpc
- •Выбор конфигурации сервера субд
- •Предпосылки выбора
- •Выбор вычислительной модели
- •Мониторы обработки транзакций
- •Гибкость доступа к данным
- •Вопросы производительности
- •Подсистема основной памяти
- •Выбор размера буфера ввода/вывода субд
- •Дополнительные требования к памяти
- •Процессоры
- •Емкость и пропускная способность дисковой памяти
- •Файловые системы по сравнению с "чистыми" (неструктурированными) дисками
- •Метаданные субд
- •Распределение данных
- •Использование ресурсов ввода/вывода
- •Большие объекты данных
- •Конфигурация клиент/сервер и региональные сети
- •Трафик символьного терминала
- •Заключительные рекомендации по конфигурированию сетевого ввода/вывода
- •Обеспечение резервного копирования
- •Когда необходимо выполнять резервное копирование?
- •Резервное копирование в режиме online
- •Продолжительность резервного копирования
- •Использование зеркалирования дисков для облегчения резервного копирования
- •Частота резервного копирования
- •Утилиты резервного копирования
- •Пример 1
- •Пример 2
- •Предостережения
- •Структурные конфликты и способы их минимизации
- •Конфликты по данным, остановы конвейера и реализация механизма обходов
- •Конфликты по данным, приводящие к приостановке конвейера
- •Методика планирования компилятора для устранения конфликтов по данным
- •Сокращение потерь на выполнение команд перехода и минимизация конфликтов по управлению
- •Снижение потерь на выполнение команд условного перехода
- •Проблемы реализации точного прерывания в конвейере
- •Параллелизм уровня команд: зависимости и конфликты по данным
- •Основы планирования загрузки конвейера и разворачивание циклов
- •Дальнейшее уменьшение приостановок по управлению: буфера целевых адресов переходов
- •Одновременная выдача нескольких команд для выполнения и динамическое планирование
- •Архитектура машин с длинным командным словом
- •Аппаратные средства поддержки большой степени распараллеливания
- •Выполнение по предположению (speculation)
Использование ресурсов ввода/вывода
При разработке подсистемы ввода/вывода должно быть уделено внимание не только максимальной емкости ее компонентов, но также уровню использования (загруженности) каждого ресурса. Большинство параметров, используемых для описания емкости ресурсов, так или иначе связаны с пропускной способностью. Например, шина SCSI характеризуется пропускной способностью в 10 Мбайт/с. Это скорость пересылки битов по шине. Такой параметр не дает информации о том, насколько занята сама шина и, следовательно, не дает также информации о том, сколько времени будет потрачено на обслуживание данного запроса. Приводить в качестве параметра ресурса рейтинг максимальной пропускной способности - все равно, что говорить, что предел скорости автомагистрали равен 130 км в час: если въезды и съезды с нее так перегружены, что это занимает длительное время, то общая скорость вероятно будет намного ниже установленного предела.
Точно такие же принципы применимы к различным периферийным устройствам и периферийным шинам. В частности, это справедливо и для шин SCSI. Экспериментальные результаты показывают, что если должна поддерживаться пиковая производительность, то степень загруженности шины SCSI должна поддерживаться на уровне 40%. Аналогичным образом, степень загрузки дисков должна поддерживаться на уровне 60%. Диски могут выдерживать значительно большую степень загрузки чем шина SCSI, поскольку во встроенных дисковых контроллерах имеется интеллект и средства буферизации. Это позволяет координировать работу буферов дорожек, каретки диска и очереди запросов такими способами, которые не возможны на достаточно примитивных главных адаптерах шины SCSI.
Обычно невозможно оценить, какова будет средняя степень загрузки дисков или шины SCSI до тех пор, пока система не начнет работать. В результате, достаточно приемлемой оказывается такая конфигурация, которая позволяет распределить часто используемые данные и индексы по стольким дискам и шинам SCSI, сколько позволяют бюджет и технические ограничения. Для данных, доступ к которым происходит не очень часто, например, только во время ночной пакетной обработки (или других полуархивных данных подобных транзакциям годовой давности), можно рекомендовать как можно более плотную упаковку на накопителях.
Как только система начнет работать, можно измерить действительную степень загрузки дисков и соответствующим образом перераспределить данные. Как указывалось выше, перераспределение данных должно выполняться с учетом других параметров доступа к диску: везде надо поддерживать баланс.
В контексте СУБД имеется по крайней мере два механизма для распределения данных по дисковым накопителям. Для эффективного распределения доступа к данным все известные СУБД имеют возможность осуществлять конкатенацию нескольких дисковых накопителей или файлов UNIX. (В СУБД Ingres, например, реализовано истинное расщепление дисков, ограниченное стандартным размером чередования 16 Кбайт). Похожие возможности (помимо горячего резервирования и расщепления дисков) предлагают и специальные программные средства типа Online:DiskSuite. Если работа с таблицей ограничивается возможностями подсистемы ввода/вывода, следует исследовать запросы, которые вызывают ввод/вывод. Если эти запросы реализуют произвольный доступ к дискам, например, если многие пользователи независимо запрашивают индивидуальные записи, то имеющиеся возможности конкатенации дисков в СУБД полностью адекватны распределению нагрузки доступа по множеству дисков (при достаточно полном заполнении пространства таблицы). Если обращения по своей природе последовательны, например, если один или несколько пользователей должны просматривать каждую строку таблицы, то больше подходит механизм расщепления дисков.
Основное преимущество использования расщепления с помощью средств, подобных Online:DiskSuite, заключается в том, что задача распределения обращений к данным становится гораздо более простой для администратора базы данных. При действительном расщеплении эта задача тривиальна и почти всегда дает оптимальные результаты. Часто это не тот случай, когда логически разделение данных по пространствам таблицы использует внутренние механизмы СУБД. Задача заключается в том, чтобы распределить тяжело используемые таблицы по отдельным дисковым ресурсам, однако часто невозможно принять решение относительно конфликтующих комбинаций запросов при обращениях к этим таблицам, приводящих к неровной нагрузке. При использовании DiskSuite степень загруженности дисков сама будет стремиться к естественному уровню.
Обычно СУБД делят таблицу на несколько относительно больших сегментов и размещают данные равномерно по этим сегментам. Главное отличие между конкатенацией СУБД и функцией расщепления Online:DiskSuite заключается в размещении смежных данных. Когда диски конкатенируются друг с другом, последовательное сканирование представляет собой тяжелую нагрузку для каждого из дисков, но эта нагрузка носит последовательный характер (только один диск участвует в обслуживании запроса). Истинное расщепление дисков, реализованное в Online:DiskSuite, осуществляет деление данных по гораздо более мелким границам, позволяя тем самым всем дискам участвовать в обслуживании даже сравнительно небольшого запроса. Как результат, при использовании расщепления загрузка дисков при выполнении последовательного доступа существенно уменьшается. К архивным и журнальным файлам всегда осуществляется последовательный доступ и они являются хорошими кандидатами для расщепления, если реализация обращений к таким файлам ограничивает общую производительность системы.
По мере продолжения роста размеров и важности баз данных, процедуры резервного копирования, которые выполняются с блокировкой доступа к СУБД, становятся практически неприемлемыми. При реализации резервного копирования в оперативном режиме (режиме online) могут возникнуть достаточно сложные вопросы по конфигурированию соответствующих средств, поскольку резервное копирование больших томов данных, находящихся в базах данных, приводит к очень интенсивной работе подсистемы ввода/вывода. Резервное копирование в оперативном режиме часто вызывает очень высокий уровень загрузки дисков и шины SCSI, что приводит к низкой производительности приложений. Следует уделять особое внимание конфигурациям всех устройств, вовлеченных в процессы резервного копирования.
Рекомендации:
-
После начальной инсталляции необходимо наблюдать за работой системы и переразмещать данные до тех пор, пока каждый дисковый накопитель не будет загружен менее, чем на 60%.
-
Для распределения последовательных дисковых обращений по множеству дисков рекомендуется использовать программные продукты типа Online:DiskSuite.
-
Когда типовой доступ к диску носит характер произвольного обращения, для более равномерного распределения обращений к данным и уменьшения степени загрузки дисков следует использовать встроенную в СУБД функцию кокатенации.
-
Особое внимание следует уделять влиянию резервного копирования в режиме online на работу системы, особенно на загрузку шины SCSI.
Сетевая подсистема ввода/вывода
Соображения по использованию режима клиент/сервер
Если СУБД работает в режиме клиент/сервер, то сеть или сети, соединяющие клиентов с сервером должны быть адекватно оборудованы. К счастью, большинство клиентов работают с вполне определенными фрагментами данных: индивидуальными счетами, единицами хранящихся на складе изделий, историей индивидуальных счетов и т.п. При этих обстоятельствах скорость сети, соединяющей клиентов и серверы редко оказывается проблемой. Отдельной сети Ethernet или Token Ring обычно достаточно для обслуживания 100-200 клиентов. На одном из тестов Sun конфигурация клиент/сервер, поддерживающая более 250 пользователей Oracle*Financial, генерировала трафик примерно 200 Кбайт/с между фронтальной системой и сервером базы данных. По очевидным причинам стоит более плотно наблюдать за загрузкой сети, особенно когда число клиентов превышает примерно 20 на один сегмент Ethernet. Сети Token Ring могут поддерживать несколько большую нагрузку, чем сети Ethernet, благодаря своим превосходным характеристикам по устойчивости к деградации под нагрузкой.
Даже если с пропускной способностью сети не возникает никаких вопросов, проблемы задержки часто приводят к тому, что более удобной и полезной оказывается установка отдельной, выделенной сети между фронтальной системой и сервером СУБД. В существующих в настоящее время конфигурациях серверов почти всегда используется большое количество главных адаптеров шины SCSI; поскольку как правило эти адаптеры спарены с портами Ethernet, обеспечение выделенного канала Ethernet между клиентом и сервером выполняется простым их подключением к дешевому хабу с помощью кабельных витых пар. Стоимость 4-портового хаба не превышает $250, поэтому причины, по которым не стоило бы обеспечить такое выделенное соединение, практически отсутствуют.