SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

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

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

Вы не зашли.

#1 13.02.2017 13:57:23

rra005
Участник
Зарегистрирован: 13.02.2017
Сообщений: 8

Проясните по поводу индексов на Mysql

Добрый день!

Сайт на Wordpress
Большое кол-во записей - порядка 100000 и доп полей более миллиона
Сайт стал тормозить, посоветовали проверить индексы, да индексов не было, включил, стал работать как обычно, что обрадовало.

Но подскажите пожалуйста подробнее по индексам:
1. Где находятся эти индексы
2. Нужно ли под них выделять память (или что-то другое) какой-то настройкой my.cnf, и где они хранятся.
3. Много ли места будут занимать, если в БД будет к примеру 50000000 записей
4. Индексы включал запросом: ALTER TABLE wp_postmeta ENABLE KEYS - они включаются один раз на таблицу или нужно постоянно после работы скриптов их включать?
5. Если включу на все таблицы - это не будет хуже?
6. При работе с индексами как будет нагрузка на сервер?

Спасибо

Неактивен

 

#2 15.02.2017 18:53:22

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проясните по поводу индексов на Mysql

условно: если таблица это книга, то индекс - алфавитный указатель к ней
хранится там же где и данные, т.е. в соответствующем хранилище
в my.cnf выделяют память под соответствующие буферы
а много ли места будут занимать данные при 50000000 записей? ответ зависит от размера каждой записи и наличия места, аналогично и с индексами
условно: индексы ускоряют чтение, если могут быть использованы, и замедляют изменение данных, так что нужен разумный баланс

Неактивен

 

#3 28.02.2017 13:56:30

rra005
Участник
Зарегистрирован: 13.02.2017
Сообщений: 8

Re: Проясните по поводу индексов на Mysql

vasya написал:

условно: если таблица это книга, то индекс - алфавитный указатель к ней
хранится там же где и данные, т.е. в соответствующем хранилище
в my.cnf выделяют память под соответствующие буферы
а много ли места будут занимать данные при 50000000 записей? ответ зависит от размера каждой записи и наличия места, аналогично и с индексами
условно: индексы ускоряют чтение, если могут быть использованы, и замедляют изменение данных, так что нужен разумный баланс

Большое спасибо. Уточните пожалуйста, в my.cnf какой именно настройкой выделять место под индексы?

Неактивен

 

#4 28.02.2017 13:58:10

rra005
Участник
Зарегистрирован: 13.02.2017
Сообщений: 8

Re: Проясните по поводу индексов на Mysql

А еще, если будет мало места под индексы, тюнер скажет это?

Неактивен

 

#5 28.02.2017 14:08:48

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проясните по поводу индексов на Mysql

rra005 написал:

Большое спасибо. Уточните пожалуйста, в my.cnf какой именно настройкой выделять место под индексы?

см http://sqlinfo.ru/articles/info/3.html
для других хранилищ будут иные настройки

rra005 написал:

А еще, если будет мало места под индексы, тюнер скажет это?

не в курсе

Неактивен

 

#6 01.03.2017 11:19:38

rra005
Участник
Зарегистрирован: 13.02.2017
Сообщений: 8

Re: Проясните по поводу индексов на Mysql

Спасибо
Подскажите еще, если будет мало места под индексы, то БД будет тормозить?
Также как я понимаю?

Неактивен

 

#7 01.03.2017 11:23:44

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

Re: Проясните по поводу индексов на Mysql

Нельзя допускать, чтобы не было необходимого места на диске. Если место на диске закончится, поведение СУБД станет нежелательным для администратора.

Неактивен

 

#8 01.03.2017 11:43:59

rra005
Участник
Зарегистрирован: 13.02.2017
Сообщений: 8

Re: Проясните по поводу индексов на Mysql

ммм, а индексы располагаются на диске, не в памяти?

Неактивен

 

#9 01.03.2017 11:52:31

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проясните по поводу индексов на Mysql

vasya написал:

хранится там же где и данные

,т.е. на диске

Неактивен

 

#10 01.03.2017 11:58:49

rra005
Участник
Зарегистрирован: 13.02.2017
Сообщений: 8

Re: Проясните по поводу индексов на Mysql

Но по ссылке http://sqlinfo.ru/articles/info/3.html написано, что за индексы отвечает настройка key_buffer_size, которая располагается в памяти... что-то я совсем запутался

Неактивен

 

#11 01.03.2017 12:08:52

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проясните по поводу индексов на Mysql

key_buffer_size определяет размер кэша для таблиц типа MyISAM, т.е. объем оперативной памяти, в которой создается копия индекса.

http://sqlinfo.ru/articles/info/3.html написал:

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

Неактивен

 

#12 14.03.2017 16:17:58

rra005
Участник
Зарегистрирован: 13.02.2017
Сообщений: 8

Re: Проясните по поводу индексов на Mysql

Ок спасибо. А если быстрый диск SSD на сервере, то как понимаю по факту, эта настройка будет играть не главную роль?

Неактивен

 

#13 14.03.2017 16:26:00

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Проясните по поводу индексов на Mysql

эта настройка может вообще не играть роли, если у вас таблицы другого типа
и ram всё равно быстрее ssd

что играет главную роль см Поиск узких мест в производительности MySQL: ботанический определитель

Неактивен

 

Board footer

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