медленный select на ms sql

olegkin
Уже с Приветом
Posts: 2044
Joined: 31 Jul 2000 09:01
Location: NJ, USA

медленный select на ms sql

Post by olegkin »

Совершенно глупая ситуация. Есть два database server, один старый и медленный, другой - новый и навороченный :)
Есть база данных, для чистоты эксперимента - одинаковая. Делаем простой запрос в query analyzer:

select * from rtsb.m where date_created > '11/1/03' and owner_id = 113

получаем ответ за 2 секунды на старом медленном сервере и за 36 секунд на новом.

В таблице есть несколько полей ntext. Если их убрать из запроса, то на обоих серверах все быстро становится.

Куда смотреть чтобы сделать новый сервер еще и быстрым ? :)

Да, софт немного отличается. на старом сервере не ставили сервис паки со времен царя гороха, на новом - по крайней какой-то ставили годичной давности.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

А что говорит execution plan ?
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
olegkin
Уже с Приветом
Posts: 2044
Joined: 31 Jul 2000 09:01
Location: NJ, USA

Post by olegkin »

После того как успокоился от такой несправедливости вижу, что от запроса дело не зависит, то есть в простейшем случае select * from rtsb.m дает примерно тот же результат. Разница в том, что на старом сервере первый запрос делается относительно медленно, все последующие такие же запросы делаются быстро. На новом сервере всегда одинаково медленно.
Execution plan говорит что 99% уходит на clustered index scan. В индекс входит три поля int. Да, речь идет о 10000 записях, памяти итд везде достаточно.

Такое ощущение что где-то есть буфер, который слишком маленький на новом сервере, или кеширование, которое выключено.
User avatar
Dmitry67
Уже с Приветом
Posts: 28294
Joined: 29 Aug 2000 09:01
Location: SPB --> Gloucester, MA, US --> SPB --> Paris

Post by Dmitry67 »

Не ограничена ли серверу память на новом сервере ? (смотреть в пропертях сервера)
Не страдает ли он от page faults при конкуренции за память с другими процессами ?
Нет ли на сервере другой sql-активности, "выбивающией" кэш ?
не летит ли вас RAID "на одном крыле" ? Скопируйте в nul файл одного размера на старом сервере и на новом кстати.
Зарегистрированный нацпредатель, удостоверение N 19719876044787 от 22.09.2014
User avatar
IA72
Уже с Приветом
Posts: 956
Joined: 04 Mar 2002 10:01

Post by IA72 »

olegkin wrote:После того как успокоился от такой несправедливости вижу, что от запроса дело не зависит, то есть в простейшем случае select * from rtsb.m дает примерно тот же результат. Разница в том, что на старом сервере первый запрос делается относительно медленно, все последующие такие же запросы делаются быстро. На новом сервере всегда одинаково медленно.
Execution plan говорит что 99% уходит на clustered index scan. В индекс входит три поля int. Да, речь идет о 10000 записях, памяти итд везде достаточно.

Такое ощущение что где-то есть буфер, который слишком маленький на новом сервере, или кеширование, которое выключено.


Выйти-войти, в смысле пересоздать индекс пробовали?
olegkin
Уже с Приветом
Posts: 2044
Joined: 31 Jul 2000 09:01
Location: NJ, USA

Post by olegkin »

Я знал что это глупая проблема, но не знал что настолько. Перепробовал все что рекомендовали, новый сервер бьет старый по всем параметрам. Спасибо за рекомендации, хотя надеюсь на будущее они не пригодятся :)

Проблема была в query analyzer на новом сервере, который общался с сервером через named pipes вместо tcp/ip как на других рабочих местах.
К сожалению, новый сервер стоит на коло, и с ним общаемся через T1,
в отличие от локального старого. Было бы все в локальной сети, быстрее бы расскусил эту проблему :)

Return to “Вопросы и новости IT”