Оптимизиране на mysql таблицата на kakvo.org

Вчера посещенията на 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.

VN:F [1.9.22_1171]
Rating: 5.0/5 (1 vote cast)
VN:F [1.9.22_1171]
Rating: 0 (from 0 votes)
Оптимизиране на mysql таблицата на kakvo.org, 5.0 out of 5 based on 1 rating

4 thoughts on “Оптимизиране на mysql таблицата на kakvo.org”

  1. Два въпроса имам към теб 🙂
    1.Защо не го правиш с ID, а с md5?
    2.Защо не триеш .bak файловете? 🙂

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  2. 1. Защото няма как да го извадя по ID при положение, че не търся по ID, а по текст или превод. Затова правя md5 на текста и един вид това е ID 🙂
    2. Оцелил си точния момент за да ги видиш докато съм го човъркал 😉

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  3. 1.Е имах в предвид да го търсиш по ID и после да си изкарваш превода.Както и да е и така се получава 🙂
    2.Ами не 🙂 Преди малко повече от седмица го видях това, но така и не писах.
    И не си изтрил всичките…
    http://www.kakvo.org/include/
    🙂

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)
  4. Не виждам това което мислиш. Когато търся "как си човече" за какво ид става въпрос ? За да разбера превода на "как си човече" трябва да търся по стринг, а не по ИД (select prevod_en from tablichka where prevod_bg='как си човече' , но понеже много повечко процесорна мощ се ползва така използвам md5 на всеки такъв превод които е уникален ключ по този начин пестя 100% процесор) . Както и да е 🙂
    Да ще премахна направо листването. Явно е редно повече да се замисля за злонамерени очички :)(не визирам теб). Thx

    Дано скоро имам малко повечко време за да обърна по- сериозно внимание на kakvo.org

    VN:F [1.9.22_1171]
    Rating: 0.0/5 (0 votes cast)
    VN:F [1.9.22_1171]
    Rating: 0 (from 0 votes)

Вашият коментар

Вашият email адрес няма да бъде публикуван Задължителните полета са отбелязани с *