![]() |
Модераторы: skyboy |
![]() ![]() ![]() |
|
nIkTo |
|
||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
Доброго времени суток. Подскажите как уменьшить нагрузку на процессор.
Раз в минуту скрипт делает выборку заданий :
как только MySQL начинает обрабатывать этот запрос сервер застывает секунд на 5, такие провисания не приемлемы, в таблице около 30милионов записей. Структура таблицы:
Подскажите как оптимизировать мускул чтобы он имел так сказать планку и выше не прыгал. Может что-нибудь в конфигах MySQL сервера оптимизировать ? Буду благодарен за любые идеи. Pentium® 4 CPU 2.40GHz MySQL 5.0.67 |
||||
|
|||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
что показывает explain? и, может, есть смысл проиндексировать поле status?
|
|||
|
||||
nIkTo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
skyboy, explain говорит:
skyboy, сколько на это времени примерно уйдёт? Подозреваю что не мало. |
|||
|
||||
nIkTo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
прошло 2 часа, поле ещё индексируется =) Что быстрее бы отрабатывало (выборка из базы), если для поля status использовать (имеет 3 состояния) :
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
практически пофиг. что-то помнится мне, что для задачи полной (пере)индексации создают копию структуры таблицы с индексом, перегоняют туда данные и переименовывают копию в имя оригинала. |
|||
|
||||
gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 3 Всего: 17 |
включи в логах логировать запросы которые долго выполняются...
если фрейворк, то можно влючить отладку и смотреть в каких участках медленно выплняются действия в сложно запросе очень часто можно сделать ошибку, где mysql будет грузить сильно CPU |
|||
|
||||
nIkTo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
||||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
я точно не уверен. поиском найти не смог. может, кто-то ещё подскажет.
|
|||
|
||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
нашел. я дезинформировал тебя. это было на хабре. и идея не просто в создании копии таблицы, а в последующей подмене MYI-файлов. А затем REPAIR TABLE
Внимание: в той статье говорится о создании уникального индекса. Применимо ли указанное к неуникальному индексу - для меня загадка. жаль, что без подмены файлов не обойдется :( |
|||
|
||||
nIkTo |
|
||||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
Дело в том что
что делать ? Добавлено через 4 минуты и 6 секунд Запросы типа
Добавлено через 6 минут и 23 секунды explain говорит :
|
||||||||||
|
|||||||||||
skyboy |
|
|||
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
||||
|
||||
nIkTo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
skyboy, индекс около 4х часов создавался. Гораздо быстрее стало, раньше ~ 10 сек теперь меньше секунды =)
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
весьма вероятно, для запроса select count(*) from tasks where status='done', использование индекса происходит не на благо а во вред. А план показывает что индекс использвуется. Если более 20% записей попадают под критерий status='done', то использование индекса для отбора по этому предикату, как правило, оказвается не эффективным. Если этот тот самый случай, лучше подсказать оптимизатору, что индекс использовать не стоит. Это сообщение отредактировал(а) Zloxa - 6.8.2010, 10:46 -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
nIkTo |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 218 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
Zloxa, действительно, игнорируя индекс запрос :
выполняется, хотя и не так быстро как хотелось бы. |
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 33 Всего: 161 |
было бы настораживающе странно, если бы 30млн записей пересчитались мгновенно. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | MySQL | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |