Здесь я столкнулся с еще одной сложной проблемой и, как обычно, включил этот сайт, чтобы получить справку.Несколько вставок в один стол
У меня есть один веб-сервис, который выполняет некоторую бизнес-логику и, наконец, вставляет результат в таблицу. Это отлично работает, если мое приложение находится в минимальной нагрузке.
Теперь, когда нагрузка тяжелая, моя инструкция SQL INSERT
вышла из строя. Я увеличил время ожидания подключения и время ожидания команд. Но проблема в том, что существует слишком много потоков, вызывающих один и тот же веб-метод. Чтобы дать некоторый намек, мой номер соединения OPEN sql при большой нагрузке идет до 500+. FYI, я закрыл свою связь после каждой команды.
Теперь, что я должен сделать здесь, чтобы оптимизировать эту вещь здесь?
Я планирую хранить данные в таблице данных и хранить эту таблицу данных в переменной APPLICATION. И через каждые две минуты вставьте данные из этого datatable в базу данных.
У вас, ребята, есть какая-то другая идея, которая может сгладить мою жизнь здесь?
Спасибо
EDIT
Вот более подробно, когда я запускаю вставки запроса в студии управления
парсер SQL Server и время компиляции: процессорного времени = 0 мс, прошедшее время = 0 мс.
SQL Server анализирует и компилирует время: Время процессора = 0 мс, прошедшее время = 11 мс.
Таблица "IndexTable1". Число отсчетов 0, логическое чтение 2, физическое чтение 0, чтение вперед 0, логическое считывание логических чисел 0, физическое считывание вободного числа 0, считывание с чтением 0 ...
Таблица «IndexTable2». Число отсчетов 0, логическое чтение 2, физическое чтение 0, чтение вперед 0, логическое считывание 0, логическое считывание 0, считывание с чтением 0, считывание с открытым номером 0.
Таблица «fulltext_index_docidstatus_171147655». Количество сканирования 0, логический читает 11, физический читает 0, упреждающего чтения читает 0, нескладный логический читает 0, нескладный физических чтений 0, подбросить упреждающего чтения читает 0.
Таблица "MAINTABLE. Количество сканирования 0, логического чтения 28, физический читает 4, упреждающего чтения читает 0, Лоб логического читает 0, Лоб физической читает 0, лоб упреждающего чтения читает 0.
(1 строку (ы) пострадавших)
(1 ряд (-ых) затронутых)
SQL Server Execution Times: Время процессора = 0 мс, прошедшее время = 69 мс.
SQL Server анализирует и компилирует время: Время процессора = 0 мс, прошедшее время = 0 мс.
Время выполнения SQL Server: Время процессора = 0 мс, прошедшее время = 0 мс.
Насколько велика ваша пул соединений? – Jordan
Вам абсолютно необходимо полностью оценить ваше приложение, чтобы определить потенциальные узкие места. Для начала ознакомьтесь с планом объяснения SQL Server, проверьте свои индексы и посмотрите на монитор производительности Windows под нагрузкой, чтобы проверить загрузку ЦП, ОЗУ и дискового ввода-вывода. Посмотрите также на эти ссылки: 1) http://msdn.microsoft.com/en-us/library/ff647768.aspx 2) http://msdn.microsoft.com/en-us/library/ms178071.aspx – paulsm4
Вы просматривали шаблон Producer/Consumer для обработки вставок из общего контекста, таким образом вы могли контролировать количество подключений и использовать SqlBulkCopy. – Lloyd