Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> индексы и терминология 
V
    Опции темы
Akina
Дата 26.2.2013, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Ну тогда так:

Код

mysql> CREATE TABLE `ws_flights` (
    ->   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    ->   `date` int(11) unsigned DEFAULT '0',
    ->   `sid` int(11) unsigned DEFAULT '0',
    ->   `flight` text,
    ->   `price` decimal(10,2) unsigned DEFAULT '0.00',
    ->   PRIMARY KEY (`id`),
    ->   KEY `SID_PRICE` (`sid`,`price`),
    ->   KEY `DATE` (`date`)
    -> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.06 sec)

mysql> CREATE VIEW `v_ws_flights`
    -> AS
    -> SELECT id
    -> FROM `ws_flights`
    -> WHERE `date`< NOW() - INTERVAL 1 HOUR;
Query OK, 0 rows affected (0.08 sec)

mysql> DELETE `ws_flights`.*
    -> FROM `ws_flights`, `v_ws_flights`
    -> WHERE `ws_flights`.id = `v_ws_flights`.id;
Query OK, 0 rows affected (0.00 sec)



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
animegirl
Дата 3.3.2013, 21:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



Не утверждение! предположение...  smile 
А что если взять партиционирование? Делить по времени, раз в сколько надо минут, убивать самую старую часть?


--------------------
Скажи миру - НЯ!
PM   Вверх
bars80080
Дата 4.3.2013, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 5
Всего: 315



ну, тут всё же задача не абстрактная. актуальность данных всё же необходимо сохранять.
в принципе, это один час. ну, полчаса - минимум. дальше снижать - раздражать клиента

пока что задача решается кардинально - идём на личный сервер. там уж нас в объёмах никто не ограничит.
но, конечно, при этом возникают многие другие проблемы с безопасностью и контролем за процессами
PM MAIL WWW   Вверх
animegirl
Дата 4.3.2013, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Незнайка на Марсе
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 24.7.2011

Репутация: нет
Всего: нет



bars80080
Цитата

http://dev.mysql.com/doc/refman/5.1/en/par...ning-types.html
CREATE TABLE members (
    firstname VARCHAR(25) NOT NULL,
    lastname VARCHAR(25) NOT NULL,
    username VARCHAR(16) NOT NULL,
    email VARCHAR(35),
    joined DATE NOT NULL
)
PARTITION BY RANGE( YEAR(joined) ) (
    PARTITION p0 VALUES LESS THAN (1960),
    PARTITION p1 VALUES LESS THAN (1970),
    PARTITION p2 VALUES LESS THAN (1980),
    PARTITION p3 VALUES LESS THAN (1990),
    PARTITION p4 VALUES LESS THAN MAXVALUE
);


Цитата

http://dev.mysql.com/doc/refman/5.1/en/par...management.html

Only a single PARTITION BY, ADD PARTITION, DROP PARTITION, REORGANIZE PARTITION, or COALESCE PARTITION clause can be used in a given ALTER TABLE statement. If you (for example) wish to drop a partition and reorganize a table's remaining partitions, you must do so in two separate ALTER TABLE statements (one using DROP PARTITION and then a second one using REORGANIZE PARTITIONS).



--------------------
Скажи миру - НЯ!
PM   Вверх
Akina
Дата 4.3.2013, 17:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



Разумное зерно во всём этом есть. Однако я бы создал бы на основе эвентов надстройку, которая раз в полчаса создаёт новую таблицу, в которую собственно в течение ближайших получаса и сливаются все данные. Для полноценного доступа к данным используется надтаблица на основе merge engine. Та же надстройка одновременно с созданием новой таблицы перестраивает описание надтаблицы, подключая в структуру свежесозданную таблицу, и отцепляя, а затем убивая вместе с данными, устаревшую, полуторачасовой давности, таблицу.
При таком подходе единственное, что теряется - это возможность создания уникальных на уровне надтаблицы индексов (и констрейнтов). Однако всё это с лихвой может окупиться снижением накладнЫх расходов на процесс. При этом логика обслуживания полностью остаётся в рамках сервера, а, значит, прозрачна для клиента.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Fortop
Дата 4.3.2013, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 4
Всего: 42



Цитата(bars80080 @  25.2.2013,  11:24 Найти цитируемый пост)
поиск происходит настолько часто, что инкремент уже накрутил 232 млн записей. мы за месяц без чистки таблицы упираемся в разрешённые объёмы базы данных. и при этом по таблице постоянно происходит поиск по запросу:


Вообще-то под такие объемы можно и нужно свой отдельный сервер под БД. Где все стоны хостера идут лесом.
Что впрочем не отменяет оптимизации.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0659 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.