Вчера посещенията на kakvo.org надхвърлиха 11 000 и машината клекна. Клекна до толкова, че mysqld и apache2 заеха 100% и дори не можеш да се логнеш в машината нормално, а след известно време(20 сек.). За целта първата и най- основна част от решаването на този проблем е оптимизирането на mysql и apache2. След няколко огледа и мъки в натоварената машина забелязах, че полетата за „превод от“ и „превод на“ са тип „text“ и не са индекси. В този случай когато се търси конкретен превод със заявка „… where превод от=’търсен превод’ “ отнема 1.2 сек. и сериозно натоварва машината. Мислех 100 часа 😛 и реших да добавя едно поле „превод_md5“ char(32) в което да пиша md5 на „превод от“ и което ще бъде index. По този начин когато се търси превод не се изпълнява старата заявка където се търси самият превод, а новата в която се търси md5 на превода. Благодарение на уникалните и индексирани md5 хешове на таблицата, заявките се оптимизираха до заветните 00.00 сек. за изпълнение, а употребата на MySQL падна до 10%. Сега машината е във война с племето на Apache, но пък за сметка на това е в съюз със ордена на MySQL. Започвам да мисля още 100 часа как да подобря дипломатическите отношения на машината с племето на Apache.
Оптимизиране на mysql таблицата на kakvo.org
Comments
4 responses to “Оптимизиране на mysql таблицата на kakvo.org”
-
Два въпроса имам към теб 🙂
1.Защо не го правиш с ID, а с md5?
2.Защо не триеш .bak файловете? 🙂-
1. Защото няма как да го извадя по ID при положение, че не търся по ID, а по текст или превод. Затова правя md5 на текста и един вид това е ID 🙂
2. Оцелил си точния момент за да ги видиш докато съм го човъркал 😉
-
-
1.Е имах в предвид да го търсиш по ID и после да си изкарваш превода.Както и да е и така се получава 🙂
2.Ами не 🙂 Преди малко повече от седмица го видях това, но така и не писах.
И не си изтрил всичките…
http://www.kakvo.org/include/
🙂-
Не виждам това което мислиш. Когато търся „как си човече“ за какво ид става въпрос ? За да разбера превода на „как си човече“ трябва да търся по стринг, а не по ИД (select prevod_en from tablichka where prevod_bg=’как си човече’ , но понеже много повечко процесорна мощ се ползва така използвам md5 на всеки такъв превод които е уникален ключ по този начин пестя 100% процесор) . Както и да е 🙂
Да ще премахна направо листването. Явно е редно повече да се замисля за злонамерени очички :)(не визирам теб). ThxДано скоро имам малко повечко време за да обърна по- сериозно внимание на kakvo.org
-
Вашият коментар