Оптимизация производительности массивной вставки…?

Дано: SQL Server 2008 R2. Выйти из некоторых ускоренных дисков с данными. Отставание дисков журналов.

Требуется: МНОГО МНОГО МНОГО вставок. Примерно от 10 000 до 30 000 строк в простой таблице с двумя индексами в секунду. Вставки имеют внутренний порядок и не повторяются, поскольку такой порядок вставок не должен поддерживаться в краткосрочной перспективе (т. е. несколько параллельных вставок допустимы).

Пока: накопление данных в очереди. Регулярное (асинхронный пул потоков) опустошение до 1024 записей в рабочий элемент, который ставится в очередь. Threadpool (пользовательский класс) имеет 32 возможных потока. Открывает 32 соединения.

Проблема: производительность снижается в 300 раз .... в секунду вставляются только от 100 до 150 строк. Время ожидания журнала составляет до 40% - 45% времени обработки (мс в секунду) на сервере sql. Загрузка процессора сервера низкая (от 4% до 5% или около того).

Не используется: массовая вставка. Данные должны быть записаны на диск в режиме реального времени. Это в значительной степени процесс архивирования данных, проходящих через систему, но есть запросы, которым требуется регулярный доступ к данным. Я мог бы попробовать сбросить их на диск и использовать массовую загрузку 1-2 раза в секунду .... попробует.

У кого-нибудь есть умная идея? Мой следующий шаг - переместить журнал на быстрый набор дисков (128 ГБ современный ssd) и посмотреть, что будет дальше. Значительный прирост производительности, вероятно, приведет к совершенно другим результатам. Но даже тогда .... вопрос в том, осуществимо ли / что.

Итак, пожалуйста, используйте умные идеи.

5
задан TomTom 10 January 2011 в 20:10
поделиться