ТОП-10 популярных


НОУТБУК с блестящим экраном
Eсли выпустившая ноутбук фирма предлагает его в качестве «замены настольному ПК», то это должно подразумевать под собой нечто большее, чем...


Для работы с вещественными числами в MySQL предусмотрено три типа данных - это типы FLOAT, DOUBLE, DECIMAL. Числовой тип FLOAT...

Магнито-оптический дисковод DynaMO
Cейчас, когда традиционные флоппи-дисководы на долгие годы замерли в своем развитии, поиск альтернативных носителей продолжается, и ситуация, казалось бы, разрешилась...

БОЛЬШЕ БОЛЬШИХ LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...

Больше больших LCD-мониторов
Процесс вытеснения с рынка мониторов с электронно-лучевой трубкой (CRT) продолжается. О смещении акцентов в пользу LCD-мониторов теперь заявляют даже те...


Какую только информацию мы не помещаем на компакт-диски: резервные копии важных данных, музыку, фильмы... Многие полагают, что главное - «купить...

Иди и пиши. TravelMate C100
Планшетный компьютер платформы Tablet PC обязан в первую очередь быть легким, способным достаточно долго работать без подзарядки батарей. Эти требования...

Размер объему не помеха.
С тех пор как компания Fujitsu отказалась от производства жестких дисков для настольных компьютеров, многие пользователи начали забывать о том,...

ПОД ЛИТЕРОЙ «N»
Aтаку LCD-мониторов не остановить, а масштабы этого наступления даже немного пугают. Судите сами — многие пользователи только начинают приглядываться к новому для...

Internet2, или cтарые песни о новом
Когда-то на заре Интернета, тогдаеще военно-научной сетиAPRAnet, были заложены основныепринципы функционирования«Сети сетей». В их числе — использованиепротокола, называемого сейчасIPv4. В...

Все о MySQL. Оптимизация производительности


28-12-2009

По мере роста объема ваших баз данных может потребоваться изменить стандартные настройки, которые 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 вполне можно индексировать. Количество неуникальных индексов ничем не ограничено.

Понравился материал? Поделитесь с друзьями!



<< Предыдущая статьяСледующая статья >>
Все о MySQL. Восстановление таблиц и баз данных по резервным копиям Все о MySQL. Оптимизация производительности. Продолжение.