Вызов sp_tables занимает больше времени, что вызывает блокировку - PullRequest
3 голосов
/ 10 августа 2010

Мы могли видеть, что во время выполнения нашей программы perl, которая в основном подключается к SQLserver для вставки / удаления / обновления данных, ниже очень часто вызывается sp_tables @table_name='NOXXTABLE'.Мы видим, что для многих SPID вызов происходит много раз.

При запуске sp_tables @table_name='NOXXTABLE' в SQLserver мы видим, что он не возвращает строк.Обычно он завершается за миллисекунды.

Но после профилирования, когда мы проверяли время выполнения конкретного SQLText(sp_tables @table_name='NOXXTABLE') для блокирующих SPID, оно варьировалось от 0 секунд до 1 минуты и вызывалось очень очень часто в течениетот же SPID.То же самое происходит со многими SPID, которые снова имеют несколько вызовов на sp_tables, каждый из которых занимает много времени.

Есть ли какое-нибудь решение, чтобы выйти из этого?

1 Ответ

4 голосов
/ 10 августа 2010

NOXXTABLE используется методом ping DBD :: ODBC.Если вы вызываете метод ping DBI с помощью DBD :: ODBC, он создает таблицы ('', '', 'NOXXTABLE', '').Если вы хотите сделать это меньше, вызовите ping less или переопределите метод ping DBD :: ODBC другим кодом, более подходящим для вашей системы.

...