Post on 06-Jul-2018
8/17/2019 Microsoft SQL Server IO Internals
1/24
MICROSOFT SQL SERVERDATABASE ENGINE I/O
by Bob Dorr, Microsoft SQL Server ri!ci"#e Esc$#$tio! E!%i!eer, &''( ) rese!t
B*i#t+ $! -..
8/17/2019 Microsoft SQL Server IO Internals
2/24
Are$s Covere0
1rite A2e$0 Lo%%i!% 31AL4 rotoco# Sy!c2ro!o*s vs Asy!c2ro!o*s I/O Sc$tter / G$t2er I/O Sector $#i%!5e!t, B#oc6 A#i%!5e!t L$tc2i!% $!0 $ "$%e+ A re$0 7$#68t2ro*%2
SQL Server I/O Si9es D$t$ c$c2e 5$i!te!$!ce AE $!0 A1E Re$0 A2e$0 :ser Mo0e $!0 ;er!e# Mo0e 3S
8/17/2019 Microsoft SQL Server IO Internals
3/24
1AL rotoco#
1rite A2e$0 Lo%%i!% ACID 3D*r$bi#ity ro"erty4 Lo% recor0s sec*re0
before 0$t$ >$r0e!e0 / St$b#e Me0i$ Lo% co!t$i!s "$rity bit
• Co55it• Ro##b$c6• Tri%%erS!$"s2ot
8/17/2019 Microsoft SQL Server IO Internals
4/24
Sy!c2ro!o*s vsAsy!c2ro!o*s I/O
Sy!c+ 1$it for Co5"#etio! Asy!c+ ost $!0 Co!ti!*e
Over#$""e0 Eve!t Co5"#etio! ort
SQL Server '? Asy!c :s$%e
Over#$""e0 $!0 >$sOver#$""e0IoCo5"#ete0
Net7or6 L$yers :se Co5"#etio! ort
B$c6*"/Restore :se Sy!c ) Se@*e!ti$# $tter!s
• 05io"e!0i!%iore@*ests• Over#$""e0 Str*ct*re• Asy!c rocessi!% C:• $c6$%e vs 2o!e
8/17/2019 Microsoft SQL Server IO Internals
5/24
Sc$tter / G$t2er I/O
Co!so#i0$tes or Distrib*tes AIs
Re$0Fi#eSc$tter 1riteFi#eG$t2er
I!cre$ses Ecie!cy :se0 by SQL I/O $t2s :se0 by 1i!0o7s $%e Fi#e
• O#0 Desi%!+ Sorti!%• A1E Av$i#$bi#ity• 1riteM*#ti"#e
• H of ; $%es• For7$r0 $!0
B$c67$r0• B*er oo# R$5"8*"
Dis6
Me5ory
G$t2erSc$tter
8/17/2019 Microsoft SQL Server IO Internals
6/24
Sector A#i%!5e!tB#oc6 A#i%!5e!t
Sector+ Lo% 1rites B#oc6+ erfor5$!ce Avoi0 Crossovers Dis6$rt/Dis6$r :ti#ities Disc*ss 7it2 yo*r Ve!0or
• Do*b#e To*c2• Re7rites• Defr$%5e!t• (; Sectors
A#i%!5e!t+
2tt"+//s*""ort5icrosoftco5/6b/'-'('& To verify t2$t $! eisti!% "$rtitio! is $#i%!e0, 0ivi0e t2e si9e of t2e stri"e *!it byt2e st$rti!% oset of t2e RAID 0is6 %ro*" :se t2e fo##o7i!% sy!t$+ 33$rtitio!oset4 J 3Dis6 sector si9e44 / 3Stri"e *!it si9e4
E$5"#e of $#i%!5e!t c$#c*#$tio!s i! bytes for $ -K8;B stri"e *!it si9e+3 J K&-4 / --&(( .&-.(K3( J K&-4 / --&(( .&-K3&- J K&-4 / --&(( .-K
3-K J K&-4 / --&(( .K3K&- J K&-4 / --&(( &
8
http://support.microsoft.com/kb/929491http://support.microsoft.com/kb/929491
8/17/2019 Microsoft SQL Server IO Internals
7/24
L$tc2
M*#ti"#e Re$0ers 3S>4 O!e 1riter 3E4 rotects I!8Me5ory D$t$ $%e
L$tc2 2ysic$# rotectio!
Loc6 Lo%ic$# rotectio! :ser Mo0e :MS/SQLOS A7$re O"ti5i9e0 FIFO Or0eri!%
• F#*s2e0 Ro##b$c6• L$tc2 Ti5eo*t• S*b8#$tc2
B:FArr$y
Me5ory 3D$t$$%es4
B:FSt$t*sL$tc2D$t$b$seJ$%eI0>$s2 J
P
8/17/2019 Microsoft SQL Server IO Internals
8/24
Re$0i!% A $%e
Get Free B*er for Re$0 Ac@*ire Ec#*sive 3E4 L$tc2 Is $#re$0y i!85e5ory/2$s2e0 A00 E!try to $%e >$s2
ost $!0 Recor0 Asy!c2ro!o*s Re$0 … Continue Processing …. C2ec6 St$t*s 3Sc2e0*#er S7itc24 Co5"#ete+ V$#i0$te I/O $!0 Re#e$se L$tc2
• $%e A*0its• Re$0 retry• St$##e0 I/O 1$r!i!%s• Error r$ise0 $t Ac@*ire• S2$re0 3S>4 7$iters• PAGE_IO* vs PAGE*
Latch• 1riti!% A $%e
kernel transition – Stuck I/O?
ntdll!ZwWriteFile+0xa
kernel32!WriteFile+0xf
slser"r!#iskWrite$s%nc+0xee
&
.+... *f 71riteFi#e5ov r&.,rc5ov e$,KSysc$## ;er!e#
Tr$!sitio!ret
8/17/2019 Microsoft SQL Server IO Internals
9/24
Myth+ Si!%#e 1or6er er Fi#eTruth: E$c2 1or6er Iss*es I/O
1or6er H&
Vo#H&
Vo#H&
Vo#H-
Vo#H-
Seri$# #$!se#ect J fro50bTest0botb#Test
0bTestMDF 0bTestNDF 0bTestLDF
1or6er H-
$r$##e# #$!se#ect J fro50bTest0botb#Test
Create Database1or6ers Assi%!e0 by Vo#*5eID
ri5$ry 0bTestMDF
Seco!0$ry 0bTestNDFLo% 0bTestLDF
1or6er H
1or6er H(
1or6er HK
8/17/2019 Microsoft SQL Server IO Internals
10/24
D$t$ C$c2e M$i!te!$!ce
Me5ory ress*re+ L$9y1riter er N:MA No0e Ti5e Of L$st Access 3TLA4
Recovery I!terv$#+ C2ec6"oi!t
Q*e*e I/O T$r%ets LDF :s$%e Tri%%ers A#ter!$te Tri%%ers 3B$c6*", Restore, P4 Sc$tter/G$t2er :s$%e 31riteM*#ti"#e4
• C2ec6"oi!tAssi%!5e!ts• By Or0i!$# S7ee"• St$##e0 I/O ) L1 H.• I/O Q*e*e De"t2 -
8/17/2019 Microsoft SQL Server IO Internals
11/24
AE $!0 A1E
2ysic$# A00ress Ete!sio!s /AE i! Booti!i Boots ;er!e# 7it2 bit $00ressi!% 2ysic$# Me5ory (GB Virt*$# A00ress :!c2$!%e0 3/-%b or /GB4
A*to5$tic for >ot A00 Me5ory Co5"*ters A00ress 1i!0o7s Ete!sio!
1i!0o7s AIs 3A##oc$te:ser2ysic$#$%es4 2ysic$# Me5ory A##oc$tio!s :!/M$""e0 i! or o*t of Virt*$# A00ress R$!%e
• D$t$ $%es8O!#y• Loc6e0 $%es• 1i!0o7s $%i!%•1i!0o7s -...
B*%s
•- Bit A00ress (-'('-'K 3.FFFFFFFF4(GB
• I!ter#oc6e0 I!str*ctio! lock xadd dword ptr [ecx],eax
• Bit A00ress &'(K3.FFFFFFFFF4 (GB
•
8/17/2019 Microsoft SQL Server IO Internals
12/24
Re$0 A2e$0
&- $%es St$!0$r0 S;: &.-( $%es E!ter"rise
S;: :ses Re$0Fi#eSc$tter #$! B$se0 Decisio!s o7er of Asy!c2ro!o*s
I/O• Re$0 Over1rite• R$5"8*"
8/17/2019 Microsoft SQL Server IO Internals
13/24
S"$rse Fi#es ) Co"y O!1rite
:s$%e O!#i!e DBCC S!$"s2ot D$t$b$ses
B*er oo#+re"$reToDirty
Fi#e Co!tro# B#oc6 3FCB4
C2$i!i!% • S"$rse A##oc$tio!• FCB Tr$c6i!%• 1i!0o7s Li5its• Ne7 $%e
A##oc$tio!s
8/17/2019 Microsoft SQL Server IO Internals
14/24
A0v$!ce0 rotectio!
12$t is $ Scribb#er D$t$ $%e A*0its
No!e Tor! Bits
C2ec6s*5 Lo% B#oc6 C2ec6s*5 Co!st$!t $%e B$c6*" 7it2 C2ec6s*5
• DBCC $%e A*0it• St$#e Re$0 C2ec6• SQLIOSi5
8/17/2019 Microsoft SQL Server IO Internals
15/24
REFERENCES
8/17/2019 Microsoft SQL Server IO Internals
16/24
Overvie7
SQL Server Always On2tt"+//7775icrosoftco5/s@#/$#7$yso!
SQL Server I/O Basics Chapter 1
2tt"+//7775icrosoftco5/tec2!et/"r
o0tec2!o#/s@#/-.../5$i!t$i!/s@#IOb$sics5s"
SQL Server I/O Basics Chapter 2tt + 7775icrosoftco5 tec2!et r
http://www.microsoft.com/sql/alwaysonhttp://www.microsoft.com/sql/alwaysonhttp://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspxhttp://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspxhttp://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspxhttp://www.microsoft.com/technet/prodtechnol/sql/2005/iobasics.mspxhttp://www.microsoft.com/technet/prodtechnol/sql/2005/iobasics.mspxhttp://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspxhttp://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspxhttp://www.microsoft.com/technet/prodtechnol/sql/2000/maintain/sqlIObasics.mspxhttp://www.microsoft.com/sql/alwaysonhttp://www.microsoft.com/sql/alwayson
8/17/2019 Microsoft SQL Server IO Internals
17/24
F*!0$5e!t$#s $!0 Re@*ire5e!ts
;B-.K 8SQL Server ., SQL Server -... $!0SQL Server -..K #o%%i!% $!0 0$t$ sto
r$%e $#%orit25s ete!0 0$t$ re#i$bi#ity
;B'&.( 8
Microsoft SQL Server I/O s*bsyste5 re@*ire5e!ts for t2ete5"0b 0$t$b$se
;B-&( 8SQL Server 0$t$b$ses !ot s* orte0
http://support.microsoft.com/kb/230785/en-ushttp://support.microsoft.com/kb/230785/en-ushttp://support.microsoft.com/kb/230785/en-ushttp://support.microsoft.com/kb/230785/en-ushttp://support.microsoft.com/?kbid=917047http://support.microsoft.com/?kbid=917047http://support.microsoft.com/?kbid=917047http://support.microsoft.com/?kbid=917047http://support.microsoft.com/kb/231347/en-ushttp://support.microsoft.com/kb/231347/en-ushttp://support.microsoft.com/?kbid=917047http://support.microsoft.com/?kbid=917047http://support.microsoft.com/?kbid=917047http://support.microsoft.com/?kbid=917047http://support.microsoft.com/kb/230785/en-ushttp://support.microsoft.com/kb/230785/en-ushttp://support.microsoft.com/kb/230785/en-ushttp://support.microsoft.com/kb/230785/en-us
8/17/2019 Microsoft SQL Server IO Internals
18/24
S*bsyste5s
;B'&.( 8;ey f$ctors to co!si0er 72e! ev$#*$ti!% t2ir08"$rty #e c$c2e syste5s 7it2 SQL Server
;B-(K8 :si!% 0is6 0rive c$c2i!% 7it2 SQL Server ;B(.'&8 :si!% 2$r0 0is6 co!tro##er c$c2i!% 7it2 SQL Server ;B'. 8 Descri"tio! of c$c2i!% 0is6 co!tro#s i! SQL Server ;B.(-&8
Descri"tio! of s*""ort for !et7or6 0$t$b$se #es i! SQL Serv
er ;B'&.& 3i! "ro%ress4 8S*""ort for t2ir08"$rty Re5ote Mirrori!% so#*tio!s *se0 7it2 SQL Server -... $!0 -..K
;B. 8 S*""ort for SQL Server -... o! iSCSI tec2!o#o%y co5"o!e!ts 3$""#ies to SQL Server -..K4
http://support.microsoft.com/default.aspx?scid=kb;en-us;917043&sd=rss&spid=2852http://support.microsoft.com/default.aspx?scid=kb;en-us;917043&sd=rss&spid=2852http://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;234656http://support.microsoft.com/kb/46091/en-ushttp://support.microsoft.com/kb/86903/en-ushttp://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;304261http://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;304261http://support.microsoft.com/kb/910716/http://support.microsoft.com/kb/910716/http://download.microsoft.com/download/4/7/a/original/HYPERLINK%20%22http:/support.microsoft.com/kb/833770/en-ushttp://download.microsoft.com/download/4/7/a/original/HYPERLINK%20%22http:/support.microsoft.com/kb/833770/en-ushttp://download.microsoft.com/download/4/7/a/original/HYPERLINK%20%22http:/support.microsoft.com/kb/833770/en-ushttp://download.microsoft.com/download/4/7/a/original/HYPERLINK%20%22http:/support.microsoft.com/kb/833770/en-ushttp://download.microsoft.com/download/4/7/a/original/HYPERLINK%20%22http:/support.microsoft.com/kb/833770/en-ushttp://support.microsoft.com/kb/910716/http://support.microsoft.com/kb/910716/http://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;304261http://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;304261http://support.microsoft.com/kb/86903/en-ushttp://support.microsoft.com/kb/46091/en-ushttp://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;234656http://support.microsoft.com/default.aspx?scid=kb;en-us;917043&sd=rss&spid=2852http://support.microsoft.com/default.aspx?scid=kb;en-us;917043&sd=rss&spid=2852
8/17/2019 Microsoft SQL Server IO Internals
19/24
Desi%! $!0 Co!%*r$tio!
12ite "$"er 8 2ysic$# D$t$b$se L$yo*t $!0 Desi%! ;B-'(.- 8
:!0erst$!0i!% >o7 to Set t2e SQL Server I/O A!ity O"tio! ;B 8 12e! Dirty C$c2e $%es $re F#*s2e0 to Dis6
12ite "$"er 8 D$t$b$se Mirrori!% i! SQL Server -..K 12ite "$"er 8
D$t$b$se Mirrori!% Best r$ctices $!0 erfor5$!ce Co!si0er$tio!s
;B'&. 8Sc$#$b#e s2$re0 0$t$b$se $re s*""orte0 by SQL Server -..K
MSDN $rtic#e 8 Re$08O!#y Fi#e%ro*"s ;B&K'- 8
Asy!c2ro!o*s Dis6 I/O A""e$rs $s Sy!c2ro!o*s o! 1i!0o7s N T, 1i!0o7s -..., $!0 1i!0o7s
http://download.microsoft.com/download/4/f/8/4f8f2dc9-a9a7-4b68-98cb-163482c95e0b/PhysDBStor.dochttp://support.microsoft.com/kb/298402/en-ushttp://support.microsoft.com/kb/78363/en-ushttp://www.microsoft.com/technet/prodtechnol/sql/2005/dbmirror.mspxhttp://download.microsoft.com/download/4/f/8/4f8f2dc9-a9a7-4b68-98cb-163482c95e0b/DBM_Best_Pract.dochttp://download.microsoft.com/download/4/f/8/4f8f2dc9-a9a7-4b68-98cb-163482c95e0b/DBM_Best_Pract.dochttp://support.microsoft.com/Default.aspx?kbid=910378http://msdn2.microsoft.com/en-us/library/ms190257(SQL.90).aspxhttp://msdn2.microsoft.com/en-us/library/ms190257(SQL.90).aspxhttp://support.microsoft.com/default.aspx?scid=kb;en-us;156932http://support.microsoft.com/default.aspx?scid=kb;en-us;156932http://support.microsoft.com/default.aspx?scid=kb;en-us;156932http://support.microsoft.com/default.aspx?scid=kb;en-us;156932http://msdn2.microsoft.com/en-us/library/ms190257(SQL.90).aspxhttp://msdn2.microsoft.com/en-us/library/ms190257(SQL.90).aspxhttp://support.microsoft.com/Default.aspx?kbid=910378http://download.microsoft.com/download/4/f/8/4f8f2dc9-a9a7-4b68-98cb-163482c95e0b/DBM_Best_Pract.dochttp://download.microsoft.com/download/4/f/8/4f8f2dc9-a9a7-4b68-98cb-163482c95e0b/DBM_Best_Pract.dochttp://www.microsoft.com/technet/prodtechnol/sql/2005/dbmirror.mspxhttp://support.microsoft.com/kb/78363/en-ushttp://support.microsoft.com/kb/298402/en-ushttp://download.microsoft.com/download/4/f/8/4f8f2dc9-a9a7-4b68-98cb-163482c95e0b/PhysDBStor.doc
8/17/2019 Microsoft SQL Server IO Internals
20/24
Di$%!ostics
;B-( 8A00itio!$# SQL Server Di$%!ostics A00e0 to Detect :!re"orte0 I/O rob#e5s
;B'-( 8
SQL Server -... S( 0i$%!ostics 2e#" 0etect st$##e0 $!0 st*c6 I/O o"er$tio!s 3$""#ies to SQL Server -..K4
;B-' 8Error 5ess$%e - 5$y i!0ic$te 2$r07$re "rob#e5s or syste5 "rob#e5s i! SQL Server
;B&&& 8 :!0erst$!0i!% B*f7$it $!0 1rite#o% Ti5eo*t Mess$%es
;B&K( 8:se Tr$ce F#$% K.K to Co!tro# SQL Server C2ec6"oi!t Be2
$vior
http://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;826433http://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;826433http://support.microsoft.com/kb/897284/en-ushttp://support.microsoft.com/kb/897284/en-ushttp://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;828339http://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;828339http://support.microsoft.com/kb/167711/en-ushttp://support.microsoft.com/kb/167711/en-ushttp://support.microsoft.com/kb/815436/en-ushttp://support.microsoft.com/kb/815436/en-ushttp://support.microsoft.com/kb/815436/en-ushttp://support.microsoft.com/kb/815436/en-ushttp://support.microsoft.com/kb/167711/en-ushttp://support.microsoft.com/kb/167711/en-ushttp://support.microsoft.com/kb/167711/en-ushttp://support.microsoft.com/kb/167711/en-ushttp://support.microsoft.com/kb/167711/en-ushttp://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;828339http://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;828339http://support.microsoft.com/kb/897284/en-ushttp://support.microsoft.com/kb/897284/en-ushttp://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;826433http://support.microsoft.com/default.aspx?scid=KB;%5BLN%5D;826433
8/17/2019 Microsoft SQL Server IO Internals
21/24
Certic$tio! o#icy
;B'&'(K8Microsoft 0oes !ot certify t2$t t2ir08"$rty "ro0*cts 7i## 7or6 7it2 Microsoft SQL
Server ;B(&' 8
Overvie7 of t2e Microsoft t2ir08"$rty stor$%e soft7$re so#*tio!s s*""ort "o#icy
;B-&&' 8 >o7 to *se t2e SQLIOStress *ti#ity to stress $ 0is6 s*bsyste5 s*c2
$s SQL Server
http://support.microsoft.com/default.aspx?scid=kb;EN-US;913945http://support.microsoft.com/default.aspx?scid=kb;EN-US;913945http://support.microsoft.com/default.aspx?scid=kb;EN-US;913945http://support.microsoft.com/kb/841696/en-ushttp://support.microsoft.com/kb/841696/en-ushttp://download.microsoft.com/download/4/7/a/original/support.microsoft.com/kb/q231619/http://download.microsoft.com/download/4/7/a/original/support.microsoft.com/kb/q231619/http://download.microsoft.com/download/4/7/a/original/support.microsoft.com/kb/q231619/http://download.microsoft.com/download/4/7/a/original/support.microsoft.com/kb/q231619/http://download.microsoft.com/download/4/7/a/original/support.microsoft.com/kb/q231619/http://download.microsoft.com/download/4/7/a/original/support.microsoft.com/kb/q231619/http://download.microsoft.com/download/4/7/a/original/support.microsoft.com/kb/q231619/http://support.microsoft.com/kb/841696/en-ushttp://support.microsoft.com/kb/841696/en-ushttp://support.microsoft.com/default.aspx?scid=kb;EN-US;913945http://support.microsoft.com/default.aspx?scid=kb;EN-US;913945http://support.microsoft.com/default.aspx?scid=kb;EN-US;913945
8/17/2019 Microsoft SQL Server IO Internals
22/24
:ti#ities
Do7!#o$0 8SQLIO Dis6 S*bsyste5 Be!c25$r6 Too#
Do7!#o$0 8 SQLIOStress
*ti#ity to stress 0is6 s*bsyste5
3$""#ies to SQL Server ., -..., $!0-..K 8 re"#$ce0 7it2 SQLIOSi5 $!0SQL Server -.. i!st$##e0 i! BINN4
http://www.microsoft.com/downloads/details.aspx?FamilyID=9a8b005b-84e4-4f24-8d65-cb53442d9e19&DisplayLang=enhttp://www.microsoft.com/downloads/details.aspx?FamilyID=9a8b005b-84e4-4f24-8d65-cb53442d9e19&DisplayLang=enhttp://support.microsoft.com/kb/231619/en-ushttp://support.microsoft.com/kb/231619/en-ushttp://support.microsoft.com/kb/231619/en-ushttp://support.microsoft.com/kb/231619/en-ushttp://www.microsoft.com/downloads/details.aspx?FamilyID=9a8b005b-84e4-4f24-8d65-cb53442d9e19&DisplayLang=enhttp://www.microsoft.com/downloads/details.aspx?FamilyID=9a8b005b-84e4-4f24-8d65-cb53442d9e19&DisplayLang=en
8/17/2019 Microsoft SQL Server IO Internals
23/24
B#o% Co!te!t
SQL Server !rban Le"en#s Discusse#2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../.-/-&/s@#8server8*rb$!8#e%e!0s80isc*sse0$s"
$%w It &%r's: SQL Server Chec'p%int ()lushCache* Outstan#in" I/O Tar"et2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../.(/&&/2o78it87or6s8s@#8server8c2ec6"oi!t8=*s2c$c2e8o*tst$!0i!%8i8o8t$r%et$s"
$%w It &%r's: SQL Server +a"e All%cati%ns2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../.(/./2o78it87or6s8s@#8server8"$%e8$##oc$tio!s$s"
$%w It &%r's: Shapsh%t Database (,eplica* Dirty +a"e C%py Behavi%r (-ew+a"e*2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-.././-(/2o78it87or6s8s2$"s2ot80$t$b$se8re"#ic$80irty8"$%e8co"y8be2$vior8!e7"$%e$s"
$%w It &%r's: SQL Server .. I/O A0nity an# -!MA D%nt Always Mi22tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-.././&/2o78it87or6s8s@#8server8-..K8i8o8$!ity8$!08!*5$80o!8t8$#7$ys85i$s"
$%w It &%r's: Debu""in" SQL Server Stalle# %r Stuc' I/O +r%ble3s 4 ,%%t Cause2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../././2o78it87or6s80eb*%%i!%8s@#8server8st$##e08or8st*c68i8o8"rob#e5s8root8c$*se$s" $%w It &%r's: SQL Server .. Database Snapsh%ts (,eplica*
2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../.-/./2o78it87or6s8s@#8server8-..K80$t$b$se8s!$"s2ots8re"#ic$$s" $%w It &%r's: )ile Strea3 the Be5%re an# A5ter I3a"e %5 a )ile
2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../.&/&K/2o78it87or6s8#e8stre$58t2e8before8$!08$fter8i5$%e8of8$8#e$s" !sin" SQLIOSi3 t% Dia"n%se SQL Server ,ep%rte# Chec'su3 (6rr%r 78/79* )ailures
2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../&-/&'/*si!%8s@#iosi58to80i$%!ose8s@#8server8re"orte08c2ec6s*58error8-(8-8f$i#*res$s"
$%w t% use the SQLIOSi3 utility t% si3ulate SQL Server activity %n a #is' subsyste3
2tt"+//s*""ort5icrosoftco5/6b/-&&' Sh%ul# I run SQLIOSi3 4 An e43ail 5%ll%w4up 5r%3 SQL +ASS ..7
2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../&&/-(/s2o*#08i8r*!8s@#iosi58$!8e85$i#8fo##o78*"8fro58s@#8"$ss8-..$s" &hat #% I nee# t% 'n%w ab%ut SQL Server #atabase en"ine I/O
2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../&&/-/72$t80o8i8!ee08to86!o78$bo*t8s@#8server80$t$b$se8e!%i!e8i8o$s" SQLIOSi3 is ;-OT; an I/O +er5%r3ance Tunin" T%%l
2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../.(/.K/s@#iosi58is8!ot8$!8i8o8"erfor5$!ce8t*!i!%8too#$s" $%w It &%r's: SQLIOSi3 4 ,unnin" Avera"e< Tar"et Durati%n< Discar#e# Bu=ers >>>
2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-../&&/&-/2o78it87or6s8s@#iosi58r*!!i!%8$ver$%e8t$r%et80*r$tio!80isc$r0e08b*ers$s" $%w It &%r's: SQLIOSi3 ?Au#it !sers@ an# >I-I C%ntr%l )ile Secti%ns with !ser C%unt Opti%ns
2tt"+//b#o%s5s0!co5/"sss@#/$rc2ive/-.././&'/2o78it87or6s8s@#iosi58$*0it8*sers8$!08i!i8co!tro#8#e8sectio!s87it28*ser8co*!t8o"tio!s$s"
!n#erstan#in S LIOSIM Out ut
http://blogs.msdn.com/psssql/archive/2007/02/21/sql-server-urban-legends-discussed.aspxhttp://blogs.msdn.com/psssql/archive/2008/04/11/how-it-works-sql-server-checkpoint-flushcache-outstanding-i-o-target.aspxhttp://blogs.msdn.com/psssql/archive/2008/04/08/how-it-works-sql-server-page-allocations.aspxhttp://blogs.msdn.com/psssql/archive/2008/03/24/how-it-works-shapshot-database-replica-dirty-page-copy-behavior-newpage.aspxhttp://blogs.msdn.com/psssql/archive/2008/03/18/how-it-works-sql-server-2005-i-o-affinity-and-numa-don-t-always-mix.aspxhttp://blogs.msdn.com/psssql/archive/2008/03/03/how-it-works-debugging-sql-server-stalled-or-stuck-i-o-problems-root-cause.aspxhttp://blogs.msdn.com/psssql/archive/2008/02/07/how-it-works-sql-server-2005-database-snapshots-replica.aspxhttp://blogs.msdn.com/psssql/archive/2008/01/15/how-it-works-file-stream-the-before-and-after-image-of-a-file.aspxhttp://blogs.msdn.com/psssql/archive/2008/12/19/using-sqliosim-to-diagnose-sql-server-reported-checksum-error-824-823-failures.aspxhttp://blogs.msdn.com/psssql/archive/2008/12/19/using-sqliosim-to-diagnose-sql-server-reported-checksum-error-824-823-failures.aspxhttp://support.microsoft.com/kb/231619http://blogs.msdn.com/psssql/archive/2008/11/24/should-i-run-sqliosim-an-e-mail-follow-up-from-sql-pass-2008.aspxhttp://blogs.msdn.com/psssql/archive/2006/11/27/what-do-i-need-to-know-about-sql-server-database-engine-i-o.aspxhttp://blogs.msdn.com/psssql/archive/2008/04/05/sqliosim-is-not-an-i-o-performance-tuning-tool.aspxhttp://blogs.msdn.com/psssql/archive/2008/11/12/how-it-works-sqliosim-running-average-target-duration-discarded-buffers.aspxhttp://blogs.msdn.com/psssql/archive/2008/08/19/how-it-works-sqliosim-audit-users-and-ini-control-file-sections-with-user-count-options.aspxhttp://blogs.msdn.com/psssql/archive/2008/08/19/how-it-works-sqliosim-audit-users-and-ini-control-file-sections-with-user-count-options.aspxhttp://blogs.msdn.com/psssql/archive/2008/08/19/how-it-works-sqliosim-audit-users-and-ini-control-file-sections-with-user-count-options.aspxhttp://blogs.msdn.com/psssql/archive/2008/08/19/how-it-works-sqliosim-audit-users-and-ini-control-file-sections-with-user-count-options.aspxhttp://blogs.msdn.com/psssql/archive/2008/11/12/how-it-works-sqliosim-running-average-target-duration-discarded-buffers.aspxhttp://blogs.msdn.com/psssql/archive/2008/04/05/sqliosim-is-not-an-i-o-performance-tuning-tool.aspxhttp://blogs.msdn.com/psssql/archive/2006/11/27/what-do-i-need-to-know-about-sql-server-database-engine-i-o.aspxhttp://blogs.msdn.com/psssql/archive/2008/11/24/should-i-run-sqliosim-an-e-mail-follow-up-from-sql-pass-2008.aspxhttp://support.microsoft.com/kb/231619http://blogs.msdn.com/psssql/archive/2008/12/19/using-sqliosim-to-diagnose-sql-server-reported-checksum-error-824-823-failures.aspxhttp://blogs.msdn.com/psssql/archive/2008/12/19/using-sqliosim-to-diagnose-sql-server-reported-checksum-error-824-823-failures.aspxhttp://blogs.msdn.com/psssql/archive/2008/01/15/how-it-works-file-stream-the-before-and-after-image-of-a-file.aspxhttp://blogs.msdn.com/psssql/archive/2008/02/07/how-it-works-sql-server-2005-database-snapshots-replica.aspxhttp://blogs.msdn.com/psssql/archive/2008/03/03/how-it-works-debugging-sql-server-stalled-or-stuck-i-o-problems-root-cause.aspxhttp://blogs.msdn.com/psssql/archive/2008/03/18/how-it-works-sql-server-2005-i-o-affinity-and-numa-don-t-always-mix.aspxhttp://blogs.msdn.com/psssql/archive/2008/03/24/how-it-works-shapshot-database-replica-dirty-page-copy-behavior-newpage.aspxhttp://blogs.msdn.com/psssql/archive/2008/04/08/how-it-works-sql-server-page-allocations.aspxhttp://blogs.msdn.com/psssql/archive/2008/04/11/how-it-works-sql-server-checkpoint-flushcache-outstanding-i-o-target.aspxhttp://blogs.msdn.com/psssql/archive/2007/02/21/sql-server-urban-legends-discussed.aspx
8/17/2019 Microsoft SQL Server IO Internals
24/24
A00itio!$# Le$r!i!% Reso*rces
Insi#e SQL Server >. an# Insi#e SQL Server ...1ritte! by ;$#e! De#$!ey ) 2er 2*sb$!0 is $*# R$!0#e 72o 7rote t2e core 0bcc c2ec6s forSQL ., -... $!0 -..K
The urus ui#e t% SQL Server Architecture an# Internals ISB- .4.14..84E
1ritte! by ;e! $fter 2e oi!e0 Microsoft SQL Server S*""ort
M$!y c2$"ters revie7e0 by 0eve#o"ers $!0 fo#6s #i6e 5yse#f
SQL Server .. +ractical Tr%ublesh%%tin" ISB- .491488849 Fen$en#ers%n
A*t2ors of t2is boo6 7ere 6ey 0eve#o"ers or s*""ort te$5 5e5bers
Ces$r ) Q 0eve#o"er $!0 #e$0er of t2e Q Re0o!e 7it2 ;eit2e#5 $!0 $c6#i
S$5eert ) Deve#o"er of :MS $!0 SQLOS Sc2e0*#er
S$!teriv ) Deve#o"er of t2e #oc6 5$!$%er
S#$v$o ) Deve#o"er of t2e SOS 5e5ory 5$!$%ers $!0 e!%i!e $rc2itect1ei i$o ) E!%i!e 0eve#o"er
B$rt D*!c$! ) #o!% ti5e SQL EE $!0 !o7 0eve#o"er of t2e Microsoft D$t$ 1$re2o*se )"erfor5$!ce foc*se0
Bob 1$r0 ) SQL Server S*""ort Se!ior EE
A#vance# &in#%ws Debu""in" ISB- .4914988E1ritte! by Microsoft 0eve#o"ers ) ece##e!t reso*rce
Applicati%ns 5%r &in#%ws Ge=rey ,ichterG t 0 t i# b t 1i 0 b i