Базы данных на серверах фирмы Sun
Оценить
(0 голоса)
Эффективное планирование процессов может привести к существенным различиям в производительности СУБД особенно для Oracle и DB2, которые используют двухпроцессную архитектуру (она более подробно описана в разделе "Двухпроцессные архитектуры" главы 5). В настоящем разделе обсуждаются функциональные возможности, предлагаемые Solaris для повышения эффективности планирования приложений баз данных. Управление вытеснением Введено для уменьшения конкуренции, связанной с защелками (latches) баз данных. Процессы баз данных используют защелки, или взаимоисключающие блокировки (mutexes), специфичные для конкретной СУБД, для перехода в последовательный режим доступа (процессор приостанавливает исполнение команд, пока не будет введена определенная команда) к критическим секциям программного кода или структурам данных. Каждому процессу, когда он планируется для…
Оценить
(0 голоса)
Управление вытеснением требует от поставщиков СУБД модификаций их программ. Альтернативный способ уменьшения конфликтов защелкивания - применение соответствующей диспетчерской таблицы для класса планирования TS (TimeShare-с разделением времени) операционной системы Solaris, которая использует разные таблицы TS на платформах среднего уровня и на высокопроизводительных платформах. Сами по себе модификации диспетчерских таблиц не оптимизируют операционную систему; их скорее следует рассматривать как эффективные стандартные возможности Solaris, полезные приложениям баз данных. Диспетчерская таблица и ее влияние на производительность баз данных обсуждаются в разделе "Классы планирования операционной системы Solaris" главы 15. Оптимизация ввода/вывода Solaris включает целый набор расширений ввода/вывода, непосредственно приносящих пользу базам данных. Некоторые из наиболее…
Оценить
(0 голоса)
Многие виды операций с базами данных предусматривают чтение и запись в таблицы и журнал базы данных на диске. Системные вызовы pread и pwrite были введены в операционной системе Solaris для того, чтобы устранить необходимость в отдельном системном вызове lseek для позиционирования указателя файла перед системным вызовом read или write. Оба системных вызова, pread и pwrite, принимают в качестве дополнительного параметра смещение в пределах файла. Таким образом, pread считывает фиксированное количество байтов из заданного дескриптором файла, стартуя с указанным смещением в массиве байтов. Аналогично, pwrite записывает фиксированное количество байтов в заданный дескриптором файл, стартуя с указанным смещением в массиве байтов. Исключение…
Оценить
(1 голос)
В том случае, когда дисковая операция ввода/вывода выполняется с использованием системных вызовов read, pread, write и pwrite, поток выполнения останавливается, ожидая перед своим продолжением, пока очередная операция ввода/вывода не будет завершена. Следовательно, такие вызовы называются блокирующими (blocking) системными вызовами. Чтобы позволять другой работе быть выполненной за то же время, процесс освобождает ЦП на период ожидания завершения операции ввода/вывода. Ввод/вывод такого типа известен как синхронный (synchronous I/O). Альтернативной формой ввода/вывода, используемой как многопоточными, так и базирующимися на процессах базами данных, является асинхронный ввод/вывод (asynchronous I/O). Асинхронные вызовы из библиотеки ввода/вывода, aioread и aiowrite, возвращают управление вызывающей программе немедленно, без блокирования, даже…
Оценить
(0 голоса)
Широкое развертывание файлов баз данных в UFS (Unix File System - файловой системе Unix) привело к возникновению проблем с производительностью. Кэш страницы файловой системы Solaris добавляет еще один уровень кэширования поверх буферного кэша базы данных, что часто отрицательно сказывается на производительности особенно больших пакетных заданий, когда кэширование сулит только небольшие преимущества или вообще отсутствие таковых. Размещение файлов базы данных на низкоуровневых устройствах почти всегда дает лучший, а иногда значительно лучший результат с точки зрения производительности, чем размещение их в файлах UFS. Чтобы устранять узкое место кэша, новая функциональная возможность, известная под названием Direct I/O (прямой ввод/вывод), была введена в Solaris…
Оценить
(0 голоса)
Прямой ввод/вывод в том виде, в котором он был первоначально реализован, не всегда приводил к повышению производительности, и в результате был создан более обширный набор оптимизаций для того, чтобы приблизить производительность файлов базы данных в файловой системе UFS к уровню производительности, достигаемому на низкоуровневых устройствах. Усовершенствования, полученные в результате реализации этого проекта, стали доступными в релизе 1/01 операционной системы Solaris 8. Одно из наиболее важных изменений, включенных в эту новую реализацию прямого ввода/вывода, была отмена блокировки единственной операции записи. Поскольку такая блокировка может иметь существенное значение для производительности, то этот вопрос заслуживает некоторого объяснения. По соображениям целостности данных стандарт POSIX…
Оценить
(0 голоса)
Далее приведено еще несколько решений из множества других оптимизаций ввода/вывода, реализованных в Solaris. Протоколирование файловой системы UFS В литературе вместо термина протоколирование вы можете встретить термин журналирование. Проверка непротиворечивости большой файловой системы может занять немало времени (в некоторых случаях даже несколько часов), значительно увеличивая время загрузки системы и задерживая восстановление после исчезновения напряжения или системного отказа. Чтобы преодолеть эту проблему, в Solaris 7 была введена поддержка протоколирования метаданных для файлов UFS. По своей концепции протоколирование файловой системы аналогично протоколированию базы данных (описанному в разделе "Регистратор" главы 5). Изменения файловой системы записываются в свободные блоки данных в самой файловой системе, а…
Оценить
(0 голоса)
Даже прежде, чем полностью 64-разрядная версия операционной системы стала доступной с выходом Solaris 7, поддержка больших файлов ( размером более 2 Гбайт) была реализована в Solaris 2.5.1. Это расширение потребовалось в связи с быстрым увеличением емкости дисковых накопителей, и поставщики баз данных быстро представили выпуски своих программных продуктов, которые воспользовались преимуществом этого расширения. Список ввода/вывода В разделе, озаглавленном "Очистители страниц" (глава 5), рассматривается роль очистителей страниц памяти, или Database Writers в терминологии Oracle, в выгрузке изменяемых страниц из буферного кэша БД на диск. Эта особенность обычно требует большого количества асинхронных операций записи, запускаемых в течение короткого времени. Чтобы улучшить эффективность…
Оценить
(0 голоса)
В настоящем разделе рассматривается небольшая выборка из множества других оптимизаций, реализованных в операционной системе Solaris. Оптимизация программ в процессе компиляции Значительная техническая работа была проведена с целью улучшения производительности программного кода СУБД, сгенерированного компиляторами фирмы Sun, и в обеспечение того, чтобы программы использовали преимущества уже доступной оптимизации в процессе компиляции. Примеры областей, в которых была проделана эта работа, иллюстрирует следующий список: •             Оптимизация программ в процессе компиляции. После исследования ассемблерного кода, сгенерированного в процессе компиляции, разработчики уменьшили количество команд в программах СУБД и. следовательно, непопаданий в кэш команд ЦП. Другая оптимизация была выполнена с целью уменьшения количества непопаданий в кэш…
Оценить
(0 голоса)
Все основные СУБД используют память совместного использования для буферных кэшей баз данных, кэширования операторов языка SQL и решения других задач. Solaris предлагает специальную форму памяти совместного доступа, называемую fSM (Intimate Shared Memory - единообразно объявленная память совместного использования), с функциональными возможностями, дающими определенные преимущества именно для баз данных. Технология ISM была впервые реализована в Solaris 2.2. Единообразно объявленная память совместного использования несет следующие основные преимущества: •             Процессы, присоединяющиеся к сегменту ISM, совместно применяют структуры данных, связанные с этим сегментом памяти совместного использования, для трансляции виртуальных адресов в физические, что обеспечивает экономию памяти ядра и повышение производительности. •             Страницы памяти блокируются,…