таблица секционирования mysql с 3b записями в год - PullRequest
0 голосов
/ 04 ноября 2019

Что является хорошим подходом для обработки таблицы 3b rec, где одновременное чтение / запись очень часто происходит в течение нескольких дней?

Сервер Linux, работающий под управлением MySQL v8.0.15.

У меня есть эта таблица, которая будет регистрировать историю данных устройства. Таблица должна хранить свои данные в течение одного года, возможно, двух лет. Темпы роста очень высоки: 8 175 000 рек / день (1 месяц = ​​245 миллионов долларов, 1 год = 2,98 миллиарда долларов). Ожидается, что в случае роста числа устройств таблица сможет справиться с этим. Чтение таблицы часто происходит в течение последних нескольких дней, более чем через неделю, после чего эта частота значительно падает.

Существует несколько одновременных подключений для чтения и записи в этой таблице, и цель для r / w довольно близка кдруг друга, поэтому взаимоблокировка / блокировка таблицы происходят, но об этом позаботились (повтор, небольшой размер транзакции).

Сейчас я использую ежедневное разбиение, так как чтение едва ли охватывает> 1 раздел. Однако будет слишком много разделов для хранения данных за 1 год.

CREATE TABLE table1(
  group_id TINYINT NOT NULL,
  DeviceId VARCHAR(10) NOT NULL,
  DataTime DATETIME NOT NULL, 
  first_log DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP(), 
  first_res TINYINT(1) NOT NULL DEFAULT 0, 
  last_log DATETIME NULL, 
  last_res TINYINT(1) NULL, 

  PRIMARY KEY(group_id, DeviceId, DataTime),
  INDEX(group_id, DataTime)
);

Итак, вопрос:

  1. Согласитесь с Блогом RickJames , это нехорошая идея иметь> 50 разделов в таблице, но если раздел ставится ежемесячно, в одном разделе будет 245 млн. записей. Какой диапазон разделов лучше всего используется здесь? Ведется ли блог RJ с текущей версией mysql?
  2. Хорошая ли идея оставить таблицу не разбитой на разделы? (индекс работает хорошо atm)

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

...