Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 writelog  [new]
karu
Member

Откуда:
Сообщений: 34
Здравствуйте, столкнулся с интересной проблемой, измеряю производительность серверов скриптом:

create table pSwiftLine11 (SPID numeric(15,0),Number int)
 go
  create index X1 on pSwiftLine11 (SPID,Number)
   go

set nocount on
go
select Convert(varchar(50),getdate(),109)
declare @i int
select @i = 0
--begin tran
while @i < 40000
begin
  insert into pSwiftLine11 (SPID,Number) values (@@spid,@i)
  select @i = @i + 1
end
--commit tran
select Convert(varchar(50),getdate(),109)
go
set nocount off
go

drop table pSwiftLine11
go

Тестирую 3 ms sql server Microsoft SQL Server 2005 - 9.00.5000.00 (X64) Dec 10 2010 10:38:40 Copyright (c) 1988-2005 Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 (Build 7601: Service Pack 1)
Везде windows 2008r2 со всеми апдейтами

Первый:
DELL blade 620m 128GB оперативной памяти, 24 ядра, файл журнала транзакций на локальном raid 10 из 4-х дисков 15к SAS
Время выполнения скрипта- 3 сек.

Второй:
Рабочая станция 16GB оперативной памяти, 4 ядра, файл журнала транзакций на локальном диске sata wdc wd500aakx
Время выполнения скрипта- 8 сек.

Третий:
DELL R820m 256GB оперативной памяти, 24 ядра, файл журнала транзакций на диске, подключенному по FC, схд dell compellent 96 шпинделей SAS + 12 ssd.
Время выполнения скрипта- 30 сек!!!

Кэш на запись включен на всех трех машинах.
Работа скрипта везде "упирается" в writelog.
Прошу помочь разобраться, почему на самом мощном сервере 3 с самой производительной СХД (sqlio при последовательной записи по 8КБ показывает до 15 000 iops) скрипт работает так плохо.

Сообщение было отредактировано: 24 апр 14, 13:55
24 апр 14, 13:49    [15928987]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
writelog
DELL R820m 256GB оперативной памяти, 24 ядра, файл журнала транзакций на диске, подключенному по FC, схд dell compellent 96 шпинделей SAS + 12 ssd.
Какой рейд и из сколки дисков на массиве под логом?

writelog
Кэш на запись включен на всех трех машинах.
А на массиве схд?

Ну и результат вот этого покажите (при условии, что на сервере больше нет другой активности):

create table pSwiftLine11 (SPID numeric(15,0),Number int)
 go
  create index X1 on pSwiftLine11 (SPID,Number)
   go

set nocount on
go
select Convert(varchar(50),getdate(),109)
declare @i int
select @i = 0
--begin tran

DBCC SQLPERF ('sys.dm_os_wait_stats', CLEAR);

while @i < 40000
begin
  insert into pSwiftLine11 (SPID,Number) values (@@spid,@i)
  select @i = @i + 1
end
--commit tran
select Convert(varchar(50),getdate(),109)
go
set nocount off
go

select top 50
    *
from sys.dm_os_wait_stats    
order by wait_time_ms desc
go
drop table pSwiftLine11
go


Сообщение было отредактировано: 24 апр 14, 14:03
24 апр 14, 14:02    [15929096]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
пробовали разные типы raid 10 и raid 5 из огромного количества шпинделей, сейчас лог на raid 10 SAS 96 дисков, везде упирались в 1000 iops при writelog.
кэш на схд включен, при выключении результаты на порядок хуже.
На сервере нет другой активности, результат:





--------------------------------------------------
Apr 24 2014 2:15:38:747PM

DBCC execution completed. If DBCC printed error messages, contact your system administrator.

--------------------------------------------------
Apr 24 2014 2:16:08:580PM

wait_type                                                    waiting_tasks_count  wait_time_ms         max_wait_time_ms     signal_wait_time_ms
------------------------------------------------------------ -------------------- -------------------- -------------------- --------------------
LAZYWRITER_SLEEP 56 30076 998 0
WRITELOG 40003 23400 15 748
ASYNC_NETWORK_IO 1 46 46 0
SLEEP_BPOOL_FLUSH 30 31 15 0
ASYNC_IO_COMPLETION 0 0 0 0
IO_COMPLETION 0 0 0 0
TRAN_MARKLATCH_DT 0 0 0 0
TRAN_MARKLATCH_EX 0 0 0 0
TRAN_MARKLATCH_UP 0 0 0 0
TRAN_MARKLATCH_SH 0 0 0 0
TRAN_MARKLATCH_KP 0 0 0 0
TRAN_MARKLATCH_NL 0 0 0 0
PAGEIOLATCH_DT 0 0 0 0
PAGEIOLATCH_EX 2 0 0 0
PAGEIOLATCH_UP 2 0 0 0
PAGEIOLATCH_SH 0 0 0 0
PAGEIOLATCH_KP 0 0 0 0
PAGEIOLATCH_NL 0 0 0 0
PAGELATCH_DT 0 0 0 0
PAGELATCH_EX 0 0 0 0
PAGELATCH_UP 0 0 0 0
PAGELATCH_SH 0 0 0 0
PAGELATCH_KP 0 0 0 0
PAGELATCH_NL 0 0 0 0
LATCH_DT 0 0 0 0
LATCH_EX 0 0 0 0
LATCH_UP 0 0 0 0
LATCH_SH 0 0 0 0
LATCH_KP 0 0 0 0
LATCH_NL 0 0 0 0
LCK_M_RX_X 0 0 0 0
LCK_M_RX_U 0 0 0 0
LCK_M_RX_S 0 0 0 0
LCK_M_RIn_X 0 0 0 0
LCK_M_RIn_U 0 0 0 0
LCK_M_RIn_S 0 0 0 0
LCK_M_RIn_NL 0 0 0 0
LCK_M_RS_U 0 0 0 0
LCK_M_RS_S 0 0 0 0
LCK_M_BU 0 0 0 0
LCK_M_UIX 0 0 0 0
LCK_M_SIX 0 0 0 0
LCK_M_SIU 0 0 0 0
LCK_M_IX 0 0 0 0
LCK_M_IU 0 0 0 0
LCK_M_IS 0 0 0 0
LCK_M_X 0 0 0 0
LCK_M_U 0 0 0 0
LCK_M_S 0 0 0 0
LCK_M_SCH_M 0 0 0 0

(50 row(s) affected)

Сообщение было отредактировано: 24 апр 14, 14:29
24 апр 14, 14:17    [15929210]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
23 секунды - многовато, тем более для такого кол-ва шпинделей.

Мониторьте очередь/latency к массиву во время выполнения скрипта.
24 апр 14, 14:29    [15929307]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
disk queue 0.5, latency 0.1, массив "простаивает", запись идет со скоростью 1мб/сек.
sql server просто не использует мощность схд(
24 апр 14, 14:40    [15929391]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
Попробовал установить ms sql 2008 r2 и ms sql 2012, во всех версиях скрипт работает около 30 сек, что делать- не знаю.
writelog
24 апр 14, 17:23    [15931010]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
MS SQL тут вряд ли при делах. Скорее всего что-то с ОС (дрова?) и / или схд.
24 апр 14, 17:34    [15931090]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
stavgreengo
Member

Откуда:
Сообщений: 710
Гавриленко Сергей Алексеевич
MS SQL тут вряд ли при делах. Скорее всего что-то с ОС (дрова?) и / или схд.

для проверки оного можно создать RAM-диск и переместить туда ldf
24 апр 14, 17:39    [15931143]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
автор
disk queue 0.5, latency 0.1, массив "простаивает", запись идет со скоростью 1мб/сек.

Не похоже, что проблема в сиквеле. Попробуйте другие файлы копировать или тестовые утилитки погоняйте на скорость хранилища.
Может там оптика кривая или драйверы...
24 апр 14, 18:47    [15931512]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
karu,

Каков размер файла лога в конце теста?
24 апр 14, 23:24    [15932585]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
NickAlex66,

Пробовал создавать БД с начальным размером лога 500МБ и 1МБ, разницы в результатах не заметил.
При 1 мб вырастает на пару МБ вроде при full recovery model.
В simple model скрипт работает с той же скоростью.
25 апр 14, 10:13    [15933535]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
Погонял sqlio с разными размерами блока, вроде проседания нет:

+
C:\Program Files (x86)\SQLIO>sqlio -kW -t8 -s200 -o8 -frandom -b1 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads writing for 200 secs to file m:\TestFile.dat
using 1KB random IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 28214.40
MBs/sec: 27.55
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 1
Max_Latency(ms): 55
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 0 43 47 4 4 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kR -t8 -s200 -o8 -frandom -b1 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads reading for 200 secs from file m:\TestFile.dat
using 1KB random IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 59589.10
MBs/sec: 58.19
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 0
Max_Latency(ms): 66
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 41 59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kW -t8 -s200 -o8 -fsequential -b4 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads writing for 200 secs to file m:\TestFile.dat
using 4KB sequential IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 26330.10
MBs/sec: 102.85
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 1
Max_Latency(ms): 51
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 0 29 64 3 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kR -t8 -s200 -o8 -fsequential -b4 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads reading for 200 secs from file m:\TestFile.dat
using 4KB sequential IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 54521.00
MBs/sec: 212.97
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 0
Max_Latency(ms): 40
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 28 70 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kW -t8 -s200 -o8 -frandom -b512 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads writing for 200 secs to file m:\TestFile.dat
using 512KB random IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 938.99
MBs/sec: 469.49
latency metrics:
Min_Latency(ms): 21
Avg_Latency(ms): 67
Max_Latency(ms): 112
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kR -t8 -s200 -o8 -frandom -b512 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads reading for 200 secs from file m:\TestFile.dat
using 512KB random IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 1569.66
MBs/sec: 784.83
latency metrics:
Min_Latency(ms): 14
Avg_Latency(ms): 40
Max_Latency(ms): 86
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kW -t8 -s200 -o8 -fsequential -b2 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads writing for 200 secs to file m:\TestFile.dat
using 2KB sequential IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 28618.14
MBs/sec: 55.89
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 1
Max_Latency(ms): 30
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 0 40 54 3 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kR -t8 -s200 -o8 -fsequential -b2 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads reading for 200 secs from file m:\TestFile.dat
using 2KB sequential IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 65090.41
MBs/sec: 127.12
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 0
Max_Latency(ms): 21
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 69 30 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kW -t8 -s200 -o8 -frandom -b8 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads writing for 200 secs to file m:\TestFile.dat
using 8KB random IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 22218.89
MBs/sec: 173.58
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 2
Max_Latency(ms): 35
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 0 18 59 11 2 2 3 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kR -t8 -s200 -o8 -frandom -b8 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads reading for 200 secs from file m:\TestFile.dat
using 8KB random IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 62829.49
MBs/sec: 490.85
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 0
Max_Latency(ms): 78
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 51 48 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kW -t8 -s200 -o8 -fsequential -b64 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads writing for 200 secs to file m:\TestFile.dat
using 64KB sequential IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 6596.35
MBs/sec: 412.27
latency metrics:
Min_Latency(ms): 0
Avg_Latency(ms): 9
Max_Latency(ms): 63
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 0 0 0 0 2 19 31 25 4 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 8

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...

C:\Program Files (x86)\SQLIO>sqlio -kR -t8 -s200 -o8 -fsequential -b64 -BH -LS m:\TestFile.dat
sqlio v1.5.SG
using system counter for latency timings, 14318180 counts per second
8 threads reading for 200 secs from file m:\TestFile.dat
using 64KB sequential IOs
enabling multiple I/Os per thread with 8 outstanding
buffering set to use hardware disk cache (but not file cache)
using current size: 40000 MB for file: m:\TestFile.dat
initialization done
CUMULATIVE DATA:
throughput metrics:
IOs/sec: 12442.26
MBs/sec: 777.64
latency metrics:
Min_Latency(ms): 1
Avg_Latency(ms): 4
Max_Latency(ms): 39
histogram:
ms: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24+
%: 0 0 0 0 41 58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

C:\Program Files (x86)\SQLIO>timeout /T 30

Waiting for 0 seconds, press a key to continue ...


Сообщение было отредактировано: 25 апр 14, 12:08
25 апр 14, 10:19    [15933567]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
mag2000
Member

Откуда:
Сообщений: 187
karu,
Как уже писал Гавриленко Сергей Алексеевич , возможно какие-то проблемы в самой ОС, или с оборудование сервера?
Посмотрите внимательнее логи Windows.
Может быть там обнаружатся какие-то ошибки?
25 апр 14, 10:37    [15933727]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Для затравки
1. Проверяем дрова ХБА
2. Проверяем как настроены порты на СХД по которым оно подключенно к ХБА
3. Просто копируем файл в 1 тб, какая скорость будет
25 апр 14, 12:03    [15934526]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
Maxx,
1, 2 проверяем.
3- большой файл копируется со скоростью 600МБ\сек.
25 апр 14, 13:41    [15935337]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
Создал ram disk 10ГБ из оперативной памяти, скрипт отработал за 6 секунд.
25 апр 14, 14:29    [15935795]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
В 2005, 2008 r2, 2012 результат- 6 сек, ожидал лучшего.
В логах windows и sql server все чисто.
25 апр 14, 14:39    [15935879]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
karu
В 2005, 2008 r2, 2012 результат- 6 сек, ожидал лучшего.
В логах windows и sql server все чисто.


ни виртуалка случаем?
25 апр 14, 15:12    [15936140]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
Пробовал и на виртуалке и на железном сервере (диски прокинуты по fiber channel).
Результат работы скрипта одинаковый- 30 сек.
25 апр 14, 15:54    [15936541]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
Обнаружил "просадку" при последовательной записи блоками по 512 байт.
Использовал process monitor, при работе моего скрипта sql server пишет в один поток блоками по 512 байт, если завернуть все в одну транзакцию:

begin tran
while @i < 40000
begin
insert into pSwiftLine11 (SPID,Number) values (@@spid,@i)
select @i = @i + 1
end
commit tran

то sql server пишет блоками по 64К, скрипт отрабатывает мгновенно.

Вопрос знатокам:
Можно ли заставить sql server писать ВСЕГДА большими блоками, хотя бы от 8к.
28 апр 14, 13:23    [15946130]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
karu
Обнаружил "просадку" при последовательной записи блоками по 512 байт.
Использовал process monitor, при работе моего скрипта sql server пишет в один поток блоками по 512 байт, если завернуть все в одну транзакцию:

begin tran
while @i < 40000
begin
insert into pSwiftLine11 (SPID,Number) values (@@spid,@i)
select @i = @i + 1
end
commit tran

то sql server пишет блоками по 64К, скрипт отрабатывает мгновенно.

Вопрос знатокам:
Можно ли заставить sql server писать ВСЕГДА большими блоками, хотя бы от 8к.
Транзакция не будет закомичена, пока она не запишется в лог. Если вы делаете такие маленькие транзакции, то они и будут пиcаться такими маленькмим блоками.

Вообще, у вас так себе тест, если честно.
28 апр 14, 13:28    [15946189]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
invm
Member

Откуда: Москва
Сообщений: 9825
karu
Можно ли заставить sql server писать ВСЕГДА большими блоками, хотя бы от 8к.
Нельзя.
Без оборачивания в транзакцию, ваш скрипт выполняется в режиме autocommit, что приводит к сбросу буфера журнала транзакций на диск после каждого insert.
28 апр 14, 13:31    [15946231]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
karu
Member

Откуда:
Сообщений: 34
Гавриленко Сергей Алексеевич, не спорю, тест не очень, просто это нагрузка, специфичная для нашего ПО.
28 апр 14, 16:36    [15947726]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
invm,

'...что приводит к сбросу буфера журнала транзакций на диск после каждого insert' - вот с этого места можно по-подробней или ссылку.
28 апр 14, 16:39    [15947756]     Ответить | Цитировать Сообщить модератору
 Re: writelog  [new]
NickAlex66
Member

Откуда:
Сообщений: 319
NickAlex66,

понял, вопрос снимается :)
28 апр 14, 17:04    [15947920]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить