Итак, ТраффПро протрудился честно на моём сервере буквально пару недель. За это время его таблица в базе весит уже не много ни мало 612 МБ! Это далеко не есть гут. График текущей нагрузки строится минуты 2. Остальные отчёты не меньше. Отсюда решил проанализировать таблицу и нашёл вот что.
Итак, самы больше url_usr_serfing и clients_traff. Собственно по ним.
1. Поле id_client типа bigint. Это у кого же интересно столько клиентов будет? Даже самые извращенцы - разработчики БД больше чем 4-байтовый integer не используют. Ну куда вам столько, вы скажите? Кроме того, теория говорит, что SQL-сервера гораздо быстрее обрабатывают типы int, нежели bigint.
2. Поле порт типа int. Теория говорит, что максимальный номер порта может быть 65535, что есть два байта, или word, но никак не 4.
3. Поля tr_int, tr_out - аналогично. В int поместится 4 GB - куда больше?
4. Поле size из url_usr_serfing - аналогично.
А теперь посчитаем, сколько мы могли бы сэкономить.
1. Таблица clients_traff. Сейчас у меня весит 234 МБ. При использовании моего предложения мы экономим по 14 байт на запись. Всего записей 1891288, умножаем на 14 получаем 26 МБ экономии. Плюс уличшенная производительность при использовании типа int вместо bigint.
2. Таблица url_usr_serfing. Сейчас 379 МБ. Экономия 10 байт на запись. Всего записей 3317065, умноаем на 10 получаем 33 МБ экономии и то же улучшение произвоительности.
Вообще, я никого не укоряю, просто не всегда сразу видны изъяны при разработке, которые называются избыточностью БД и она без проблем устраняется впоследствии при эксплуатации. Вот вам и пища для размышлений. Мою таблицу в 612 МБ можно урезать на 60 МБ, что составляет 10% ;)