Оптимизация Kinokpk.com releaser

В общем. Сервак вис. Настроение мое не улучшалось от этого. Было решено куда-то деть таблицу snatched (это та, которая с 3.7кк записей). Она, сцука, при клинапе лочилась, таща за собой все остальные запросы, по этому, собсвенно, и была удалена следующая сточка из cleanup.php

mysql_query("UPDATE snatched SET seeder = 0 WHERE seeder = 1 AND last_action < $deadtime");

Да, именно это зло и ложило машину. Но это не все, на своем трекере-соцсети, http://www.torrentsbook.com , я пошел дальше. Дропнул поля, которые отвечают за то, когда последний раз юзверь сидировал при подключении к трекеру, и является ли он сидером сейчас.
Нафига, скажите мне, в истории 3кк торрентов держать такие частоизменяемые поля?
Вот и я о том же. Снесены: last_action, to_go, seeder из таблицы snatched, удалено всё, что их затрагивало из анонсера, а запросы в деталях юзверя переделаны на JOIN таблице peers… Конечно, джоин при больших объемах скачки займет порядка 3-7 секунд, но это простительно, если на такую страницу как история закачек юзверя заходят редко.

Также, я заменил все COUNT на SUM…. получилось быстро:) Но это все в угоду InnoDB, ибо при MyISAM мускул умирал от локов таблиц..

(C) ZonD80

Leave a Reply

Your email address will not be published. Required fields are marked *