2015-09-13 3 views
0

У меня есть таблица с заданиями около 500 тыс., Каждое задание имеет уникальный идентификатор, который используется в качестве первичного ключа и статус, который используется для указания того, ожидает ли задание, завершено или не выполнено. Статус - целое число, которое не является ключевым.Чрезвычайно медленная производительность MySQL

Моя проблема заключается в том, что простой запрос, когда я пытаюсь выбрать задания, основанные на статусе, занимает слишком много времени, более 10 минут. В БД подключено около 46 потоков, и я также сделал перезапуск, но это не помогло производительности.

Я скопировал схему таблицы и запрос я пытаюсь запустить здесь: http://pastie.org/10416054

Есть ли способ, чтобы найти то, что узкое место и оптимизировать таблицу, так что не займет много времени?

ответ

11

После нескольких часов я Винтовка от следующей команды:

CREATE INDEX idx_qry_status ON queries(status); 

В запросе делает просмотр таблицы, не используя нет индекса вообще.

См. Страницу руководства по адресу Create Index.

Визуальный из после того, как, стол-накрест (не производительность мудрая):

create table queries 
( id bigint auto_increment primary key, 
    status int null 
    -- partial definition 
); 
insert queries (status) values (7),(2),(1),(4),(1),(5),(9),(11); 

CREATE INDEX idx_qry_status ON queries(status); 
show indexes from queries; 
+---------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 
| Table | Non_unique | Key_name  | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | 
+---------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 
| queries |   0 | PRIMARY  |   1 | id   | A   |   8 |  NULL | NULL |  | BTREE  |   |    | 
| queries |   1 | idx_qry_status |   1 | status  | A   |   8 |  NULL | NULL | YES | BTREE  |   |    | 
+---------+------------+----------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 
+0

Спасибо, я пытаюсь я сделать резервную копию, и я пытаюсь его сейчас. – Vasilis

+1

Отлично работает, время запроса сократилось с 11 минут до менее 1 секунды. Я сейчас читаю интересную статью о индексах MySQL, которая объясняет много https://www.dreamhost.com/blog/2013/08/27/mysql-indexing-basics/ – Vasilis

Смежные вопросы