SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 17.08.2007 15:00:12

HighVoltage
Участник
Зарегистрирован: 17.08.2007
Сообщений: 17

Определения понятий.

Добрый день. Подскажите пожалуйста по понятиям таким как Индекс, ключ... Основные.
Пытаюсь оптимизировать MySQL 5.0.41.

Ещё начальные вопросы по оптимизации. Что такое индексирование и как оно делается?

Как узнать какие таблицы чаще используются, чтобы сделать для них отдельные КЭШи.

Заранее, Спасибо!

Отредактированно HighVoltage (17.08.2007 15:01:15)

Неактивен

 

#2 17.08.2007 15:22:04

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Определения понятий.

Индекс и ключ - это одно и то же.

Индексы бывают трех видов - просто индекс (INDEX), уникальный индекс (UNIQUE)
и главный ключ (PRIMARY KEY).

Уникальный ключ не допускает повторяющихся значений внутри столбца, по которому
он создан. Главный ключ также не допускает наличия NULL-значений в этом столбце.

Индекс всегда сортирован, поэтому выборка данных с использованием индекса часто
оказывается быстрее полного поиска данных по таблице.

Частоту использования таблиц Вы можете посмотреть, например, включив query log (учтите,
что это создает файлы логов, которые нужно периодически уничтожать, иначе у Вас
закончится место). Проще, наверное, просто посмотреть на запросы. Также можете
анализировать запросы с использованием MySQL proxy.

Подробнее про оптимизацию Вы можете почитать на сайте MySQL: http://dev.mysql.com/doc/refman/5.0/en/ … rview.html

Думаю, если Вы напишете реальные запросы, на примерах Вам будет немного легче разобраться.

Неактивен

 

#3 17.08.2007 19:28:25

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Определения понятий.

Чтобы узнать какие таблицы чаще используются, можно использовать slow-query-log, или binary log. Также Вы можете набирать SHOW PROCESSLIST в клиенте mysql, чтобы увидеть какие запросы занимают время сервера. Также можно использовать MySQL Proxy http://forge.mysql.com/wiki/MySQL_Proxy

Неактивен

 

#4 23.08.2007 15:28:06

HighVoltage
Участник
Зарегистрирован: 17.08.2007
Сообщений: 17

Re: Определения понятий.

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

Неактивен

 

#5 23.08.2007 15:39:07

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Определения понятий.

Временная таблица может быть в памяти, это просто вид сортировки. Временная
таблица пишется на диск, если она превосходит значение max_heap_table_size.
Какие переменные Вас пугают?

Неактивен

 

#6 23.08.2007 16:13:07

HighVoltage
Участник
Зарегистрирован: 17.08.2007
Сообщений: 17

Re: Определения понятий.

И переменные и значения.
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

Прошу прощения что так много. Пытался сам все вылечить, но не пойму в чем косяки sad
Наверное лучше начать с более критических, если таковые присутствуют. И чем всё это грозит?

Неактивен

 

#7 23.08.2007 16:19:59

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Определения понятий.

Select_full_join            362 k

это значит, что у Вас нет ключа на поле, используемом при join, довольно критично.

Попробуйте включить slow query log и посмотрите какие запросы там часто, сделайте им explain.

Могу предположить, что where и order by часто делается не по ключевым полям, что приводит к сортировке всей таблицы методом filesort.

Неактивен

 

#8 23.08.2007 18:50:29

HighVoltage
Участник
Зарегистрирован: 17.08.2007
Сообщений: 17

Re: Определения понятий.

Спасибо. Буду разбираться.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson