Лог файл медленных запросов

borzih2

Новичок
Лог файл медленных запросов

В лог файле медленных запросов много строчек вида

# Query_time: 2 Lock_time: 0 Rows_sent: 0 Rows_examined: 4049924852804041521
# administrator command: Init DB;
# User@Host: root[root] @ [192.168.0.2]
# Query_time: 2 Lock_time: 0 Rows_sent: 0 Rows_examined: 7582707419939156021
# administrator command: Init DB;
# User@Host: root[root] @ [192.168.0.2]
# Query_time: 2 Lock_time: 0 Rows_sent: 0 Rows_examined: 16496385409717169125
# administrator command: Init DB;
# User@Host: root[root] @ [192.168.0.2]
# Query_time: 2 Lock_time: 0 Rows_sent: 0 Rows_examined: 4266651780084347194
# administrator command: Init DB;
# User@Host: root[root] @ [192.168.0.2]
# Query_time: 2 Lock_time: 0 Rows_sent: 0 Rows_examined: 6365935209750747224

Что они значат?
 

borzih2

Новичок
Автор оригинала: Pigmeich
borzih2
что кто-то их туда записал.
их туда записал процесс mysqld. Обычно он туда пишет те SQL запросы, которые работают более 1 секунды. Например:
# User@Host: root[root] @ [192.168.0.2]
# Query_time: 3 Lock_time: 1 Rows_sent: 1 Rows_examined: 0
SELECT * FROM profiles USE INDEX (PRIMARY) WHERE id=104268;
# User@Host: root[root] @ [192.168.0.2]
# Query_time: 3 Lock_time: 1 Rows_sent: 1 Rows_examined: 0
SELECT * FROM profiles USE INDEX (PRIMARY) WHERE id=106727;
# User@Host: root[root] @ [192.168.0.2]
# Query_time: 3 Lock_time: 1 Rows_sent: 1 Rows_examined: 0
SELECT * FROM profiles USE INDEX (PRIMARY) WHERE id=29417;

но иногда пишет и те строчки, что указаны в сообщении выше. Что-то они значят?

-~{}~ 12.01.08 13:48:

А вот если выполнить команду mysqldumpslow, то можно увидеть, что команды "administrator command: Init DB;" встречаются достаточно часто:

Count: 482 Time=2.95s (1420s) Lock=0.49s (238s) Rows=1.0 (482), root[root]@[192.168.0.2]
SELECT * FROM profiles USE INDEX (PRIMARY) WHERE id=N
......
Count: 100 Time=4.67s (467s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@[192.168.0.2]
# administrator command: Init DB
......

Откуда они берутся?
 

Pigmeich

Новичок
borzih2
explain select попробуй применить на запросах отмеченных в логах.
 

borzih2

Новичок
Автор оригинала: Pigmeich
borzih2
explain select попробуй применить на запросах отмеченных в логах.
Вопрос стоит не про "обычную" SQL команду, а про запись "administrator command: Init DB". Что она значит? Откуда берется? Почему долго выполняется?
 

Фанат

oncle terrible
Команда форума
Pigmeich
ты уверен в том, что отвечаешь на вопрос, в котором разбираешься?

borzih2, я понимаю, что вопрос дурацкий, но в гугле смотрел?
 

FractalizeR

Новичок
MySQL Manual:

Init DB
The thread is selecting a default database.

Фактически это результат исполнения оператора USE.

У вас там MyISAM таблицы или InnoDB?
 

FractalizeR

Новичок
Нашел описание подобной проблемы, но на немецком. Кто-нибудь знает этот язык?
http://forum.de.selfhtml.org/archiv/2006/7/t132668/

-~{}~ 12.01.08 15:16:

Секундочку, я что-то не пойму:
Count: 482 Time=2.95s (1420s) Lock=0.49s (238s) Rows=1.0 (482), root[root]@[192.168.0.2]
SELECT * FROM profiles USE INDEX (PRIMARY) WHERE id=N

У вас простой запрос, использующий первичный ключ таблицы в WHERE выполняется 3 секунды? Так что же вы от USE хотите? Что находится в таблице profiles? Там ведь больших BLOB полей нет?
 

borzih2

Новичок
Автор оригинала: FractalizeR
Нашел описание подобной проблемы, но на немецком. Кто-нибудь знает этот язык?
http://forum.de.selfhtml.org/archiv/2006/7/t132668/

-~{}~ 12.01.08 15:16:

Секундочку, я что-то не пойму:
Count: 482 Time=2.95s (1420s) Lock=0.49s (238s) Rows=1.0 (482), root[root]@[192.168.0.2]
SELECT * FROM profiles USE INDEX (PRIMARY) WHERE id=N

У вас простой запрос, использующий первичный ключ таблицы в WHERE выполняется 3 секунды? Так что же вы от USE хотите? Что находится в таблице profiles? Там ведь больших BLOB полей нет?
Вы правы. Оптимизировать надо много чего, база данных работает под большой нагрузкой. Если смотреть загрузку RAID массива командой gstat (ОС - FreeBSD 6.2), то обычно она около 50%. Но иногда выскакивает под 200%. Наверное, в эти моменты и происходит "затормаживание" всех SQL запросов, включая и операцию USE (т.е. mysql_select_db() ).

Наверное, тему можно закрыть. Т.е. теперь я знаю, что запись "administrator command: Init DB" значит операцию USE. Остается заниматься "общей отпимизаций" всех SQL запросов или добавлением жестких дисков RAID. Ну может еще перевести статью с немецкого :)

-~{}~ 12.01.08 15:36:

Автор оригинала: fixxxer
откуда такие астрономические цифры в Rows_examined?
Похоже на какой-то глюк... В базе данных не более нескольких десятков миллионов записей
 
Сверху