Проблемы при переходе с 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, спасибо за идею, но к сожалению не помогло...
Выполнил, как Вы просили, на новом сервере. После четверти часа работы запроса прервал его - не думаю, что важно знать, насколько медленно - но значительно быстрее явно не стало.