powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MyISAM vs InnoDB для лог таблицы
4 сообщений из 4, страница 1 из 1
MyISAM vs InnoDB для лог таблицы
    #39508095
pppp27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть таблица в которую записываются параметры:
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: Иногда хочется вообще переписать алгоритм на хранение строк в файлах :-((
...
Рейтинг: 0 / 0
MyISAM vs InnoDB для лог таблицы
    #39508163
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pppp27bigint т.к. планировали с милисекундамиА ничего, что в UNIX TIMESTAMP доли секунды содержатся в дробной части, в то время как BIGINT - это тип, у которого с дробной частью напряжёнка...
pppp27Основная задача быстро(<0.5 сек) найти(до 10000 запросов в секунду)
Код: sql
1.
2.
3.
4.
SELECT * 
FROM  f 
WHERE  `ts` > time AND  `ch` = xxx  
ORDER BY ts LIMIT 0 , 10

Сам запрос определяет требуемый индекс - (ch,ts).
pppp27Иногда хочется вообще переписать алгоритм на хранение строк в файлах :-((Типичная ошибка дилетанта - ему кажется, что он сделает лучше, чем специально предназначенный для этой работы сервер...
...
Рейтинг: 0 / 0
MyISAM vs InnoDB для лог таблицы
    #39508362
pppp27
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ответ.

умножить время на 1000000 практически не заметно в логике работы.
А до некоторой версии MYSQL TIMESTAMP не поддерживал микросекунды.

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

Меня гораздо больше напрягает проблема, что мне надо думать как не создать сложный запрос который заблокирует базу(например удаление млн прошлонедельных записей). А также как реализовать 99,999 надежность - при сбоях и т.д.

Пробовал, для надежности репликацию - тоже случаются регулярные рассинхронизации базы.
...
Рейтинг: 0 / 0
MyISAM vs InnoDB для лог таблицы
    #39508373
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pppp27например удаление млн прошлонедельных записейСекционируйте таблицу. Удаление партиции (точнее, перестройка схемы) - дело почти мгновенное. А потом отключенную таблицу-секцию можно дропнуть, не заморачиваясь на время - она выведена из структуры.

pppp27как реализовать 99,999 надежность - при сбоях и т.д.Кластер, реплики, бэкапы.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / MyISAM vs InnoDB для лог таблицы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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