powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Падение производительности при переходе на SQL 2000
6 сообщений из 6, страница 1 из 1
Падение производительности при переходе на SQL 2000
    #32016623
Volodjkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ситуация:
Переход с WinNT/SQL7.0 на Win2000/SQL2000
Выполняется процедура заполнения таблицы: 1-я конфигурация - < сек,
2-я - 32 сек.
Памяти вагон (SQL не лимитирован) процессор в нуле.
При детальном анализе увидел, что тормозит INSERT; чего то ждёт???
...
Рейтинг: 0 / 0
Падение производительности при переходе на SQL 2000
    #32016633
Фотография Александр Гладченко
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может быть поподробнее про процедуру и про то, куда заливаете. Например, интересно также, как обстоят дела со статистикой?
...
Рейтинг: 0 / 0
Падение производительности при переходе на SQL 2000
    #32016640
Volodjkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запуск из Query Analyzer'а:
truncate table inetlog
exec sp_LOG_FilePars

Процкдура sp_LOG_FilePars:

REATE PROCEDURE sp_LOG_FilePars AS

declare @Line varchar(2048 ),
@Tail varchar(2048 ),
@s1 varchar(250),
@s2 varchar(250),
@ClientHost varchar(20),
@UserName varchar(50),
@SrvcName varchar(10),
@ServerName varchar(50),
@ServerIP varchar(20),
@Operation varchar(10),
@Target varchar(250),
@Referer varchar(250)

declare @LogDate Datetime

declare @n int,
@Cnt int,
@Servicestatus int,
@BytesSent int,
@BytesRecvd int

SET XACT_ABORT ON
SET NOCOUNT ON

Delete From Load_buffer Where DataLength(Line)<=9

Declare LogData CURSOR FOR
Select Line From Load_Buffer

OPEN LogData

FETCH LogData INTO @Line
WHILE @@FETCH_STATUS = 0 Begin
If Left(@Line, 1) = '#' GoTo SkipLine
Set @Tail = @Line + ' '

Set @n = CHARINDEX(' ', @Tail)
Set @s1 = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )
Set @n = CHARINDEX(' ', @Tail)
Set @s2 = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )
Set @LogDate = Convert(Datetime, @s1+' '+@s2,102)

Set @n = CHARINDEX(' ', @Tail)
Set @ClientHost = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @UserName = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @SrvcName = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @ServerName = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @ServerIP = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @Operation = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @Target = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @Servicestatus = Convert(int, Left(@Tail, @n - 1))
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @BytesSent = Convert(int, Left(@Tail, @n - 1))
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @BytesRecvd = Convert(int, Left(@Tail, @n - 1))
Set @Tail = Substring(@Tail,@n+1, 2048 )

Set @n = CHARINDEX(' ', @Tail)
Set @Referer = Left(@Tail, @n - 1)
Set @Tail = Substring(@Tail,@n+1, 2048 )

--Select @ClientHost, @UserName, @SrvcName, @ServerName, @ServerIP,@Operation, @Target, @Servicestatus, @BytesSent, @BytesRecvd, @Referer

Insert Into INetLog (LogTime, ClientHost, UserName, Service, ServerName, ServerIP,
Operation, Target, ServiceStatus, BytesSent, BytesRecvd, Referer)
Values (@LogDate, @ClientHost, @UserName, @SrvcName, @ServerName, @ServerIP,
@Operation, @Target, @Servicestatus, @BytesSent, @BytesRecvd, @Referer)

SkipLine:
FETCH LogData INTO @Line
End

CLOSE LogData
DEALLOCATE LogData

SET NOCOUNT OFF
SET XACT_ABORT OFF

GO
...
Рейтинг: 0 / 0
Падение производительности при переходе на SQL 2000
    #32016686
Alexander+Stepanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может, это, конечно, и непринципиально, но я бы отказался от использования курсора - его применение в данном случае совершенно неоправданно. Все тело процедуры можно преобразовать во что-то вроде:

СREATE PROCEDURE sp_LOG_FilePars AS

SET XACT_ABORT ON
SET NOCOUNT ON

Delete From Load_buffer Where DataLength(Line)<=9

INSERT INTO INetLog (LogTime, ClientHost, UserName, Service, ServerName, ServerIP,
Operation, Target, ServiceStatus, BytesSent, BytesRecvd, Referer)
Select
/******************************************************************************
Здесь будет вставка полей - судя по тому, что никаких разветвлений в вычислении
переменных нет, все Set'ы можно преобразовать к списку Select
******************************************************************************/
From
Load_Buffer
WHERE
NOT Left(Line, 1) = '#' --а это ваш goto

GO

Попробуйте, это может помочь. Кроме того, последуйте совету Александра Гладченко, и проверьте, как обстоят дела со статистикой у таблиц.
...
Рейтинг: 0 / 0
Падение производительности при переходе на SQL 2000
    #32016688
Volodjkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спосибо за предложения по оптимизации, однако, ВОПРОС СОСТОИТ В ТОМ!!!
почему WINNT/SQL7.0 - Быстро, а WIN2000/SQL2000 - Медленно ???
...
Рейтинг: 0 / 0
Падение производительности при переходе на SQL 2000
    #32016695
Alexey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня было замечено такое падение производительности при запросах вида

INSERT INTO table_1
SELECT ........
FROM table_1,table_2,table_3
WHERE ...................

если у таблицы table_1 много индексов, то при вставке в таблицу table_1 данных, выбираемых из нее-же, QA показывает совершенно невменямый план, причем 80-90 % стоимости на обработку каждого индекса, план строит временные области , применяет сортировку и т.д. и все это по отношению не к данным а к индексам.
Замедление порядка 10-50 раз !

На 7 такого не было.
пришлось обходить данную ситуацию промежуточной временной таблицей, тоесть данные во временную таблицу, а из нее в исходную.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Падение производительности при переходе на SQL 2000
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]