леле, каква дискусия се развила тук.
Какъв смисъл виждам аз в това което съм направил?
Системата която пиша е доста комплексна. Разделена е виртуално на Области, като всяка област има Действия.
Няколко примера за такива области:
Новини, Форум за анонимни потребители, Форум за Регистрирани потребители.
Действия: Добавяне на новина, Триене на Пост във форум, Update на Пост във форум, etc ...
Действието в scriptа за който споменах е: Вземане на кратко описание на новини. Има 2 вида новини: текущи и архив.
та в scriptа се извиква 2 пъти това действие, един път за текущите, втория път за архива. За това се получава повтарянето на лога.
Системата все още е във фаза на разработка. Това повтаряне на лога няма да го има в бъдеще, защото гореспоменатото действие ще се раздели на 2 действия: вземане на текущи новини, вземане на архивни новини. Т.е. ще има една функция от по-ниско ниво, която ще взема информация за двата вида новини, но самите Действия ще и подават параметри, а не scriptовете към действията. Така повтарянето в лога ще се Елиминира, но За момента го има.
Защо таблицата има такъв PRI key ?
Ами защото както се вижда, за 1 седмица тази таблица може да стане от порядъка на 5 милиона реда преди да се архивира информацията.
Вижда се също така, че там се записва Всяко едно действие. Еми чрез тази таблица аз мога да проследя напълно и Едноцначно Всеки потребител къде, какво, кога е правил, и то в рамките за конкретната му сесия !
Но при 5 милиона реда едно
'WHERE UserID = x AND AreaID = y GROUP BY ...', представете си колко време ще отнеме ако няма PRI кей. Но ако го има, тези условия UserID = x AND AreaID = y, значително ще намалят това време. Ако задам и едно 'Time > "хххх-xx-xx" AND Time < "хххх-xx-xx"', смятайте още колко по-бързо ще стане работата. Ако няма PRI кей, ще си седя цял ден да чакам за резултати.
А нали все пак една статистика се води, за да се Анализира ! И то Своевременно.
Поздрави на всички и благодаря за мненията
|