Проблемы при переходе с MS SQL 2000 на 2005

hrenotavr
Дата: 27.01.2009 14:00:22
Мы обнаружили, что вот этот запрос на новом MS SQL 2005 сервере работает 40 минут,
а на старом MS SQL 2000 сервере всего - 50 секунд.

DECLARE @name varchar(2000), @i int
SET NOCOUNT ON
CREATE TABLE t___(
id int IDENTITY PRIMARY KEY,
name VARCHAR(2000)
)
SET @i = 0

WHILE @i < 100000
BEGIN
INSERT t___ VALUES (REPLICATE('a',2000))
SET @i = @i + 1
END

DROP TABLE t___
SET NOCOUNT OFF


А вот этот запрос на новом сервере отрабатывает за 10 секунд.
А на старом – около трех минут.


DECLARE @name varchar(2000), @i int
SET NOCOUNT ON
CREATE TABLE t___(
id int IDENTITY PRIMARY KEY,
name VARCHAR(2000)
)
SET @i = 0
begin transaction
WHILE @i < 100000
BEGIN
INSERT t___ VALUES (REPLICATE('a',2000))
SET @i = @i + 1
END
commit
DROP TABLE t___
SET NOCOUNT OFF

Означает ли это, что требуется различный синтаксис запросов на 2000 и 2005 SQL для достижения максимальной производительности?

Была идея, что отключен auto commit, но вроде бы все настройки сопоставимы.
Пожалуйста, помогите советом - что делать и как бороться?
Неужели придется весь код оптимизировать под новый сервер?
tpg
Дата: 27.01.2009 14:04:23
hrenotavr
...но вроде бы все настройки сопоставимы...
И авто клозе базы?
hrenotavr
Дата: 27.01.2009 14:04:42
Могу добавить, что и операционная система, и sql-сервер (новый) - 64разрядные, сервер восьмиядерный четырехпроцессорный с 16Гб на борту.

Старый - P4 c 2 Гб памяти - все 32разрядное.
hrenotavr
Дата: 27.01.2009 14:06:28
tpg, если возможно - поясните, где в 2005 сервере посмотреть этот параметр?
tpg
Дата: 27.01.2009 14:29:32
hrenotavr
tpg, если возможно - поясните, где в 2005 сервере посмотреть этот параметр?
В свойствах базы.
tpg
Дата: 27.01.2009 14:33:15
Да, и посмотрите какие автоприращения выставлены для базы на 2005.
hrenotavr
Дата: 27.01.2009 15:46:52
Спасибо за ответы и вопросы!
Автозакрытия всюду одинаково отключены, где посмотреть автоприращения - не понял.
И да, проблема возникает не на уровне конкретных баз, я запрос запускаю на уровне сервера... Настройки баз, понимаю, могут быть разные, но запрос выглядит как servername.master - sqlquery.sql
hrenotavr
Дата: 27.01.2009 15:50:35
Нашел про авторасширение. Всюду указано "10%, рост не ограничен".
Crimean
Дата: 27.01.2009 17:17:35
а сделайте

SET ARITHABORT OFF
GO
ваш тест
hrenotavr
Дата: 28.01.2009 15:46:23
Crimean, спасибо за идею, но к сожалению не помогло...
Выполнил, как Вы просили, на новом сервере. После четверти часа работы запроса прервал его - не думаю, что важно знать, насколько медленно - но значительно быстрее явно не стало.