Индексы в mysql

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
detected
Сообщения: 174
Зарегистрирован: 2017.06.16, 12:24

Индексы в mysql

Сообщение detected »

В таблице 3 столбца, строк около 400к
Нашел не индексированный столбец, выполнил запрос
ALTER TABLE `section` ADD INDEX(`element_id`);
И все, сайт и мускул лежит уже часа 5-6 с 504, он всегда так долго выполняется? И что делать, подскажите новичку пожалуйста(
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Индексы в mysql

Сообщение zelenin »

вообще долговато для 400к, но в принципе может быть. жди утра)
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Индексы в mysql

Сообщение rugabarbo »

1. Это InnoDB или MyISAM?
2. Какая версия MySQL?
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Индексы в mysql

Сообщение rugabarbo »

^ отредактировал свой ответ, потому что дока показала, что в новых версиях MySQL дело может обстоять иначе...
detected
Сообщения: 174
Зарегистрирован: 2017.06.16, 12:24

Re: Индексы в mysql

Сообщение detected »

Версия сервера: 5.5.58-0+deb8u1 - (Debian)
Apache/2.4.10 (Debian) mod_fcgid/2.3.9 OpenSSL/1.0.1t
Версия клиента базы данных: libmysql - 5.5.58
Информация о версии: 4.2.12deb2+deb8u2
InnoDB
Включаются только те страницы, которые не работают с данной таблицей
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Индексы в mysql

Сообщение rugabarbo »

По идее должны работать страницы, которые читают эту таблицу, потому что она залочена на запись.
Столбец `section`.`element_id` типа INT?
detected
Сообщения: 174
Зарегистрирован: 2017.06.16, 12:24

Re: Индексы в mysql

Сообщение detected »

int все
detected
Сообщения: 174
Зарегистрирован: 2017.06.16, 12:24

Re: Индексы в mysql

Сообщение detected »

Написал сисадмину, он поднял его. На вопрос в чем была проблема - зависшие запросы, как это понимать? Что мне теперь, никак не добавить индексы на столбец
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Индексы в mysql

Сообщение rugabarbo »

Зайдите в консоль мускуля и сделайте:

Код: Выделить всё

select @@tmpdir;
Результат сюда скиньте.
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Индексы в mysql

Сообщение rugabarbo »

А потом нам дайте ещё результат работы команды:
Это в консоли сервера.
Аватара пользователя
rugabarbo
Сообщения: 1063
Зарегистрирован: 2015.06.21, 16:21
Контактная информация:

Re: Индексы в mysql

Сообщение rugabarbo »

Объясню, зачем нужны эти данные.

В MySQL 5.5 secondary-индексы для InnoDB должны создаваться относительно быстро за счёт InnoDB Fast Index Creation. То есть никакого копирования таблицы проихсодить не должно.

При этом данных в колонке у вас мало. 400 000 значений типа INT по 8 байт – это 3-4 Мб от силы. Соответственно, индекс для такого объёма данных должен выстраиваться достаточно быстро.

А значит, есть вероятность, что упёрлись в какие-то ограничения быстрого создания индексов. Наиболее вероятна какая-то проблема с tmpdir – например, там нет места, и мускуль ждёт его освобождения во время построения индекса. Всё виснет.
Ответить