# Главная
# О библиотеке

# Выбор дистрибутива
преимущества Linux/UNIX | основные дистрибутивы | серверный Linux | BSD | LiveCDs | прочее

# Установка и удаление программ
общие вопросы | каталоги софта | специальные случаи

# Настройка и работа
установка, загрузчики | настройка Linux | консоль | файловые системы | процессы | шеллы, русификация, коммандеры | виртуальные машины, эмуляторы

# X Window и оконные менеджеры
настройка X Window | GNOME | KDE | IceWM и др.

# Работа с текстами
редакторы | офис | шрифты, кодировки и русификация | преобразования текстовых файлов | LaTeX, SGML и др. | словари

# Графика
GIMP | фото | обработка изображений | форматы графических файлов

# Сети, администрирование
общие вопросы | Dialup & PPP | брандмауэры | маршрутизация | работа в Windows-сетях | веб-серверы | Apache | прокси-серверы | сетевая печать | прочее

# Программирование
GCC & GNU make | программирование в UNIX | графические библиотеки | Tcl | Perl | PHP | Java & C# | СУБД | CVS | прочее

# Ядро
# Мультимедиа
# Интернет
# Почта
# Безопасность
# Железо
# Разное

# Linux HowTo (как сделать)
# Книги и руководства
# Материалы на английском языке


MySQL The World's Most Popular Open Source Database # Online shop | Site map |  
CompanyProductsSupport & ConsultingTraining & CertificationDownloadsDocumentation
  BooksArticlesMailing ListsPresentationsOther Sites  
Search the MySQL manual:
MySQL Manual
  • 1 Общая информация
  • 2 Установка MySQL
  • 3 Учебное пособие по MySQL
  • 4 Администрирование баз данных
  • 5 Оптимизация в MySQL
    • 5.1 Oбзор оптимизации
    • 5.2 Оптимизация SELECT и других запросов
    • 5.3 Вопросы блокировок
    • 5.4 Оптимизация структуры базы данных
    • 5.5 Оптимизация сервера MySQL
    • 5.6 Вопросы, относящиеся к диску
  • 6 Справочник по языку MySQL
  • 7 Типы таблиц MySQL
  • 8 Интерфейсы для MySQL
  • 9 Расширение MySQL
  • A Проблемы и распространенные ошибки
  • B Привнесенные программы
  • C Благодарности
  • D История изменений и обновлений MySQL
  • E Перенос на другие системы
  • F Переменные окружения
  • G Регулярные выражения в MySQL
  • H GNU General Public License
  • I GNU Lesser General Public License
  • Команды SQL, функциональное оглавление
  • Концептуальное оглавление

Buy this Reference Manual in softcover from Barnes & Noble!

MySQL Reference Manual
Previous / Next / Up / Table of Contents

5 Оптимизация в MySQL

Оптимизация - сложная задача, потому что она, в конечном счете, требует понимания системы в целом. В отдельных случаях для выполнения локальной оптимизации достаточно знать систему или приложение не в полном объеме, однако чтобы сделать систему более оптимальной, нужно разбираться в том, как она устроена.

В этой главе будут рассмотрены различные способы оптимизации MySQL и представлены некоторые примеры ее выполнения. Не следует забывать, однако, что всегда можно найти некоторые дополнительные возможности сделать систему еще быстрее (хотя каждый следующий шаг в этом направлении будет даваться все труднее и труднее).

Главы

  • 5.1 Oбзор оптимизации
    • 5.1.1 Конструктивные ограничения MySQL/компромиссы
    • 5.1.2 Вопросы переносимости
    • 5.1.3 Для чего мы использовали MySQL?
    • 5.1.4 Набор тестов MySQL (The MySQL Benchmark Suite)
    • 5.1.5 Использование собственных тестов
  • 5.2 Оптимизация SELECT и других запросов
    • 5.2.1 Синтаксис оператора EXPLAIN (получение информации о SELECT)
    • 5.2.2 Оценка производительности запроса
    • 5.2.3 Скорость выполнения запросов SELECT
    • 5.2.4 Как MySQL оптимизирует выражения WHERE
    • 5.2.5 Как MySQL оптимизирует DISTINCT
    • 5.2.6 Как MySQL оптимизирует LEFT JOIN и RIGHT JOIN
    • 5.2.7 Как MySQL оптимизирует ORDER BY
    • 5.2.8 Как MySQL оптимизирует LIMIT
    • 5.2.9 Скорость выполнения запросов INSERT
    • 5.2.10 Скорость выполнения запросов UPDATE
    • 5.2.11 Скорость выполнения запросов DELETE
    • 5.2.12 Другие советы по оптимизации
  • 5.3 Вопросы блокировок
    • 5.3.1 Как MySQL блокирует таблицы
    • 5.3.2 Вопросы блокирования таблиц
  • 5.4 Оптимизация структуры базы данных
    • 5.4.1 Конструктивные особенности MySQL
    • 5.4.2 Сделайте объем данных как можно меньше
    • 5.4.3 Использование индексов в MySQL
    • 5.4.4 Индексы столбцов
    • 5.4.5 Многостолбцовые индексы
    • 5.4.6 Почему так много открытых таблиц?
    • 5.4.7 Открытие и закрытие таблиц в MySQL
    • 5.4.8 Недостатки создания множества таблиц в одной базе данных
  • 5.5 Оптимизация сервера MySQL
    • 5.5.1 Настройка параметров системы, компляции и запуска
    • 5.5.2 Настройка параметров сервера
    • 5.5.3 Как компиляция и линкование влияет на скорость MySQL
    • 5.5.4 Как MySQL использует память
    • 5.5.5 Как MySQL использует DNS
    • 5.5.6 Синтаксис команды SET
  • 5.6 Вопросы, относящиеся к диску
    • 5.6.1 Использование символических ссылок
      • 5.6.1.1 Использование символических ссылок для баз данных
      • 5.6.1.2 Использование символических ссылок для таблиц

User Comments

Posted by Christoph Tapper on Monday October 7 2002, @3:14pm[Delete] [Edit]

Slow SQLs may be a result of unintended locks.

I had trouble with an SELECT that joined 4 tables but should return only 1 row (LIMIT 1). After returning the result the connection still was heavy busy (a bug?). The CPU usage of mysqld was about 97% and SHOW PROCESSLIST showed that the connection was in a state "Copying to tmp table" and thus LOCKING all tables participating in the query.

The solution was to split the SQL into multiple CREATE TEMPORARY TABLE SQLs and then joining these. That reduced the execution speed from about 300 seconds to something below 1 second :)

Add your own comment.

Top / Previous / Next / Up / Table of Contents
# MySQL.com home | Site map | Contact us | Press | Jobs | Privacy policy | Trademark info | © 1995-2003 MySQL AB. All rights reserved.