В обычном режиме SQL server будет дожидаться записи в лог (synchronous mode)
В SQL 2014 в режиме Delayed Durability, или в более ранних SQL для tempdb запись будеит асинхронна
Expected results (regular mode/delayed durability=forced):
(results may vary)
Старые добрые вращающиеся HDD: 60s / 300ms
SSD: 500ms / 300ms
Remote storage: 3000ms / 300ms
Заметим, что последнее число, скорее всего, меняться практически не должно
Странности каторые имеем на самом деле:
Remote Storage дает 3000ms / 2000ms
Есть еще ряд странностей типа "домашний комп дает в ряде случаев в 2 раза лучше чем супер пупер рабочий"
Но пока не до этого
Q1. Является ли extra latency 2000ms/10000 = 0.2ms неизбежной при использовании remote storage?
Q2. Почему в ряде случаев установка Delayed Durability=forced никак, или ненамного помогает (тогда как ожидается что при столь крошечных транзакциях будет почти всегда быстро)? Причем иногда (я видел несколько раз, но потом повторить не смог) Remote Storage с Delayed Durability работает быстро.
Я понимаю что latency 0.2ms это может казаться ловлей блох, при том, что, например, alert по latency в VMware по дефолту стоит по >50ms, а тут 0.2ms
Но для крошечных транзакций это дает 100% для local SSD vs ЛЮБОЙ remote storage
Code: Select all
set nocount on
GO
create table _Ptest (n int identity, k int not null, v varchar(128))
GO
insert into _Ptest (k,v) select 1, 'this is a test'
GO
declare @t datetime, @n int
set @t=getdate()
set @n=10000
while @n>0 begin
insert into _Ptest (k,v) select @n,'stringy'
set @n=@n-1
end
select datediff(ms,@t,getdate())
GO
drop table _Ptest