Алгоритм разборки статистики

fire-one

Новичок
Алгоритм разборки статистики

PHP4 MySQL 5
Имеется таблица в которой храняться все запросы к страницам:
IP ользователя, откуда и куда пришел, вермя в юник формате и переменная, которая показывает авторизирован пользователь или нет(1/0).
Правильную ли я выбрал архитектуру ?
Как быстрее и с меньшим затратом ресурсов отбирать строки за сутки?
 

alexhemp

Новичок
Вычислить значение UNIXTIME для начала суток и их конца.

Затем выбирать через BETWEEN например

Создать правильно индексы, посмотреть EXPLAIN
 

Kelkos

Сам себе программер
индексы таблицы БД?
а какую они в этом роль сыграют ?
ГЛАВНУЮ! гыы..

впринципе, если посещаемость маленькая, то всё будет нормально работать.. как только посещаемость станет достаточно большой, многие статистические отсчёты станут такими тормозными, что опплюёшься.. Если посещаемость средняя, то ещё можно смотреть статистику "реалтайм".. чтобы меньше тормозило, лично я сделал к текстовым полям (рефереры, адреса страниц, типы брозверей, ip) чтото типа цифровых хэшей для группировок и выборок (достаточно оказалось int.. неразу невозникло коллизии).. С цифровыми "хэшами" многие запросы стали работать гораздо быстрее. (популрность страниц, переходы по ссылкам и т.д.).
Но это всё равно не спасёт, если посещаемость станет достаточно большой.. в таком случае только генерирование отчётов по крону..
 

Kelkos

Сам себе программер
а как ты формируешь этот "хэш" ?
беру первые 8 символов стандартного md5 от заданной строки, получаю из них 4 байта (числа) и через функу ip2long получаю из этих чисел одно int.
Получение int из этих чисел можно былобы получить и умножением, но чёта я не уверен, что получу именно "чистый" инт (ведь отрицательные значения тоже нужны).

Даллее к каждому полю создаю доп. поле для записи этих ключей и создаю на них индексы. Статистика стала в разы быстрее шевелиться... но опять же.. размеры в пределах разумного.

Но помни, что возможность коллизий тут достаточно велика. Да, по таким ключам удобно делать выборки, но всегда помни о возможности коллизии.
 

dimas

Новичок
Писал я когда-то движок для одной, ныне глубокоуважаемой адалт-партнерки, количество хитов в сутки там неприлично огромное, поэтому единственный достойный вариант - запуск пересчета статистики по cron. В моём случае, это был (и пока есть) запуск каждый день в полночь, каждую неделю в воскресенье в полночь и + каждый последний день месяца запуск вручную.
 

Фанат

oncle terrible
Команда форума
alexhemp
Создать правильно индексы
вот здесь ты сильно ошибаешься.
в таблице, в которую идут постоянные вставки, индексы создадут такое торможение, что положат всю базу.
 

Kelkos

Сам себе программер
вот здесь ты сильно ошибаешься.
в таблице, в которую идут постоянные вставки, индексы создадут такое торможение, что положат всю базу.
ну ты щас напугаешь всех.. ужос какой то!
может такой эффект и будет наблюдаться в нескоромно больших базах, но ктож их даст сделать на вирт. хосте?
 

Фанат

oncle terrible
Команда форума
это не ужос, а очень простой принцип.
при частых вставках индексы = смерть.
 

alexhemp

Новичок
Фанат

Запросы вообще нужно в лог писать, а в базу уже обобщенные данные - и не часто, раз в 15 максимум, а лучше раз в час. И тут как раз - правильные индексы не повредят.

И потом может у него запросов - то кот наплакал... Каков вопрос таков ответ.

Я бы вообще рекомендовал не мучаться фигней, а взять готовый анализатор статистики, например awstats
 

Фанат

oncle terrible
Команда форума
Запросы вообще нужно в лог писать, а в базу уже обобщенные данные - и не часто, раз в 15 максимум, а лучше раз в час. И тут как раз - правильные индексы не повредят.
совершенно верно
Я бы вообще рекомендовал не мучаться фигней, а взять готовый анализатор статистики, например awstats
при таком подходе я вообще удивляюсь, откуда берутся люди, которые пишут awstats
ведь проще всегда взять готовое!
а потом мы, блин, тут на форуме удивляемся, когда нам вываливают простыню кода и просят найти ошибку.
помолчал бы уж, а?
 

Kelkos

Сам себе программер
Запросы вообще нужно в лог писать, а в базу уже обобщенные данные - и не часто, раз в 15 максимум, а лучше раз в час. И тут как раз - правильные индексы не повредят.
Скажите, вот именно Вы сталкивались, что ваша "муська" откинулась из-за частых добавлений? Помоему мы становимся параноиками и боимся всего. Лично я не сталкивался с такой проблемой. Вообще за всю мою практику только один раз таблица побилась.. и то потому что хостер сервак перегружал.
да, конечно, на сайтах в десяток тысяч хостов и надо к этому вопросу подходить иначе, но в других случаях чего голову морочить?
-------------
З.Ы. так по вашему загрузка из дампа - страшное дело! Сплошной инсерт..
 
Сверху