Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как бороться с объёмными таблицами
 
 автор: Shorr Kan   (21.06.2006 в 14:26)   письмо автору
 
 

Спустя некоторое время работы, табличка статистики по определенным данным стала весить 55 мегабайт. Конечно, мне саппорт сказал, что можно и больше, но так продолжаться не может вечно. Это я пока тесты веду, а чуть-чуть позже - пойдет реальная работа, и эти 55 мегабайт будут, самое долгое, в неделю появляться. Какие можно предпринять меры по выкидыванию этого всего из базы (или этой таблички), но сохранению данных? Может быть как-то в файлы... или копировать в другую таблицу, архивную... но ведь и она не может быть бесконечно великой...

   
 
 автор: valenok   (21.06.2006 в 14:42)   письмо автору
 
   для: Shorr Kan   (21.06.2006 в 14:26)
 

А что за данные? иМожет нету смысла столько хранить?

Стоило бы раз в неделю кроном запускать скрипт достающий всё из базы - переписывающий всё в текст файлы и очищать базу.
А ты потом если тебе нужна эта инфа снимай её с хостинга.

Да и потом - если у тебя такой тариф что можно спокойно держать сколько влезет файлов по 55мб - не думаю что с этим будет какая то проблема.

   
 
 автор: Shorr Kan   (21.06.2006 в 15:11)   письмо автору
 
   для: valenok   (21.06.2006 в 14:42)
 

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

   
 
 автор: valenok   (21.06.2006 в 15:14)   письмо автору
 
   для: Shorr Kan   (21.06.2006 в 15:11)
 

Чтение из текстовых файлов - затруднит к ней доступ.
Создание других таблиц не уменьшмит обьём БД

Ну может разгрузка именно опрделённой таблицы влияет но не на столько.

Статистика пользователей?
Какие статитстические даееые вы собираетесь хранить кроме ip ?

   
 
 автор: Shorr Kan   (21.06.2006 в 15:23)   письмо автору
 
   для: valenok   (21.06.2006 в 15:14)
 

Почему чтение из текстовых файлов затруднит доступ к mysql? Если я не ошибаюсь, то mysqld - это одно, а httpd - это другое.
Создание других таблиц объема к базе не уменьшит, но мне всегда казалось, что обращение за информацией идет не в базу, а в таблицу. То есть, влияет именно объем таблицы. В конце концов - никто не мешает создать вторую базу, архивную.

В статистике пользователей может быть очень много разных данных. И вот чего там нет, так это ip...

   
 
 автор: valenok   (21.06.2006 в 15:27)   письмо автору
 
   для: Shorr Kan   (21.06.2006 в 15:23)
 

Просто у тебя выходит что ты в таблицу 47 раз для каждого пользователя записываешь его user_agent
достаточно одного и с йп...

Вобщем твоё дело.

--

Доступ затрудник к статистике в файлам ав не доступ к бд.
Тоесть и файлов труднее доставать статитстику чем из бд.

--

Может и стоит создать ещё БД - архивную.
А ты разве про объём ничего не говорил?

   
 
 автор: Shorr Kan   (21.06.2006 в 15:35)   письмо автору
 
   для: valenok   (21.06.2006 в 15:27)
 

Наверное говорил. Меня беспокоит постоянное наполнение той базы, которая точно так же - постоянно читается пользователями. сколько это может продолжаться, если 55 мб данных накопилось за несколько дней интенсивной (нормальной) работы? Недолго. Поэтому я и ищу вариант архива. Что возвращает нас к моему первоначальному вопросу - какие есть варианты организации архива, без урезания данных? В частности, меня интересует необходимость создания другой базы. Нужно ли? Или достаточно другую таблицу? Или и то, и другое - не нужно, нужно класть в файлы?

В статистику про пользователей вообще ничего не пишется. Пишется про их работу. Там нет ни юзерагентов, ни айпи. Там есть то, что они смогли сделать. Эти "пользователи" - действительно Пользователи... а не посетители... В форуме softtime хранится дата регистрации, контакты и количество сообщений. Представьте, что данных больше. Да еще и не ВООБЩЕ, за всё время, а с разбивкой на часы - отдельные данные за каждый час работы.

   
 
 автор: Loki   (21.06.2006 в 15:52)   письмо автору
 
   для: Shorr Kan   (21.06.2006 в 15:35)
 

можно создать архивную таблицу. Так как каждая таблица - отдельный файл, то нагрузка на БД снизится.
А что за статистика? ее должен получать каждый пользователь? Может стоит обобщать статистику за определенные периоды. Вообще, если будет больше подробностей, то придумать что-нибудь можно.

   
 
 автор: valenok   (21.06.2006 в 15:55)   письмо автору
 
   для: Shorr Kan   (21.06.2006 в 15:35)
 

НУ я думаю может стоить поступить так:
Таблица вобщем - там записанно что пользователи смогли сделать.

Создать отдельную таблицу, там сделать по строке для каждой операции,
а потом чистить первую и увеличивать по значению ячейку: пользователи смогли сделать у той операции..

Тоесть в одной по строке на пользователя и операцию а на второй только операцию и колвл пользователей сумевших совладать с операцией.

   
 
 автор: Shorr Kan   (21.06.2006 в 16:18)   письмо автору
 
   для: valenok   (21.06.2006 в 15:55)
 

Loki
В таблице есть данные (на самом деле - таких таблиц четыре, каждая - для своего направления), эти данные имеют столбцы user_id , hour , date , плюс еще три столбца - у каждой таблички из этих четырех - они свои и суть их не так важна, важно лишь понимать, что один столбец - varchar , два других - int.
Люди что-либо делают, и данные записываются на текущую дату и на текущий час. После этого, эти самые люди смотрят свою статистику - сколько и чего они наделали и что им за это будет...
То есть, данные должны храниться по часам. Разумеется, архивные данные... ну там - месячной давности и более давние - я их склеиваю в суточную статистику - без разбивки на часы. Но значения это не имеет, статистика увеличивается, увеличивается и увеличивается. Воздушный шарик тоже так может, а итог?...

valenok
Всё, что возможно из этого - уже было сделано, ужать далее данные не получится. А вот то что отдельная таблица... в сущности, я и ждал того, что сказал Loki.

   
 
 автор: cheops   (21.06.2006 в 17:38)   письмо автору
 
   для: Shorr Kan   (21.06.2006 в 16:18)
 

Что в varchar? Сколько сейчас записей в таблицах? Каждая таблица по 55 Мб или все вместе? Можно такой финт ушами сделать - хранить информацию об текущих сутках в одной таблице, а месяц поделить на 3, таким образом у вас будет 16 таблиц вместо 4. Для обеспеченья работоспособности и скорости, главное, чтобы размер одной таблицы не превышал разумные пределы (скажем так, 50-100 Мб для одной таблицы MyISAM - это много).

PS Проблема вообще говоря известная и многие страдают - актуальные логи как правило вообще больше чем за 2 дня не хранят.

   
 
 автор: Shorr Kan   (21.06.2006 в 18:02)   письмо автору
 
   для: cheops   (21.06.2006 в 17:38)
 

Нет, эти логи в почасовом формате необходимо хранить минимум 15-ти дневной давности. А лучше - 30-ти. Объединять в суточную статистику - все что более давние. Но удалять вот их уже - точно нельзя...
Не понял одного - зачем месяц делить на три. По десять дней? Тогда ясно. Угу, спасибо, это вариант. 16 таблиц... грустно.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования