Разделить таблицы для обработки 100 вставок / секунду? - PullRequest
4 голосов
/ 17 октября 2011

У нас будет база данных MS SQL Server со 100 чтениями в секунду, 2400 вставок равномерно распределяются в течение одного часа, а 14 400 обновлений равномерно распределяются в течение одного часа. В месяц среда может расти с 1,7 млн ​​рядов. Количество столбцов меньше 20.

Мы являемся контейнерным терминалом с 60 кранами, каждый из которых обрабатывает 1 контейнер в данный момент. Атрибуты этих таблиц: a / o: crane_ID (3 символа), container_ID (11 символов), container_unique_number (double), container_status (1 символ) и множество других деталей.

В любой момент максимум 60 записей (один кран обрабатывает один контейнер) будут «активными»; остальное - исторические данные.

Обновления активных записей будут выполняться с использованием 3 столбцов, одно поле (container_unique_number) является уникальным. 100 операций ввода-вывода (все разные процессы от разных клиентов) сканируют все активные записи или определенный активный идентификатор контейнера. Половина процесса в основном посвящена одному конкретному крану.

Вопрос о дизайне, с которым мы сталкиваемся:

  • если мы создадим одну общую таблицу, в которой будут храниться все записи для всех кранов со 100 запросами (различных процессов) для активных записей в секунду, будет ли у нас проблема с производительностью?
  • или мы должны построить отдельную (но идентичную) таблицу для каждого крана и выделить процессы для конкретных таблиц, например, процессы, связанные с краном 1, только читать таблицу CRANE1_blablabla?
  • если мы создадим одну общую таблицу, должны ли мы переместить «завершенные» записи в архивную таблицу? Какой будет максимальный номер завершенных записей, который вы позволили бы сидеть в этой «активной» таблице, прежде чем архивировать ее?

Спасибо, Simon

Ответы [ 2 ]

3 голосов
/ 17 октября 2011

Я бы не стал беспокоиться об этом уровне чтения или записи.В абсолютном выражении она довольно низкая

Создайте таблицу для всех кранов: не кодируйте информацию в имена таблиц.

Если вы хотите удалить архивные записи и вам нужно, чтобы их было вживой стол, то через день 8 дней через какой-то пакетный процесс сделаем это.Если вам не нужны архивные данные в оперативной таблице, немедленно переместите их, в противном случае просто используйте одну таблицу и посмотрите на Медленно изменяющееся измерение , чтобы сохранить все это в одном месте

3 голосов
/ 17 октября 2011

Один стол. Это гораздо больше об оборудовании, чем что-либо еще. Вставьте SSD для журналов и данных, и все будет в порядке.

Разделение на несколько таблиц поможет вам в большинстве компаний, и это несмотря на «предполагаемый» прирост производительности. С полным основанием.

100 операций в секунду, которые вы можете выполнять на настольном оборудовании в эти дни.

...