เชนเชพ, เชฎเชพเชฐเซเช‚ เชœเซ‚เชจเซเช‚ เชฒเซ‡เชชเชŸเซ‹เชช เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชธเชฐเซเชตเชฐ เช•เชฐเชคเชพเช‚ เช…เชจเซ‡เช• เช—เชฃเซเช‚ เชตเชงเซ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เช›เซ‡.

เช† เชเชตเชพ เชฆเชพเชตเชพ เช›เซ‡ เชœเซ‡ เชฎเซ‡เช‚ เช…เชฎเชพเชฐเชพ เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชชเชพเชธเซ‡เชฅเซ€ เชธเชพเช‚เชญเชณเซเชฏเชพ เช›เซ‡. เชธเซŒเชฅเซ€ เชฐเชธเชชเซเชฐเชฆ เชฌเชพเชฌเชค เช เช›เซ‡ เช•เซ‡ เช† เชธเชพเชšเซเช‚ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เชœเซ‡ เชฒเชพเช‚เชฌเซ€ เชคเชชเชพเชธเชจเซ‡ เชœเชจเซเชฎ เช†เชชเซ‡ เช›เซ‡. เช…เชฎเซ‡ SQL เชธเชฐเซเชตเชฐเซเชธ เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚ เชœเซ‡ VMware เชชเชฐ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡.

เชนเชพ, เชฎเชพเชฐเซเช‚ เชœเซ‚เชจเซเช‚ เชฒเซ‡เชชเชŸเซ‹เชช เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชธเชฐเซเชตเชฐ เช•เชฐเชคเชพเช‚ เช…เชจเซ‡เช• เช—เชฃเซเช‚ เชตเชงเซ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เช›เซ‡.

เช–เชฐเซ‡เช–เชฐ, เชฒเซ‡เชชเชŸเซ‹เชชเชจเซ€ เชชเชพเช›เชณ เชจเชฟเชฐเชพเชถเชพเชœเชจเช• เชฐเซ€เชคเซ‡ เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชธเชฐเซเชตเชฐ เชฎเซ‡เชณเชตเชตเซเช‚ เชธเชฐเชณ เช›เซ‡. เช•เซ‹เชก เชšเชฒเชพเชตเซ‹ (เชŸเซ‡เชฎเซเชชเชกเซ€เชฌเซ€ เชชเชฐ เชจเชนเซ€เช‚ เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เชŸเช•เชพเช‰เชชเชฃเซเช‚ เชธเช•เซเชทเชฎ เชงเชฐเชพเชตเชคเชพ เชกเซ‡เชŸเชพเชฌเซ‡เช เชชเชฐ เชจเชนเซ€เช‚)

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

เชคเซ‡ เชฎเชพเชฐเชพ เชกเซ‡เชธเซเช•เชŸเซ‹เชช เชชเชฐ 5 เชธเซ‡เช•เชจเซเชก เช…เชจเซ‡ เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชธเชฐเซเชตเชฐ เชชเชฐ 28 เชธเซ‡เช•เชจเซเชก เชฒเซ‡ เช›เซ‡. เช•เชพเชฐเชฃ เช•เซ‡ SQL เชจเซ‡ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจ เชฒเซ‹เช—เชฎเชพเช‚ เชฒเช–เชตเชพเชจเชพ เชญเซŒเชคเชฟเช• เช…เช‚เชคเชจเซ€ เชฐเชพเชน เชœเซ‹เชตเซ€ เชชเชกเซ‡ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเซ‡ เช…เชนเซ€เช‚ เช–เซ‚เชฌ เชŸเซ‚เช‚เช•เชพ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชนเซ€เช เชคเซ‹, เช…เชฎเซ‡ เชถเชนเซ‡เชฐเชจเชพ เชŸเซเชฐเชพเชซเชฟเช•เชฎเชพเช‚ เชเช• เชฎเซ‹เชŸเซ€ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เชŸเซเชฐเช• เชšเชฒเชพเชตเซ€ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเซ‡ เชœเซ‹เชˆ เชฐเชนเซเชฏเชพ เช›เซ€เช เช•เซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเซเช•เซ‚เชŸเชฐ เชชเชฐ เชชเซ€เชเชพ เชกเชฟเชฒเชฟเชตเชฐเซ€ เช•เชฐเชจเชพเชฐเชพ เชฒเซ‹เช•เซ‹ เชคเซ‡เชจเซ‡ เชชเซเชฐเช–เซเชฏเชพเชค เชฐเซ€เชคเซ‡ เช†เช—เชณ เชจเซ€เช•เชณเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ - เชฅเซเชฐเซเชชเซเชŸ เช…เชนเซ€เช‚ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชจเชฅเซ€, เชฎเชพเชคเซเชฐ เชฒเซ‡เชŸเชจเซเชธเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡. เช…เชจเซ‡ เชเช• เชชเชฃ เชจเซ‡เชŸเชตเชฐเซเช• เชธเซเชŸเซ‹เชฐเซ‡เชœ เชจเชนเซ€เช‚, เชชเช›เซ€ เชญเชฒเซ‡ เชคเซ‡เชจเซ€ เช•เชฟเช‚เชฎเชคเชฎเชพเช‚ เช•เซ‡เชŸเชฒเชพ เชถเซ‚เชจเซเชฏ เชนเซ‹เชฏ, เชคเซ‡ เชฒเซ‡เชŸเชจเซเชธเซ€เชจเซ€ เชฆเซเชฐเชทเซเชŸเชฟเช เชธเซเชฅเชพเชจเชฟเช• SSD เชจเซ‡ เชชเชพเช›เชณ เชฐเชพเช–เซ€ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚.

(เชŸเชฟเชชเซเชชเชฃเซ€เช“เชฎเชพเช‚ เชเชตเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช•เซ‡ เชฎเซ‡เช‚ เชœเซ‚เช เซเช‚ เชฌเซ‹เชฒเซเชฏเซเช‚ - เชฎเซ‡เช‚ เชฌเช‚เชจเซ‡ เชœเช—เซเชฏเชพเช เชŸเช•เชพเช‰เชชเชฃเชพเชฎเชพเช‚ เชตเชฟเชฒเช‚เชฌ เช•เชฐเซเชฏเซ‹ เชนเชคเซ‹. เชตเชฟเชฒเช‚เชฌเชฟเชค เชŸเช•เชพเช‰เชชเชฃเซเช‚ เชตเชฟเชจเชพ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚:
เชกเซ‡เชธเซเช•เชŸเซ‹เชช - 39 เชธเซ‡เช•เชจเซเชก, 15K tr/sec, 0.065ms/io เชฐเชพเช‰เชจเซเชกเชŸเซเชฐเซ€เชช
PROD - 360 เชธเซ‡เช•เชจเซเชก, 1600 tr/sec, 0.6ms
เชฎเซ‡เช‚ เชจเซ‹เช‚เชงเซเชฏเซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช เช•เซ‡ เชคเซ‡ เช–เซ‚เชฌ เชเชกเชชเซ€ เช›เซ‡)

เชœเซ‹ เช•เซ‡, เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เช…เชฎเซ‡ เชคเซเชšเซเช› เช‰เชฆเชพเชนเชฐเชฃ เชธเชพเชฅเซ‡ เชฐเซ€เชฎเซ‡เชจ เชเซ‡เชŸเชพ เชซเช‚เช•เซเชถเชจเชจเชพ เชคเซเชšเซเช› เชถเซ‚เชจเซเชฏ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช. เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“ เชฎเชจเซ‡ เชฒเชพเชตเซเชฏเชพ เชคเซ‡ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เชคเซ‡ เช…เชฒเช— เชนเชคเซเช‚. เชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เชฅเชˆ เช—เชˆ เช•เซ‡ เชคเซ‡เช“ เชธเชพเชšเชพ เชนเชคเชพ, เช…เชจเซ‡ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚เชฅเซ€ เชตเซเชฏเชตเชธเชพเชฏเชจเชพ เชคเชฐเซเช• เชธเชพเชฅเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชคเซ‡เชฎเชจเซ€ เชคเชฎเชพเชฎ เชตเชฟเชถเชฟเชทเซเชŸเชคเชพเช“เชจเซ‡ เชธเชพเชซ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚. เช…เชฎเซเช• เชธเชฎเชฏเซ‡, เชฎเชจเซ‡ เชธเชฎเชœเชพเชฏเซเช‚ เช•เซ‡ เชนเซเช‚ เชคเซ‡เชฎเชจเซ‹ เช•เซ‹เชก เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชซเซ‡เช‚เช•เซ€ เชถเช•เซเช‚ เช›เซเช‚, เช…เชจเซ‡ เชฎเชพเชฐเซ‹ เชชเซ‹เชคเชพเชจเซ‹ เชฒเช–เซ€ เชถเช•เซเช‚ เช›เซเช‚ - เชœเซ‡ เชธเชฎเชพเชจ เชธเชฎเชธเซเชฏเชพ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ - เช‰เชคเซเชชเชพเชฆเชจเชฎเชพเช‚ เชคเซ‡ 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
	set @dv=@dv+2
	if @n % @dv = 0 return 0
	end
  return 1
  end
GO
declare @dt datetime set @dt=getdate()
select dbo.isPrime(1000000000000037)
select datediff(ms,@dt,getdate()) as ms
GO

เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชธเชพเชฅเซ‡ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เช›เซ‡, เชคเซ‹ เชธเช‚เช–เซเชฏเชพเชจเซ€ เชธเชฐเชณเชคเชพ เชคเชชเชพเชธเชตเชพเชฎเชพเช‚ 6-7-8 เชธเซ‡เช•เชจเซเชกเชจเซ‹ เชธเชฎเชฏ เชฒเชพเช—เชถเซ‡. เช† เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เชธเชฐเซเชตเชฐ เชชเชฐ เชฅเชฏเซเช‚ เช›เซ‡. เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเชพเช• เชชเชฐ, เชšเซ‡เช•เชฎเชพเช‚ 25-40 เชธเซ‡เช•เชจเซเชกเชจเซ‹ เชธเชฎเชฏ เชฒเชพเช—เซเชฏเซ‹. เชฐเชธเชชเซเชฐเชฆ เชตเชพเชค เช เช›เซ‡ เช•เซ‡, เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชธเชฐเซเชตเชฐ เชจเชนเซ‹เชคเชพ เช•เซ‡ เชœเซเชฏเชพเช‚ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจเชฎเชพเช‚ 14 เชธเซ‡เช•เชจเซเชก เชฒเชพเช—เชถเซ‡ - เช•เซ‹เชก เช–เซ‚เชฌ เชœ เชเชกเชชเชฅเซ€ เช…เชฅเชตเชพ เช–เซ‚เชฌ เชœ เชงเซ€เชฎเซ‡เชฅเซ€ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, เชธเชฎเชธเซเชฏเชพ เชนเชคเซ€, เชšเชพเชฒเซ‹ เช•เชนเซ€เช, เช•เชพเชณเซ‹ เช…เชจเซ‡ เชธเชซเซ‡เชฆ.

เชฎเซ‡ เชถเซ เช•เชฐเซเชฏเซ? VMware เชฎเซ‡เชŸเซเชฐเชฟเช•เซเชธเชฎเชพเช‚ เชชเซเชฐเชตเซ‡เชถ เชฎเซ‡เชณเชตเซเชฏเซ‹. เชคเซเชฏเชพเช‚ เชฌเชงเซเช‚ เชธเชพเชฐเซเช‚ เชนเชคเซเช‚ - เชคเซเชฏเชพเช‚ เชชเซเชทเซเช•เชณ เชธเช‚เชธเชพเชงเชจเซ‹ เชนเชคเชพ, เชคเซˆเชฏเชพเชฐ เชธเชฎเชฏ = 0, เชคเซเชฏเชพเช‚ เชฌเชงเซเช‚ เชชเซ‚เชฐเชคเซเช‚ เชนเชคเซเช‚, เชŸเซ‡เชธเซเชŸ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชเชกเชชเซ€ เช…เชจเซ‡ เชงเซ€เชฎเชพ เชฌเช‚เชจเซ‡ เชธเชฐเซเชตเชฐ CPU = 100 เชเช• vCPU เชชเชฐ. เชฎเซ‡เช‚ Pi เชจเซ€ เชธเช‚เช–เซเชฏเชพเชจเซ€ เช—เชฃเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชชเชฐเซ€เช•เซเชทเชฃ เชฒเซ€เชงเซเช‚ - เชชเชฐเซ€เช•เซเชทเชฃ เช•เซ‹เชˆเชชเชฃ เชธเชฐเซเชตเชฐ เชชเชฐ เชธเชฎเชพเชจ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡. เช•เชพเชณเชพ เชœเชพเชฆเซเชจเซ€ เช—เช‚เชง เชตเชงเซ เชจเซ‡ เชตเชงเซ เชฎเชœเชฌเซ‚เชค เชฅเชคเซ€ เช—เชˆ.

DEV เชซเชพเชฐเซเชฎ เชชเชฐ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเซเชฏเชพ เชชเช›เซ€, เชฎเซ‡เช‚ เชธเชฐเซเชตเชฐ เชธเชพเชฅเซ‡ เชฐเชฎเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚. เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เชนเซ‹เชธเซเชŸเชฅเซ€ เชนเซ‹เชธเซเชŸ เชธเซเชงเซ€ vMotion เชธเชฐเซเชตเชฐเชจเซ‡ "เช‡เชฒเชพเชœ" เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ "เชเชกเชชเซ€" เชธเชฐเซเชตเชฐเชจเซ‡ "เชงเซ€เชฎเชพ" เชฎเชพเช‚ เชชเชฃ เชซเซ‡เชฐเชตเซ€ เชถเช•เซ‡ เช›เซ‡. เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ เช† เชคเซ‡ เช›เซ‡ - เช•เซ‡เชŸเชฒเชพเช• เชฏเชœเชฎเชพเชจเซ‹เชจเซ‡ เชธเชฎเชธเซเชฏเชพ เช›เซ‡ ... เชชเชฐเช‚เชคเซ ... เชจเชพ. เช•เซ‡เชŸเชฒเชพเช• เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชนเซ‹เชธเซเชŸ เชชเชฐ เชงเซ€เชฎเชพ เชชเชกเซ€ เช—เชฏเชพ, เช•เชนเซ‹ เช•เซ‡, A, เชชเชฐเช‚เชคเซ เชนเซ‹เชธเซเชŸ B เชชเชฐ เชเชกเชชเชฅเซ€ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚. เช…เชจเซ‡ เช…เชจเซเชฏ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ, เชคเซ‡เชจเชพเชฅเซ€ เชตเชฟเชชเชฐเซ€เชค, A เชชเชฐ เชเชกเชชเชฅเซ€ เช•เชพเชฎ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ B เชชเชฐ เชงเซ€เชฎเซ€ เชชเชกเซ€! "เชเชกเชชเซ€" เช…เชจเซ‡ "เชงเซ€เชฎเซ€" เชฌเช‚เชจเซ‡ เช•เชพเชฐ เช˜เชฃเซ€เชตเชพเชฐ เชฏเชœเชฎเชพเชจ เชชเชฐ เชซเชฐเชคเซ€ เชนเชคเซ€!

เชคเซ‡ เช•เซเชทเชฃเชฅเซ€, เชนเชตเชพเชฎเชพเช‚ เชธเชฒเซเชซเชฐเชจเซ€ เชเช• เชตเชฟเชถเชฟเชทเซเชŸ เช—เช‚เชง เชนเชคเซ€. เช›เซ‡เชตเชŸเซ‡, เชธเชฎเชธเซเชฏเชพ เช•เซ‹เชˆเชชเชฃ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ เชตเชฟเชจเซเชกเซ‹เช เชชเซ‡เชšเซ‹) เชจเซ‡ เช†เชญเชพเชฐเซ€ เชนเซ‹เชˆ เชถเช•เชคเซ€ เชจเชฅเซ€ - เช›เซ‡เชตเชŸเซ‡, เชคเซ‡ vMotion เชธเชพเชฅเซ‡ "เชเชกเชชเซ€" เชฎเชพเช‚ เชซเซ‡เชฐเชตเชพเชˆ เช—เชˆ. เชชเชฐเช‚เชคเซ เชธเชฎเชธเซเชฏเชพ เชชเชฃ เชนเซ‹เชธเซเชŸเชจเซ‡ เช†เชญเชพเชฐเซ€ เชนเซ‹เชˆ เชถเช•เชคเซ€ เชจเชฅเซ€ - เช›เซ‡เชตเชŸเซ‡, เชคเซ‡เชฎเชพเช‚ "เชเชกเชชเซ€" เช…เชจเซ‡ "เชงเซ€เชฎเซ€" เชฌเช‚เชจเซ‡ เชฎเชถเซ€เชจเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡ เชฒเซ‹เชก เชธเชพเชฅเซ‡ เชชเชฃ เชธเช‚เชฌเช‚เชงเชฟเชค เชจ เชนเชคเซเช‚ - เชฎเซ‡เช‚ เชนเซ‹เชธเซเชŸ เชชเชฐ "เชงเซ€เชฎเซ€" เชฎเชถเซ€เชจ เชฎเซ‡เชณเชตเชตเชพเชฎเชพเช‚ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซเชฏเซเช‚, เชœเซเชฏเชพเช‚ เชคเซ‡เชจเชพ เชธเชฟเชตเชพเชฏ เชฌเซ€เชœเซเช‚ เช•เช‚เชˆ เชจเชนเซ‹เชคเซเช‚.

เชจเชฟเชฐเชพเชถเชพเชฎเชพเช‚, เชฎเซ‡เช‚ Sysinternals' Process Explorer เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซเชฏเซเช‚ เช…เชจเซ‡ SQL เชธเซเชŸเซ‡เช• เชชเชฐ เชœเซ‹เชฏเซเช‚. เชงเซ€เชฎเซ€ เชฎเชถเซ€เชจเซ‹ เชชเชฐ, เชฒเซ€เชŸเซ€เช เชคเชฐเชค เชœ เชฎเชพเชฐเซ€ เชจเชœเชฐ เชชเช•เชกเซ€ เชฒเซ€เชงเซ€:

ntoskrnl.exe!KeSynchronizeExecution+0x5bf6
ntoskrnl.exe!KeWaitForMultipleObjects+0x109d
ntoskrnl.exe!KeWaitForMultipleObjects+0xb3f
ntoskrnl.exe!KeWaitForSingleObject+0x377
ntoskrnl.exe!KeQuerySystemTimePrecise+0x881 < - !!!
ntoskrnl.exe!ObDereferenceObjectDeferDelete+0x28a
ntoskrnl.exe!KeSynchronizeExecution+0x2de2
sqllang.dll!CDiagThreadSafe::PxlvlReplace+0x1a20
โ€ฆ เช›เซ‹เชกเซเชฏเซเช‚
sqldk.dll!SystemThread::MakeMiniSOSThread+0xa54
KERNEL32.DLL!BaseThreadInitThunk+0x14
ntdll.dll!RtlUserThreadStart+0x21

เชคเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เช‚เชˆเช• เชนเชคเซเช‚. เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เชฒเช–เซเชฏเซ‹ เชนเชคเซ‹:

    class Program
    {
        [DllImport("kernel32.dll")]
        static extern void GetSystemTimePreciseAsFileTime(out FILE_TIME lpSystemTimeAsFileTime);

        [StructLayout(LayoutKind.Sequential)]
        struct FILE_TIME
        {
            public int ftTimeLow;
            public int ftTimeHigh;
        }

        static void Main(string[] args)
        {
            for (int i = 0; i < 16; i++)
            {
                int counter = 0;

                var stopwatch = Stopwatch.StartNew();

                while (stopwatch.ElapsedMilliseconds < 1000)
                {
                    GetSystemTimePreciseAsFileTime(out var fileTime);
                    counter++;
                }

                if (i > 0)
                {
                    Console.WriteLine("{0}", counter);
                }
            }
        }
    }

เช† เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซ‡ เชตเชงเซ เชธเซเชชเชทเซเชŸ เชฎเช‚เชฆเซ€ เชฆเชฐเซเชถเชพเชตเซ€ - "เชเชกเชชเซ€" เชฎเชถเซ€เชจเซ‹ เชชเชฐ เชคเซ‡ เชชเซเชฐเชคเชฟ เชธเซ‡เช•เชจเซเชกเชฎเชพเช‚ 16-18 เชฎเชฟเชฒเชฟเชฏเชจ เชšเช•เซเชฐ เชฌเชคเชพเชตเซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชงเซ€เชฎเชพ เชชเชฐ - เชฆเซ‹เชข เชฎเชฟเชฒเชฟเชฏเชจ เช…เชฅเชตเชพ เชคเซ‹ 700 เชนเชœเชพเชฐ. เชเชŸเชฒเซ‡ เช•เซ‡, เชคเชซเชพเชตเชค 10-20 เชตเช–เชค (!!!) เช›เซ‡. เช† เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชเช• เชจเชพเชจเซ€ เชœเซ€เชค เชนเชคเซ€: เช•เซ‹เชˆ เชชเชฃ เชธเช‚เชœเซ‹เช—เซ‹เชฎเชพเช‚, Microsoft เช…เชจเซ‡ VMware เชธเชชเซ‹เชฐเซเชŸ เชตเชšเซเชšเซ‡ เช…เชŸเชตเชพเชˆ เชœเชตเชพเชจเซ‹ เช•เซ‹เชˆ เชญเชฏ เชจเชนเซ‹เชคเซ‹ เชœเซ‡เชฅเซ€ เชคเซ‡เช“ เชเช•เชฌเซ€เชœเชพ เชชเชฐ เชคเซ€เชฐเซ‹ เชซเซ‡เชฐเชตเซ‡.

เชชเช›เซ€ เชชเซเชฐเช—เชคเชฟ เช…เชŸเช•เซ€ เช—เชˆ - เชตเซ‡เช•เซ‡เชถเชจ, เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชตเชธเซเชคเซเช“, เชตเชพเชฏเชฐเชฒ เช‰เชจเซเชฎเชพเชฆ เช…เชจเซ‡ เชตเชฐเซเช•เชฒเซ‹เชกเชฎเชพเช‚ เชคเซ€เชตเซเชฐ เชตเชงเชพเชฐเซ‹. เชฎเซ‡เช‚ เช˜เชฃเซ€เชตเชพเชฐ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹เชจเซ‡ เชœเชพเชฆเซเชˆ เชธเชฎเชธเซเชฏเชพเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซเชฏเซ‹, เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชเชตเซเช‚ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เชคเซ‡เช“ เชนเช‚เชฎเซ‡เชถเชพ เชฎเชพเชฐเชพ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เช•เชฐเชคเชพ เชจเชฅเซ€ - VMware เช เช•เซ‹เชกเชจเซ‡ 10-20 เชตเช–เชค เชงเซ€เชฎเซเช‚ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชจเชฟเชตเซ‡เชฆเชจ เช–เซ‚เชฌ เชœ เชญเชฏเช‚เช•เชฐ เชนเชคเซเช‚.

เชฎเซ‡เช‚ เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เชถเซ‹เชงเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เช•เซ‡ เชคเซ‡ เชถเซเช‚ เชงเซ€เชฎเซเช‚ เช•เชฐเซ‡ เช›เซ‡. เช…เชฎเซเช• เชธเชฎเชฏเซ‡ เชฎเชจเซ‡ เชเชตเซเช‚ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เชฎเชจเซ‡ เชเช• เช‰เช•เซ‡เชฒ เชฎเชณเซ€ เช—เชฏเซ‹ เช›เซ‡ - เชนเซ‹เชŸ เชชเซเชฒเช—เชจเซ‡ เชšเชพเชฒเซ เช…เชจเซ‡ เชฌเช‚เชง เช•เชฐเชตเซเช‚, เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชฎเชพเชคเซเชฐเชพ เช…เชฅเชตเชพ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฌเชฆเชฒเชตเซ€ เช˜เชฃเซ€เชตเชพเชฐ เชฎเชถเซ€เชจเชจเซ‡ "เชเชกเชชเซ€" เชฌเชจเชพเชตเซ€ เชฆเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เช•เชพเชฏเชฎ เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚. เชชเชฐเช‚เชคเซ เชœเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เชคเซ‡ เชธเชพเชšเซเช‚ เช›เซ‡ เช•เซ‡ เชคเซ‡ เชฌเชนเชพเชฐ เชœเชตเชพ เชฎเชพเชŸเซ‡ เช…เชจเซ‡ เชตเซเชนเซ€เชฒ เชชเชฐ เชชเช›เชพเชกเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡ - เชเชŸเชฒเซ‡ เช•เซ‡, เชฌเชฆเชฒเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆเชชเชฃ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจ เชชเชฐเชฟเชฎเชพเชฃ

เช›เซ‡เชตเชŸเซ‡, เชฎเชพเชฐเชพ เช…เชฎเซ‡เชฐเชฟเช•เชจ เชธเชพเชฅเซ€เชฆเชพเชฐเซ‹เชจเซ‡ เช…เชšเชพเชจเช• เชเช• เชฎเซ‚เชณ เช•เชพเชฐเชฃ เชฎเชณเซเชฏเซเช‚.

เชนเชพ, เชฎเชพเชฐเซเช‚ เชœเซ‚เชจเซเช‚ เชฒเซ‡เชชเชŸเซ‹เชช เชคเชฎเชพเชฐเชพ เชชเซเชฐเซ‹เชกเช•เซเชถเชจ เชธเชฐเซเชตเชฐ เช•เชฐเชคเชพเช‚ เช…เชจเซ‡เช• เช—เชฃเซเช‚ เชตเชงเซ เชถเช•เซเชคเชฟเชถเชพเชณเซ€ เช›เซ‡.

เชฏเชœเชฎเชพเชจเซ‹ เช†เชตเชฐเซเชคเชจเชฎเชพเช‚ เช…เชฒเช— เชนเชคเชพ!

  • เชเช• เชจเชฟเชฏเชฎ เชคเชฐเซ€เช•เซ‡, เช† เชกเชฐเชพเชฎเชฃเซ€ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ: เชœเซเชฏเชพเชฐเซ‡ 'เชฎเซ‚เชณ' เชนเซ‹เชธเซเชŸเชฎเชพเช‚เชฅเซ€ 'เชญเชฟเชจเซเชจ' เช†เชตเชฐเซเชคเชจ เชธเชพเชฅเซ‡ เชนเซ‹เชธเซเชŸ เชชเชฐ เชœเชคเซ€ เชตเช–เชคเซ‡, VMware เช GetTimePrecise เชชเชฐเชฟเชฃเชพเชฎเชจเซ‡ เชธเชฎเชพเชฏเซ‹เชœเชฟเชค เช•เชฐเชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡.
  • เชจเชฟเชฏเชฎ เชชเซเชฐเชฎเชพเชฃเซ‡, เช† เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เชจเชฅเซ€, เชธเชฟเชตเชพเชฏ เช•เซ‡ เชเชตเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชนเซ‹เชฏ เช•เซ‡ เชœเซ‡ SQL เชธเชฐเซเชตเชฐเชจเซ€ เชœเซ‡เชฎ เชธเซ‡เช•เชจเซเชก เชฆเซ€เช  เชฒเชพเช–เซ‹ เชตเช–เชค เชšเซ‹เช•เซเช•เชธ เชธเชฎเชฏเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเซ‡.
  • เชชเชฐเช‚เชคเซ เช† เชกเชฐเชพเชฎเชฃเซ€ เชชเชฃ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ SQL เชธเชฐเซเชตเชฐ เชนเช‚เชฎเซ‡เชถเชพ เช† เช•เชฐเชคเซเช‚ เชจเชฅเซ€ (เชจเชฟเชทเซเช•เชฐเซเชท เชœเซเช“)

เชชเชฐเช‚เชคเซ เชเชตเชพ เช•เชฟเชธเซเชธเชพเช“ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช† เชฆเชพเช‚เชคเซ€ เชฆเซเช–เซ‡ เช›เซ‡. เช…เชจเซ‡ เชนเชพ, เชตเซเชนเซ€เชฒ เชชเชฐ เชชเช›เชพเชกเซ€เชจเซ‡ (VM เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚ เช•เช‚เชˆเช• เชฌเชฆเชฒเซ€เชจเซ‡), เชฎเซ‡เช‚ VMware เชจเซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ 'เชชเซเชจเชƒเช—เชฃเชคเชฐเซ€' เช•เชฐเชตเชพ เชฆเชฌเชพเชฃ เช•เชฐเซเชฏเซเช‚, เช…เชจเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชนเซ‹เชธเซเชŸเชจเซ€ เช†เชตเชฐเซเชคเชจ เชฎเชถเซ€เชจเชจเซ€ 'เชจเซ‡เชŸเชฟเชต' เชซเซเชฐเซ€เช•เซเชตเชจเซเชธเซ€ เชฌเชจเซ€ เช—เชˆ.

เชจเชฟเชฐเซเชฃเชฏ

www.vmware.com/files/pdf/techpaper/Timekeeping-In-VirtualMachines.pdf

เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ TSC เชจเชพ เชตเชฐเซเชšเซเชฏเซเช…เชฒเชพเชˆเชเซ‡เชถเชจเชจเซ‡ เชจเชฟเชทเซเช•เซเชฐเชฟเชฏ เช•เชฐเซ‹ เช›เซ‹, เชคเซเชฏเชพเชฐเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชจเซ€ เช…เช‚เชฆเชฐเชฅเซ€ TSC เชตเชพเช‚เชšเชตเชพเชฅเซ€ เชญเซŒเชคเชฟเช• เชฎเชถเซ€เชจเชจเซ€ TSC เช•เชฟเช‚เชฎเชค เชชเชฐเชค เชฎเชณเซ‡ เช›เซ‡, เช…เชจเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชจเซ€ เช…เช‚เชฆเชฐเชฅเซ€ TSC เชฒเช–เชตเชพเชจเซ€ เช•เซ‹เชˆ เช…เชธเชฐ เชฅเชคเซ€ เชจเชฅเซ€. เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชจเซ‡ เชฌเซ€เชœเชพ เชฏเชœเชฎเชพเชจเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเซเช‚, เชคเซ‡เชจเซ‡ เชธเชธเซเชชเซ‡เชจเซเชก เช•เชฐเซ‡เชฒเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚เชฅเซ€ เชซเชฐเซ€ เชถเชฐเซ‚ เช•เชฐเชตเซเช‚, เช…เชฅเชตเชพ เชธเซเชจเซ‡เชชเชถเซ‹เชŸ เชชเชฐ เชชเชพเช›เชพ เชซเชฐเชตเชพเชฅเซ€ TSC เช…เชธเช‚เชคเซเชฒเชฟเชค เชฐเซ€เชคเซ‡ เช•เซ‚เชฆเชตเชพเชจเซเช‚ เช•เชพเชฐเชฃ เชฌเชจเซ‡ เช›เซ‡. เชœเซเชฏเชพเชฐเซ‡ TSC เชตเชฐเซเชšเซเชฏเซเช…เชฒเชพเชˆเชเซ‡เชถเชจ เชจเชฟเชทเซเช•เซเชฐเชฟเชฏ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เช•เซ‡เชŸเชฒเซ€เช• เช—เซ‡เชธเซเชŸ เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎเซ‹ เชฌเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เชจเชฟเชทเซเชซเชณ เชœเชพเชฏ เช›เซ‡, เช…เชฅเชตเชพ เช…เชจเซเชฏ เชŸเชพเชˆเชฎเช•เซ€เชชเชฟเช‚เช— เชธเชฎเชธเซเชฏเชพเช“ เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชญเซ‚เชคเช•เชพเชณเชฎเชพเช‚, เช† เชธเซเชตเชฟเชงเชพเชจเซ‡ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ TSC เชจเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐ เชตเชพเช‚เชšเชคเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเซ‹เชจเชพ เชชเซเชฐเชฆเชฐเซเชถเชจเชจเซ‡ เชธเซเชงเชพเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเชฐเซเชคเชฎเชพเชจ เช‰เชคเซเชชเชพเชฆเชจเซ‹เชฎเชพเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ TSC เชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€เชฎเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชธเซเชงเชพเชฐเซ‹ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡. เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฎเชถเซ€เชจเชฎเชพเช‚ เชตเชพเชธเซเชคเชตเชฟเช• เชธเชฎเชฏเชจเชพ เชšเซ‹เช•เซเช•เชธ เชธเซเชคเซเชฐเซ‹เชคเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เชฎเชพเชชเชจ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช‰เชชเชฏเซ‹เช— เชฎเชพเชŸเซ‡ เชชเชฃ เชธเซเชตเชฟเชงเชพเชจเซ€ เชญเชฒเชพเชฎเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เช›เซ‡.

เชŸเซ‚เช‚เช•เชฎเชพเช‚, เชคเชฎเชพเชฐเซ‡ เชชเชฐเชฟเชฎเชพเชฃ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡

monitor_control.virtual_rdtsc = FALSE

เชจเชฟเชทเซเช•เชฐเซเชท

เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เชฆเชพเชš เชเช• เชชเซเชฐเชถเซเชจ เช›เซ‡: เชถเชพ เชฎเชพเชŸเซ‡ เชเชธเช•เซเชฏเซเชเชฒ เช—เซ‡เชŸเชŸเชพเช‡เชฎ เชชเซเชฐเชฟเชธเชพเช‡เชเชจเซ‡ เชตเชพเชฐเช‚เชตเชพเชฐ เช•เซ‰เชฒ เช•เชฐเชถเซ‡?

เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ SQL เชธเชฐเซเชตเชฐ เชธเซเชคเซเชฐเซ‹เชค เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเชฐเซเช• เช† เช•เชนเซ‡ เช›เซ‡. เชเชธเช•เซเชฏเซเชเชฒ เช เชธเชนเช•เชพเชฐเซ€ เชธเช‚เชฎเชคเชฟ เชธเชพเชฅเซ‡ เชฒเช—เชญเช— เชเช• เช“เชชเชฐเซ‡เชŸเชฟเช‚เช— เชธเชฟเชธเซเชŸเชฎ เช›เซ‡, เชœเซเชฏเชพเช‚ เชฆเชฐเซ‡เช• เชฅเซเชฐเซ‡เชกเซ‡ เชธเชฎเชฏเชพเช‚เชคเชฐเซ‡ "เชฎเชพเชฐเซเช— เช†เชชเชตเซ‹" เชœเซ‹เชˆเช. เชคเซ‡ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชถเซเชฐเซ‡เชทเซเช  เชธเซเชฅเชพเชจ เช•เซเชฏเชพเช‚ เช›เซ‡? เชœเซเชฏเชพเช‚ เช•เซเชฆเชฐเชคเซ€ เช…เชชเซ‡เช•เซเชทเชพ เช›เซ‡ - เชฒเซ‹เช• เช…เชฅเชตเชพ IO. เช เซ€เช• เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‹ เช†เชชเชฃเซ‡ เช•เซ‹เชฎเซเชชเซเชฏเซเชŸเซ‡เชถเชจเชฒ เชšเช•เซเชฐเซ‹ เชซเชฐเชคเชพ เชนเซ‹เชˆเช เชคเซ‹ เชถเซเช‚? เชชเช›เซ€ เชธเซเชชเชทเซเชŸ เช…เชจเซ‡ เชฒเช—เชญเช— เชเช•เชฎเชพเชคเซเชฐ เชธเซเชฅเชพเชจ เชฆเซเชญเชพเชทเชฟเชฏเชพเชฎเชพเช‚ เช›เซ‡ (เช† เชคเชฆเซเชฆเชจ เชฆเซเชญเชพเชทเชฟเชฏเชพ เชจเชฅเซ€), เช†เช—เชพเชฎเซ€ เช‘เชชเชฐเซ‡เชŸเชฐเชจเชพ เช…เชฎเชฒ เชชเช›เซ€.

เชจเชฟเชฏเชฎ เชชเซเชฐเชฎเชพเชฃเซ‡, SQL เชธเชฐเซเชตเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เชถเซเชฆเซเชง เช•เชฎเซเชชเซเชฏเซเชŸเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชฅเชคเซ‹ เชจเชฅเซ€ เช…เชจเซ‡ เช† เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เชคเชฎเชพเชฎ เชชเซเชฐเช•เชพเชฐเชจเชพ เช…เชธเซเชฅเชพเชฏเซ€ เช•เซ‹เชทเซเชŸเช•เซ‹ (เชœเซ‡ เชคเชฐเชค เชœ เช•เซ‡เชถ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡) เชธเชพเชฅเซ‡ เช•เชพเชฎ เชธเชพเชฅเซ‡เชจเชพ เชšเช•เซเชฐเซ‹ เช•เซ‹เชกเชจเซ‡ เช–เซ‚เชฌ เชœ เชเชกเชชเชฅเซ€ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชฏเซ‡เชฒเชพ เชธเซเชŸเซ‡เชŸเชฎเซ‡เชจเซเชŸเชจเชพ เช•เซเชฐเชฎเชฎเชพเช‚ เชซเซ‡เชฐเชตเซ‡ เช›เซ‡.

เชฌเชพเชฏ เชง เชตเซ‡, เชœเซ‹ เชซเช‚เช•เซเชถเชจ NATIVELY COMPILED เชฎเชพเช‚ เชฒเชชเซ‡เชŸเชพเชฏเซ‡เชฒเซเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เชธเชฎเชฏเชจเซ€ เชตเชฟเชจเช‚เชคเซ€ เช•เชฐเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชจเซ€ เชเชกเชช 10 เช—เชฃเซ€ เชตเชงเซ€ เชœเชพเชฏ เช›เซ‡. เชชเชฐเช‚เชคเซ เชธเชนเช•เชพเชฐเซ€ เชฎเชฒเซเชŸเชฟเชŸเชพเชธเซเช•เชฟเช‚เช—เชจเซเช‚ เชถเซเช‚? เชชเชฐเช‚เชคเซ เชฎเซ‚เชณ เชฐเซ€เชคเซ‡ เชธเช‚เช•เชฒเชฟเชค เช•เซ‹เชก เชฎเชพเชŸเซ‡, เชฎเชพเชฐเซ‡ SQL เชฎเชพเช‚ เชชเซเชฐเซ€เชฎเซเชชเซเชŸเซ€เชต เชฎเชฒเซเชŸเซ€เชŸเชพเชธเซเช•เซ€เช‚เช— เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹