По мере роста объема ваших баз данных может потребоваться изменить стандартные настройки, которые MySQL использует для управления сервером. Хотя скорость процессора, большие и более быстрые жесткие диски, а также дополнительная память определенно имеют отношение к производительности, речь пойдет не о них. Цель этой главы - показать способы повышения производительности с помощью средств, доступных в MySQL, и обучить вас приемам, благодаря которым ваши запросы будут выполняться с наибольшей эффективностью.
Структура базы данных - еще один аспект, влияющий на производительность. В этом разделе также обсуждаются различные методы оптимизации таблицы для повышения производительности. Однако большей частью первоочередная оптимизация состоит в усовершенствовании запросов, добавлении индексов и т.д. Следовательно, в первую очередь в этой главе рассматривается оптимизация запросов.
Для повышения производительности в первую очередь надо обратить внимание на запросы, особенно те из них, которые выполняются наиболее часто. Чтобы получить представление о том, какие запросы можно улучшить, воспользуйтесь журналом запросов MySQL (см. главу 15, "Обслуживание, резервное копирование и восстановление").
Индексирование
Огромное количество людей в Internet-форумах спрашивают что можно сделать с медленными запросами, не попробовав добавить индекс к часто используемому столбцу. Как вам известно из главы 8, "Обработка баз данных и таблиц", таблицы со столбцами, запрашиваемыми наиболее часто, можно упорядочить, создав индекс. Индекс указывает место в базе данных, где находятся определенные данные, а создание индекса столбца сортирует информацию в этом столбце. Когда серверу для выполнения запроса нужен доступ к этой информации, он сразу по индексу "знает", где ее искать.
Индексирование еще более важно в запросах, в которых задействовано сразу несколько таблиц. Если для полного сканирования одной таблицы нужно время, представьте, насколько больше времени потребуется для просмотра нескольких таблиц. Если ваша цель - оптимизация запросов, то начинать всегда следует с индексирования.
Если у вас есть столбец, задействованный в поиске, группировании или сортировке, то его индексирование, скорее всего, приведет к повышению производительности. Это касается столбцов, которые являются частью операции объединения, или столбцов, которые связаны с операторами WHERE, GROUP BY или ORDER BY.
Рассмотрим следующий пример.
Листинг 16.1.
mysql> SELECT salary FROM empData JOIN empMaster ON empData.sid = emp-Master.id WHERE salary > 50000;
Индексированию подлежат столбцы empData.sid и empMaster.id, так как они являются частью объединения. Так как столбец salary также входит в предложение WHERE, его тоже неплохо было бы индексировать.
Также следует учесть, что индексирование столбцов с большим количеством повторяющихся значений не дает хороших результатов. Индексирование столбца со значениями "yes" или "no" ничего не улучшит. С другой стороны, индексирование столбца, где значения уникальны (например, номера социального обеспечения служащих), будет очень полезным.
Для увеличения производительности вы можете ассоциировать несколько неуникальных индексов с таблицей. В предыдущем примере столбцы empData.sid, empMas-ter.id и salary вполне можно индексировать. Количество неуникальных индексов ничем не ограничено.
ТОП-10 популярных
Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...
БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...
НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...
Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...
Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...
Компьютер для гурманов.«Эксимер ДМ»
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Российская компания «Эксимер ДМ», известная как производитель настольных компьютеров, рабочих станций, серверов и ноутбуков, выступила техническим спонсором проведения торжеств, посвященных...
Для длинных строк, т.е. строк длиннее 255 символов, в MySQL предусмотрены типы BLOB (Binary Large Object, большой двоичный объект) и...
В дополнение к календарным типам, предназначенным для хранения даты и времени отдельно, MySQL также поддерживает гибридные типы данных DATETIME и...
Вообще, к изменению настроек сервера прибегают очень редко. В MySQL программа заранее настроена так, чтобы соответствовать самым распространенным и основным...
Все о MySQL. Оптимизация производительности
28-12-2009
<< Предыдущая статья | Следующая статья >> |
Все о MySQL. Восстановление таблиц и баз данных по резервным копиям | Все о MySQL. Оптимизация производительности. Продолжение. |