ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 

  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: Inet-Admins
Inet-Admins mailing list archive (inet-admins@info.east.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[inet-admins] MySQL performance degradation



Hi,

 >> За полтора года размер базы вырос где-то вдвое (объем RAM - втрое).... а
 >> с производительностью полный абзац - отчет, который генерировался где-то
 >> пару часов в настоящий момент генерируется уже вторые сутки....
 ier>     1) А каовы конкретный цифры?
Конкретные цифры чего ?
Большие таблицы - hosts - примерно 320 тыс записей, примерно 500 байт на 
запись. domains - около 30 тыс записей, точный размер записи сейчас не помню,
networks - 6600 записей, записи короткие (грубо - префикс /24, число хостов)

Полтора года назад каждая из таблиц была примерно на 1/3-1/2 меньше.
Индексы все на месте - для каждого поля, используемоего в where clause
есть индекс. Композитных индексов нет.

 ier>         2) Какие запросы стоят за "генерацией отчетов"?
Две операции, которые стали _безумно_ долгими:
1a) select distinct ip-address from hosts; - выполняется вполне быстро
1b) для каждого такого адреса - выделить префикс /24 и приписать единичку
к числу хостов.
На ~4300 сетях и ~170 тыс адресов операция исполнялась достаточно быстро.
Ну скажем час или два. Сейчас она шла полсуток по меньшей мере -
6600 сетей и ~240 тыс адресов. При том, что табличка networks занимает
700k, индекс - 500к и это с гарантией влезает и в table buffer и в
key buffer (по 6 мегабайт оба)

Вторая операция (псевдокодом) - это стадия перед отчетами:
select hostname from hosts;
while (fetch)
 while (success)
 {
   если есть домен с именем, равным имени хоста - поместить хост туда
   (пометить ему поле domain_id)
   если нет такого домена - отрезать от имени хоста левый токен
 }

По сути - это борьба за то, чтобы glue records оказались в "своих" доменах

Эта операция шла со скоростью > 100 хостов в секунду когда хостов было
примерно 200 тысяч, а доменов - 11 тысяч. И завершалась примерно за полчаса, 
соответственно. Сейчас доменов - 33к, хостов - 330к, операция
шла часов двадцать. Опять-таки, таблица domains должна помещаться
и в record buffer (впритык) и в key buffer (с запасом)


Понятно, что все это - идиотская борьба с сервером без подзапросов,
но выбирался он - за скорость и где-то до весны был вполне быстр

Alex Tutubalin
http://www.lexa.ru/lexa/

--- GoldED 2.42.G1114+


=============================================================================
"inet-admins" Internet access mailing list. Maintained by East Connection ISP.
Mail "unsubscribe inet-admins" to Majordomo@info.east.ru if you want to quit.
Archive is accessible on http://info.east.ru/rus/inetadm.html



 




Copyright © Lexa Software, 1996-2009.