Вызов sp_tables занимает больше времени, что приводит к блокировке

Мы могли видеть, что во время выполнения нашей 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, каждый из которых занимает много времени.

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


person Gopalakrishnan SA    schedule 10.08.2010    source источник


Ответы (1)


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

person bohica    schedule 10.08.2010
comment
Спасибо бохика! В таком случае, откуда именно вызывается пинг и почему? любезно пролить немного света здесь. Мы также видим вызов sp_tables между выборками. Итак, как мы называем это меньшее количество раз? Являются ли таблицы ('', '', 'NOXXTABLE', '') альтернативным способом узнать, активно ли соединение с БД? потому что нет ничего под названием NOXXTABLE, и результат не возвращается. - person Gopalakrishnan SA; 11.08.2010
comment
Я не могу сказать вам, где ваш код (или код, который вы используете) вызывает ping. Я говорю вам, что когда вызывается метод ping DBI и вы используете DBD::ODBC, он реализует ping, выполняя вызов таблиц для таблицы NOXXTABLE. Аргумент состоит в том, что для этого потребуется обращение к базе данных туда и обратно. - person bohica; 11.08.2010