Spec-Zone .ru
спецификации, руководства, описания, API
|
Производительность базы данных зависит от нескольких факторов на уровне базы данных, таких как таблицы, запросы, и параметры конфигурации. Этот результат конструкций программного обеспечения в ЦП и операциях ввода-вывода на аппаратном уровне, который следует минимизировать и сделать настолько эффективным насколько возможно. Поскольку Вы работаете над производительностью базы данных, Вы запускаете, изучая высокоуровневые правила и направляющие линии для стороны программного обеспечения, и измеряя производительность, используя тактовое стеной время. Поскольку Вы становитесь экспертом, Вы узнаете больше о том, что происходит внутренне, и начните измерять вещи, такие как циклы ЦП и операции ввода-вывода.
Типичные пользователи стремятся вытаскивать лучшую производительность базы данных из своих существующих конфигураций программного и аппаратного обеспечения. Усовершенствованные пользователи ищут возможности улучшить программное обеспечение MySQL непосредственно, или разработать их собственные механизмы хранения и аппаратные устройства, чтобы развернуть экосистему MySQL.
Наиболее важным фактором в создании приложения базы данных быстро является своя базовая конструкция:
Таблицы структурируются должным образом? В частности у столбцов есть правильные типы данных, и действительно каждый представляет в виде таблицы, имеют соответствующие столбцы для типа работы? Например, у приложений, которые выполняют частые обновления часто, есть много таблиц с немногими столбцами, в то время как у приложений, которые анализируют большие объемы данных часто, есть немного таблиц со многими столбцами.
Право, индексирует на месте, чтобы сделать запросы эффективными?
Вы используете соответствующий механизм хранения для каждой таблицы, и используете
в своих интересах сильные места и функции каждого механизма хранения, который Вы используете? В
частности выбор транзакционного механизма хранения такой как InnoDB
или нетранзакционный такой как MyISAM
может быть очень важным для производительности и масштабируемости.
В MySQL 5.5 и выше, InnoDB
механизм хранения значения по
умолчанию для новых таблиц. Практически, усовершенствованное InnoDB
технические характеристики означают это InnoDB
таблицы часто
выигрывают у более простого MyISAM
таблицы, специально для занятой
базы данных.
Каждая таблица использует соответствующий формат строки? Этот выбор также зависит
от механизма хранения, используемого для таблицы. В частности сжатые таблицы используют меньше дискового
пространства и так требуют, чтобы меньше дискового ввода-вывода считало и записало данные. Сжатие
доступно для всех видов рабочих нагрузок с InnoDB
таблицы, и для только для
чтения MyISAM
таблицы.
Приложение использует соответствующую стратегию
блокировки? Например, позволяя совместный доступ, когда возможный так, чтобы операции базы данных
могли работать одновременно, и запрос эксклюзивного доступа, когда соответствующий так, чтобы
критические операции получили высший приоритет. Снова, выбор механизма хранения является существенным.
InnoDB
механизм хранения обрабатывает большинство проблем блокировки без
участия от Вас, учет лучшего параллелизма в базе данных и сокращении количества экспериментирования и
настройки для Вашего кода.
Все области памяти используются для того,
чтобы кэшироваться измеренный правильно? Таким образом, достаточно большой, чтобы содержать данные,
к которым часто получают доступ, но не настолько большой, что они перегружают физическую память и
вызывают оповещение. Области оперативной памяти, чтобы сконфигурировать InnoDB
пул буферов, MyISAM
ключевой кэш, и
MySQL запрашивают кэш.
Любое приложение базы данных в конечном счете поражает аппаратные пределы, поскольку база данных становится более занятой. DBA должен оценить, возможно ли настроить приложение или реконфигурировать сервер, чтобы избежать этих узких мест, или требуется ли больше аппаратных ресурсов. Системные узкие места обычно являются результатом этих источников:
Поиск на диске. Это занимает время для диска, чтобы найти часть данных. С современными дисками среднее время для этого обычно ниже чем 10 мс, таким образом, мы можем в теории делать, приблизительно 100 ищут секунду. Это время медленно улучшается с новыми дисками и очень трудно оптимизировать для единственной таблицы. Способ оптимизировать время поиска состоит в том, чтобы распределить данные больше чем на один диск.
Чтение с диска и запись. Когда диск в корректной позиции, мы должны считать или записать данные. С современными дисками один диск поставляет, по крайней мере, 10-20MB/s пропускную способность. Это легче оптимизировать, чем ищет, потому что можно читать параллельно из многократных дисков.
Циклы ЦП. Когда данные находятся в оперативной памяти, мы должны обработать это, чтобы получить наш результат. Наличие маленьких таблиц по сравнению с объемом памяти является наиболее распространенным ограничивающим фактором. Но с маленькими таблицами, скорость обычно является не проблемой.
Пропускная способность памяти. Когда ЦП нуждается в большем количестве данных, чем может поместиться в кэш ЦП, пропускная способность оперативной памяти становится узким местом. Это - редкое узкое место для большинства систем, но один, чтобы знать.
Чтобы использовать ориентированные на производительность расширения SQL в переносимой программе MySQL, можно
обернуть специфичные для MySQL ключевые слова в оператор в пределах /*! */
разделители комментария. Другие SQL-серверы игнорируют прокомментированные ключевые слова. Для получения
информации о записи комментариев см. Раздел 9.6, "Синтаксис Комментария".