У нас будет база данных 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