У меня есть хранимая процедура, которую я использую, чтобы заполнить таблицу примерно 60 столбцами. Я genereated 1000 заявлений EXEC, которые выглядят следующим образом:Как запустить хранимую процедуру 1000 раз
exec PopulateCVCSTAdvancement 174, 213, 1, 0, 7365
exec PopulateCVCSTAdvancement 174, 214, 1, 0, 7365
exec PopulateCVCSTAdvancement 175, 213, 0, 0, 7365
Каждый раз, когда хранимая процедура будет вставить в любом месте от 1 до 3000 записей (обычно около 2000 записей). На «сервере» работает настольное оборудование с 4 гигабайтами доступной памяти на серверной ОС. Проблема в том, что после первых 10-15 выполнения в среднем по 1-2 секунды каждый раз, следующие 10-15, кажется, никогда не заканчиваются. Правильно ли я делаю это? Как мне это сделать?
Спасибо! Топ 10 официантов:
LAZYWRITER_SLEEP
SQLTRACE_INCREMENTAL_FLUSH_SLEEP
REQUEST_FOR_DEADLOCK_SEARCH
XE_TIMER_EVENT
FT_IFTS_SCHEDULER_IDLE_WAIT
CHECKPOINT_QUEUE
LOGMGR_QUEUE
SLEEP_TASK
BROKER_TO_FLUSH
BROKER_TASK_STOP
Вам нужно выяснить, что такое узкое место. Что говорит DMST waitstats? –
В этой таблице содержится более 400 строк. Что-нибудь конкретное я должен опубликовать? –
цифры в нем кумулятивные, поэтому сделайте снимок во временную таблицу, затем выполните действие, которое генерирует длительное ожидание, а затем сравните два, чтобы увидеть, какие типы ожидания больше всего увеличились. (Или просто сбросьте цифры в DMV до 0 с помощью «DBCC SQLPERF» («sys.dm_os_wait_stats», CLEAR); «если у вас нет инструментов мониторинга, полагающихся на него) –