Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Падение производительности при переходе на SQL 2000
|
|||
|---|---|---|---|
|
#18+
Ситуация: Переход с WinNT/SQL7.0 на Win2000/SQL2000 Выполняется процедура заполнения таблицы: 1-я конфигурация - < сек, 2-я - 32 сек. Памяти вагон (SQL не лимитирован) процессор в нуле. При детальном анализе увидел, что тормозит INSERT; чего то ждёт??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2001, 08:49 |
|
||
|
Падение производительности при переходе на SQL 2000
|
|||
|---|---|---|---|
|
#18+
Может быть поподробнее про процедуру и про то, куда заливаете. Например, интересно также, как обстоят дела со статистикой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2001, 12:28 |
|
||
|
Падение производительности при переходе на SQL 2000
|
|||
|---|---|---|---|
|
#18+
Запуск из 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2001, 14:03 |
|
||
|
Падение производительности при переходе на SQL 2000
|
|||
|---|---|---|---|
|
#18+
Может, это, конечно, и непринципиально, но я бы отказался от использования курсора - его применение в данном случае совершенно неоправданно. Все тело процедуры можно преобразовать во что-то вроде: С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 Попробуйте, это может помочь. Кроме того, последуйте совету Александра Гладченко, и проверьте, как обстоят дела со статистикой у таблиц. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2001, 08:01 |
|
||
|
Падение производительности при переходе на SQL 2000
|
|||
|---|---|---|---|
|
#18+
Спосибо за предложения по оптимизации, однако, ВОПРОС СОСТОИТ В ТОМ!!! почему WINNT/SQL7.0 - Быстро, а WIN2000/SQL2000 - Медленно ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2001, 08:12 |
|
||
|
Падение производительности при переходе на SQL 2000
|
|||
|---|---|---|---|
|
#18+
У меня было замечено такое падение производительности при запросах вида INSERT INTO table_1 SELECT ........ FROM table_1,table_2,table_3 WHERE ................... если у таблицы table_1 много индексов, то при вставке в таблицу table_1 данных, выбираемых из нее-же, QA показывает совершенно невменямый план, причем 80-90 % стоимости на обработку каждого индекса, план строит временные области , применяет сортировку и т.д. и все это по отношению не к данным а к индексам. Замедление порядка 10-50 раз ! На 7 такого не было. пришлось обходить данную ситуацию промежуточной временной таблицей, тоесть данные во временную таблицу, а из нее в исходную. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2001, 11:01 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32016695&tid=1825070]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
33ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
36ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 306ms |

| 0 / 0 |
