Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
MyISAM vs InnoDB для лог таблицы
|
|||
|---|---|---|---|
|
#18+
Есть таблица в которую записываются параметры: ts - bigint юникс время(bigint т.к. планировали с милисекундами) ch - int номер датчика param - varchar(255) тестовый параметр все параметры индекс Записывается каждые 1-10 сек по 100 строк. Сейчас 12 млн строк на 2 Гбайта. Основная задача быстро(<0.5 сек) найти(до 10000 запросов в секунду) SELECT * FROM f WHERE `ts` > time AND `ch` = xxx ORDER BY ts LIMIT 0 , 10 Подскажите как оптимизировать работу? По идее InnoDB лучше т.к. Транзакционный движек, Блокировка на уровне строк. Основные проблемы 1) При внеплановой перезагрузке сервера рушиться таблица и ее восстановление занимает невообразимое время(часы) когда innodb хранился в одном файле вообще пришлось грохнуть все таблицы! 2) при очистке от старых записей(старше х дней) блокируется таблица на большое время(сейчас решается удалением по 1000 строчек). Какой тип таблицы лучше и как оптимизировать работу? Или вообще что посмотреть? Например сделать param фиксированной длинны? PS: Иногда хочется вообще переписать алгоритм на хранение строк в файлах :-(( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 18:53 |
|
||
|
MyISAM vs InnoDB для лог таблицы
|
|||
|---|---|---|---|
|
#18+
pppp27bigint т.к. планировали с милисекундамиА ничего, что в UNIX TIMESTAMP доли секунды содержатся в дробной части, в то время как BIGINT - это тип, у которого с дробной частью напряжёнка... pppp27Основная задача быстро(<0.5 сек) найти(до 10000 запросов в секунду) Код: sql 1. 2. 3. 4. Сам запрос определяет требуемый индекс - (ch,ts). pppp27Иногда хочется вообще переписать алгоритм на хранение строк в файлах :-((Типичная ошибка дилетанта - ему кажется, что он сделает лучше, чем специально предназначенный для этой работы сервер... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.08.2017, 21:38 |
|
||
|
MyISAM vs InnoDB для лог таблицы
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответ. умножить время на 1000000 практически не заметно в логике работы. А до некоторой версии MYSQL TIMESTAMP не поддерживал микросекунды. Но вопрос совсем не об этом. Вопрос в опыте реализации работы базы в которую напихивают большое кол-во данных с минимальной логикой обработки и критическим временем обработки. Даже не знаю какую статью почитать... Меня гораздо больше напрягает проблема, что мне надо думать как не создать сложный запрос который заблокирует базу(например удаление млн прошлонедельных записей). А также как реализовать 99,999 надежность - при сбоях и т.д. Пробовал, для надежности репликацию - тоже случаются регулярные рассинхронизации базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2017, 13:11 |
|
||
|
MyISAM vs InnoDB для лог таблицы
|
|||
|---|---|---|---|
|
#18+
pppp27например удаление млн прошлонедельных записейСекционируйте таблицу. Удаление партиции (точнее, перестройка схемы) - дело почти мгновенное. А потом отключенную таблицу-секцию можно дропнуть, не заморачиваясь на время - она выведена из структуры. pppp27как реализовать 99,999 надежность - при сбоях и т.д.Кластер, реплики, бэкапы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.08.2017, 13:26 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=68&tid=1830467]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
31ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 17ms |
| total: | 127ms |

| 0 / 0 |
