Именно такие жалобы я слышал от наших разработчиков.
Самое интересное, что это оказалось правдой, что послужило поводом для длительного расследования.
Мы поговорим о SQL-серверах, работающих на VMware.
На самом деле легко убедиться, что рабочий сервер безнадежно отстает от ноутбука.
Выполните (не в базе данных tempdb и не в базе данных с включенной функцией Delayed Durability) код:
На моем рабочем столе это занимает 5 секунд, а на рабочем сервере — 28 секунд. Потому что SQL должен ждать физического окончания записи журнала транзакций, а здесь мы выполняем очень короткие транзакции.set nocount on create table _t (v varchar(100)) declare @n int=300000 while @n>0 begin insert into _t select 'What a slowpoke!' delete from _t set @n=@n-1 end GO drop table _t
Грубо говоря, мы выехали на большом мощном грузовике в городской поток и наблюдали, как его лихо обгоняют разносчики пиццы на скутерах — здесь не важна пропускная способность, важна только латентность.
И ни одно сетевое хранилище, сколько бы нулей ни было в его цене, не сможет превзойти локальный SSD по латентности.
(в комментариях оказалось, что я соврал - у меня в обоих местах была задержка долговечности.Однако в данном случае мы имеем дело с тривиальными нулями дзета-функции Римана с тривиальным примером.Без задержки долговечности получается: Рабочий стол — 39 секунд, 15 000 транзакций в секунду, 0,065 мс/IO туда и обратно.
ПРОД - 360 секунд, 1600 тр/сек, 0,6мс Я должен был заметить, что это было слишком быстро)
В примере, который мне привели разработчики, было иначе.
Я убедился в их правоте и начал удалять из примера всю их специфику, связанную с бизнес-логикой.
В какой-то момент я понял, что могу полностью выбросить их код и написать свой — который демонстрирует ту же проблему — в продакшене он работает в 3-4 раза медленнее: create function dbo.isPrime (@n bigint)
returns int
as
begin
if @n = 1 return 0
if @n = 2 return 1
if @n = 3 return 1
if @n % 2 = 0 return 0
declare @sq int
set @sq = sqrt(@n)+1 -- check odds up to sqrt
declare @dv int = 1
while @dv < @sq
begin
Теги: #Виртуализация #vmware #Администрирование сервера #sql #производительность #Microsoft SQL Server #sql-сервер
-
От Математики К Обобщенному Программированию
19 Oct, 24