Задавайте вопросы, мы ответим
Вы не зашли.
Добрый день. Подскажите пожалуйста по понятиям таким как Индекс, ключ... Основные.
Пытаюсь оптимизировать MySQL 5.0.41.
Ещё начальные вопросы по оптимизации. Что такое индексирование и как оно делается?
Как узнать какие таблицы чаще используются, чтобы сделать для них отдельные КЭШи.
Заранее, Спасибо!
Отредактированно HighVoltage (17.08.2007 15:01:15)
Неактивен
Индекс и ключ - это одно и то же.
Индексы бывают трех видов - просто индекс (INDEX), уникальный индекс (UNIQUE)
и главный ключ (PRIMARY KEY).
Уникальный ключ не допускает повторяющихся значений внутри столбца, по которому
он создан. Главный ключ также не допускает наличия NULL-значений в этом столбце.
Индекс всегда сортирован, поэтому выборка данных с использованием индекса часто
оказывается быстрее полного поиска данных по таблице.
Частоту использования таблиц Вы можете посмотреть, например, включив query log (учтите,
что это создает файлы логов, которые нужно периодически уничтожать, иначе у Вас
закончится место). Проще, наверное, просто посмотреть на запросы. Также можете
анализировать запросы с использованием MySQL proxy.
Подробнее про оптимизацию Вы можете почитать на сайте MySQL: http://dev.mysql.com/doc/refman/5.0/en/ … rview.html
Думаю, если Вы напишете реальные запросы, на примерах Вам будет немного легче разобраться.
Неактивен
Чтобы узнать какие таблицы чаще используются, можно использовать slow-query-log, или binary log. Также Вы можете набирать SHOW PROCESSLIST в клиенте mysql, чтобы увидеть какие запросы занимают время сервера. Также можно использовать MySQL Proxy http://forge.mysql.com/wiki/MySQL_Proxy
Неактивен
К примеру вот такой процесс. Это было получено с помощью SHOW PROCESSLIST
| 1487031 | u00001 | 192.168.0.78:55076 | base | Query | 2 | Copying to tmp table | select p.products_image, mi.name, p.products_weight, p.products_quantity, mi.manufact |
Хорошо или плохо что копируется во временную таблицу? Ещё в phpmyadmin когда смотришь состояние базы, то есть несколько красных переменных. Я поменял некоторые из них, а они все равно отображаются красным цветом.
Неактивен
Временная таблица может быть в памяти, это просто вид сортировки. Временная
таблица пишется на диск, если она превосходит значение max_heap_table_size.
Какие переменные Вас пугают?
Неактивен
И переменные и значения.
Slow_queries 8,558
Innodb_buffer_pool_reads 12
Handler_read_rnd 7,105 k
Handler_read_rnd_next 1,525 M
Created_tmp_disk_tables 440
Select_full_join 362 k
Sort_merge_passes 1,012
Opened_tables 1,514 (это поле всегда красное, даже когда было равно 300, хотя максимальное число я поставил 1500)
Table_locks_waited 135 k
Прошу прощения что так много. Пытался сам все вылечить, но не пойму в чем косяки
Наверное лучше начать с более критических, если таковые присутствуют. И чем всё это грозит?
Неактивен
Select_full_join 362 k
это значит, что у Вас нет ключа на поле, используемом при join, довольно критично.
Попробуйте включить slow query log и посмотрите какие запросы там часто, сделайте им explain.
Могу предположить, что where и order by часто делается не по ключевым полям, что приводит к сортировке всей таблицы методом filesort.
Неактивен
Спасибо. Буду разбираться.
Неактивен