|
Программирование >> Программный интерфейс приложений
пользоваться функциями get lock () и release lock () . Эта процедура изложена в описании функции getlock () в приложении В, Операторы и функции . Последовательность - в качестве комментария. Этот стиль комментирования в большинстве версий не поддерживается из-за его неоднозначности. Исключение составляет версия 3.23.3, где такой комментарий приемлем, но с одним добавлением - пробелом в конце. Для справки обратитесь к разделу Комментарии в данной главе.
Оптимизация запросов Мир реляционных баз данных - это мир, в котором доминируют базы данных, наборы данных и операции над ними. База данных - это набор таблиц, а таблица - набор строк и столбцов. ЗапросьЕ, создаваемые с помощью оператора SELECT, тоже возвращают наборы строк и столбцов. Это простая абстракция, которая никак не связана с внутренним представлением данных в СУБД Еще одним абстрактным допущением является то, что операции над таблицами производятся одновременно. Это вполне допустимо, потому как запросы базируются на концепции операций над множествами, а в теории множеств концепция времени отсутствует. В действительности все иначе. СУБД реализуют абстрактные концепции на базе реального оборудования. В результате выполнение запросов требует много, иногда чрезвычайно много времени. А человек - создание нетерпеливое, он не хочет ждать. Таким образом, мы живем в абстрактном мире мгновенных математических операций над множествами, но постоянно ищем пути ускорения работы наших запросов. К счастью, они существуют. Это - индексирование таблиц, позволяющее ускорить их просмотр. Опытный пользователь может извлечь максимальную выгоду из индексов. Это создание запросов, оказывающих влияние на механизм планирования, позволяющий запросам различных клиентов более эффективно взаимодействовать между собой. Это методы настройки железа , позволяющие повысить производительность, обойдя физические ограничения, присущие тому или иному оборудованию. Именно на этих проблемах и акцентируется внимание в данной главе с единственной целью: помочь вам оптимизировать производительность СУБД, чтобы она обрабатывала запросы как можно быстрее. СУБД MySQL работает достаточно быстро, но даже быстрые системы можно заставить работать еще эффективнее. Индексирование Сначала обсудим проблемы индексирования только потому, что это наиболее важный инструмент ускорения работы запросов. Несмотря на то, что есть другие методы, самым эффективным методом было, есть и будет индексирование. В списке рассылки СУБД MySQL люди чаще всего спрашивают о том, как можно ускорить выполнение запросов. Как это ни странно, в большинстве случаев причина этого кроется в том, что таблицы не индексированы, и их индексирование сразу же решает проблему. Но это не всегда применимо, потому что оптимизация не всегда достигается столь простым способом. Тем не менее, если у таблицы нет индексов, в большинстве случаев попытки улучшить производительность другими методами является простой потерей времени. Все-таки сначала следует попробовать индексирование, а затем - другие варианты. В этой главе вы узнаете, что такое индекс, каким образом он может повысить или понизить производительность, а также познакомитесь с принципами проектирования столбцов для таблиц. В следующем разделе мы рассмотрим работу оптимизатора запросов. Для того чтобы можно бьшо использовать преимущества индексирования как можно более эффективно, необходимо не только уметь создавать индексы, но понимать принципы работы оптимизатора. Дело в том, что можно создать индекс, который не принесет никакой выгоды. Поэтому таких ситуаций необходимо избегать. Иногда, хотя и редко, приходится нейтрализовать действия оптимизатора. Мы коснемся этой темы позднее. Преимущества индексирования Рассмотрим принцип работы индекса. Возьмем таблицу, не имеющую индекса. Неиндексированная таблица представляет собой беспорядочный набор строк. Рассмотрим, например, таблицу на рис. 4.L которая уже ранее упоминалась в главе \, Знакомство с СУБД MySQL и SQL . Эта таблица не имеет индексов, так что при поиске определенной компании необходимо будет проверить все строки таблицы на совпадение искомому значению. Для этого потребуется сканирование всей таблицы от начала до конца. Это будет очень медленно и ужасно неэффективно, особен-
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |