Homero Rivera
Вы упомянули 60~70 запросов, созданных в данный момент это в секунду?
Если он установлен на достаточно мощном mcachine, SQL Server достаточно хорош.
Однако нам нужно немного подумать "из коробки" и перестать беспокоиться о проблеме ведения журнала, а начать думать о чистой проблеме эффективности SQL Server.
Храните все строки в таблице кучи; никаких индексов, никакой кластеризации, потому что требуется работа для записи как в таблицу, так и в индекс. Вы просто хотите сократить время записи SQL Server с помощью кучи.
.. Пусть эта куча использует один достаточно большой файл данных... Может быть, даже на одном сервере, посвященном этому, в зависимости от фактической рабочей нагрузки.
Целевая таблица кучи должна иметь столбец, указывающий, была ли строка "обработана" или "передана"; столбец типа bit.
Есть задание или процесс, который выполняется каждые столько-то секунд, запрограммированный на:
1. обновите все строки в таблице кучи до "перенесено".
2. скопируйте эти строки в более структурированную таблицу (возможно, в другой базе данных), которая имеет индексы и все такое; это таблица, которую вы хотите использовать для запросов, создания отчетов и фильтрации.
3. Удалите обработанные строки из кучи.
В принципе, вы должны держать таблицу кучи короткой и не запускать на ней ничего другого (никаких отчетов).
Это всего лишь эмпирические правила, основные принципы.
Я не смог поэкспериментировать со следующей рекомендацией, но стоит посмотреть:
Не используйте типы данных переменной длины (varchar, nvarchar, varbinary); все строки должны быть фиксированной длины и, по возможности, пропорциональны размеру страниц SQL Server (см. Понимание страниц и экстентов[^]
Соответствие размеру страницы заключается в том, чтобы избежать фрагментации, которая может быть реальной проблемой с кучами. Кучи SQL Server и их фрагментация-простой разговор[^]
Удачи