Дано: SQL Server 2008 R2. Закройте некоторые диски с данными о скорости. Журнал дисков отстает.
Обязательно: МНОГО МНОГО МНОГО МНОГО вкладышей. Как от 10.000 до 30.000 строк в простую таблицу с двумя индексами в секунду. Вставки имеют внутренний порядок и не будут повторяться, так как такой порядок вставок не должен поддерживаться в краткосрочной перспективе (то есть несколько параллельных вставок в порядке).
Пока: накопление данных в очереди. Регулярно (асинхронный пул потоков) очищает до 1024 записей в рабочем элементе, который попадает в очередь. Threadpool (пользовательский класс) имеет 32 возможных потока. Открывает 32 соединения.
Проблема: производительность снижается с коэффициентом 300 .... вставляется только от 100 до 150 строк в секунду. Время ожидания журнала составляет до 40% - 45% времени обработки (мс в секунду) на сервере sql. Низкая загрузка ЦП сервера (от 4% до 5% или около того).
Не используется: массовая вставка. Данные должны быть записаны на диск в режиме реального времени. Это в значительной степени процесс архивации данных, проходящих через систему, но есть запросы, которым требуется регулярный доступ к данным. Я мог бы попытаться записать их на диск и использовать массовую загрузку 1-2 раза в секунду ... попробую.
Кто-нибудь умная идея? Мой следующий шаг - переместить журнал в набор быстрых дисков (128 ГБ современный ssd) и посмотреть, что произойдет потом. Значительное повышение производительности, вероятно, изменит ситуацию. Но даже тогда ... вопрос в том, возможно ли это.
Так что, пожалуйста, используйте умные идеи.