powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация таблицы
20 сообщений из 20, страница 1 из 1
Оптимизация таблицы
    #38382916
vadikkl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброе время суток, уважаемые форумчане!
Имеется следующая таблица в БД, которая каждый день пополняется примерно на 1 млн записей и общее количество записей в таблице уже исчисляется десятками мультов.
Структура таблицы следующая:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE TABLE IF NOT EXISTS `statistics` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `site_id` int(10) NOT NULL,
  `tiser_id` int(10) NOT NULL,
  `ip` varchar(15) NOT NULL,
  `date` int(10) NOT NULL,
  `click` tinyint(1) NOT NULL,
  `ref` float(6,4) DEFAULT NULL,
  `user` int(5) DEFAULT NULL,
  PRIMARY KEY (`id`,`date`),
  KEY `date` (`date`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8


формат ячеек динамический

Когда возникли первые проблемы с выборкой, сделал партиционирование таблицы по полю date , так как выборка в основном происходит по дням определенным, часть проблемы это решило, например отчет за 1 день происходит довольно быстро, но при необходимости выборки за более длительные периоды запрос выполняется неимоверно долго

За всю свою практику в первые встретился с такими объемами и нагрузкой, которые с каждым днем прогрессивно растут ((
Помогите плиз советом, что можно предпринять! Возможно что-то переделать в структуре или движок таблице сменить? Что угодно что решит проблему...

Заранее благодарен! ))
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38382934
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadikkl, вопрос дня : откуда вы взяли 1 млн фактов в день и действительно ли их нужно хранить в mysql ?
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38382936
vadikkl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
большая посещалка, одним словом регистрируется каждый просмотр определенного елемента на целой сети сайтов
да, нужно хранить? а какая альтернатива, если не mysql ?
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38382947
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadikkl, ну как и предполагалось. Те, кто действительно знает зачем им хранить первичные данные в субд, такие вопросы не задают.

Во-первых, что именно в существующих программах анализа файлов журналов вас не устроило ?

Во-вторых, можно отказаться от записи статических файлов и снизить объем данных раз в 10.

В третьих, Еще один классический прием - предагрегация. Хранение только суммарных данных за большие промежутки типа дней в необходимых разрезах.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38382950
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadikkl,

1) Зачем в этой таблице поле id?
Для чисто статистических нужд оно не требуется. А если от него избавиться, то и первичный ключ становится не нужен.

2) ip-адрес прекрасно вмещается в 4-байтовый int вместо varchar(15).

По остальным полям нужно смотреть, возможно, еще что-то сократить удастся.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383019
vadikkl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwind, те кто действительно знает что такое субд никогда не напишут что в них можно хранить данные, так как данные хранятся в бд.
из всего остального вами описанного, возможно подошла бы агрегация, но в данном проекте необходимо хранить все подробно, так как есть необходимость подробной информации в различных вариациях.
Спасибо!
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383024
vadikkl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft,

по id согласен, да и ip тоже, но это не решает проблему, а лишь немного оптимизирует таблицу
Спасибо!

Но вопрос заключается в том как хранить большие объемы в таблице и позволять очень быстро выполнять выборку? может кто встречался с такими же объемами? подскажите как хранить и какие танцы с бубном нужно делать что бы запросы выполнялись быстрее?
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383034
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadikkl, ну так я же написал : в необходимых разрезах. агрегируйте что cможете.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383035
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadikklНо вопрос заключается в том как хранить большие объемы в таблице и позволять очень быстро выполнять выборку? может кто встречался с такими же объемами? подскажите как хранить и какие танцы с бубном нужно делать что бы запросы выполнялись быстрее?
Все абсолютно точно так же как и с маленькими - смотрите планы и думаете.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383036
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadikklНо вопрос заключается в том как хранить большие объемы в таблице и позволять очень быстро выполнять выборку? может кто встречался с такими же объемами? подскажите как хранить и какие танцы с бубном нужно делать что бы запросы выполнялись быстрее?Да небольшие это объемы. Для ускорения запросов применяют обычно индексы. И/или предрасчитанные агрегаты, о которых вам уже говорили.

Вы или конкретный запрос покажите, или так и будем обсуждать сферическую оптимизацию в вакууме.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383039
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftВы или конкретный запрос покажите, или так и будем обсуждать сферическую оптимизацию в вакууме.
Товарищ ждет чудо. Одно чудо - секционирование, ему не помогло.

Агрегаты можно посчитать только агрегированием. Выборку можно сделать только выборкой. Какое тут может быть чудо?
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383043
vadikkl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
netwindmiksoftВы или конкретный запрос покажите, или так и будем обсуждать сферическую оптимизацию в вакууме.
Товарищ ждет чудо. Одно чудо - секционирование, ему не помогло.

Агрегаты можно посчитать только агрегированием. Выборку можно сделать только выборкой. Какое тут может быть чудо?

Агрегаты я изначально хотел использовать, при разработке, но к сожалению в данном проекте сделать это невозможно, так что агрегирование однозначно отпадает !

Я знаю что это еще не большие объемы, но проблема возникла уже даже при таких объемах



Поэтому вопрос конкретный: Можно ли уменьшить время выполнения запросов к вышеописанной таблице ?

Либо подскажите альтернативный вариант хранения...

P.S: Секционирование я не делал, я делал партиционирование

Спасибо!
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383045
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadikkl P.S: Секционирование я не делал, я делал партиционирование

по-русски это секционирование. Как у вас на хабре это называется меня не волнует.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383048
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadikklЯ знаю что это еще не большие объемы, но проблема возникла уже даже при таких объемах

Раз вы столкнулись с проблемами - это уже большие объемы.

Вы можете, к примеру из счетчиков mail.ru, lj.ru или каких-нибудь других РЕАЛЬНЫХ статистических сервисов, которые очевидно фиксируют каждое посещение, вытащить единичные посещения за позапрошлый год ? Подумайте почему они их не показывают, но задачи свои выполняют при намного большем охвате аудитории.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383056
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vadikklПоэтому вопрос конкретный: Можно ли уменьшить время выполнения запросов к вышеописанной таблице ?Увы, вопрос совсем не конкретный. Для некоторых запросов можно, для некоторых нельзя. А для некоторых можно, но ценой увеличения времени выполнения некоторых других запросов.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383058
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
netwindvadikkl P.S: Секционирование я не делал, я делал партиционирование

по-русски это секционирование.Не спорьте - и так, и эдак называют.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383072
kixiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Думаю что дальнейшую оптимизацию стоит делать исходя из того, какие запросы необходимо будет делать к данной таблицы.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383079
netwind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftnetwindпропущено...

по-русски это секционирование.Не спорьте - и так, и эдак называют.
Косноязычные программисты.
В википедии и русской серьезной литературе используют исключительно более понятный термин секционирование.
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383176
vadikkl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kixiro, в том то и загвоздка, что в дальнейшем будут выполнятся как скрипты по выборке, так и скрипты на добавление и обновление записей
...
Рейтинг: 0 / 0
Оптимизация таблицы
    #38383247
kixiro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vadikkl, чтобы существенно ускорить процесс выборки, тут только одно решение - секционирование. Если выборки идут по всем параметрам и секционирование по какому либо параметру в каком-то случае приведет к тому, что нужно будет обходить все части, то можно ещё вот что сделать: продублировать запись и сделать секционирование по разным параметрам, а на уровне приложения исходя из условий запроса вибирать к какой копии выполнять запрос.
Потому что как не оптимизируй одну таблицу, обход по всем значениям в любом случае дольше, чем по маленькой секции.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Оптимизация таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]