tdc sp -2016 sql internals
TRANSCRIPT
Globalcode – Open4education
SQL Server – Query Internals
Rodrigo Crespi
M C T , M C D B A , M C I T P , M C S E e e t c .
E s p e c i a l i s t a e m B a n c o d e D a d o s – U G F
Globalcode – Open4education
Quem é você?
Rodr igo Crespi
M C T , M C D B A , M C I T P , M C S E e e t c .
E s p e c i a l i s t a e m B a n c o d e D a d o s – U G F
M e s t r a n d o e m E n g e n h a r i a d e S o f t w a r e - U E M C
P A S S C h a p t e r L e a d e r – S Q L S e r v e r R S
@SQLCresp
i
rodr igocrespi
br . l inkedin.com/in/ rodr igocresp i
sqlcrespi .com
Globalcode – Open4education
Agenda
Por que conhecer?;
Ciclo de Vida de Uma Query;
Arquitetura do SQL Server;
Select * from Cliente;
Update cliente set nome = ‘Rodrigo’;
Wait;
Physical Query Tree;
Dúvidas.
Globalcode – Open4education
Por que conhecer?
Velocidade, escalabilidade e performance;
Maximizar o hardware;
Utilizar melhor todas as features;
Globalcode – Open4education
Ciclo de Vida de Uma Query
Storage
Engine
Storage
(RAM
ou HD)
Cliente
Relat.
EngineStorage
Engine
Globalcode – Open4education
Arquitetura do SQL Server
P
r
o
t
o
c
o
l
o
s
Parser
Optimizer
SQL Mgr.
DB. Mgr.
Query
Executor
R
e
l
a
t
i
o
n
a
l
E
n
g
i
n
e
S
t
o
r
a
g
e
E
n
g
i
n
e
T-Services
Lock Mgr.
File Mgr.
Utilities
Access
Methods
S
Q
L
O
S
SQLLang.dll
PageLock Monitor
Resource Monitor
Lazy Writer
Scheduler Monitor
SQLmin.dll
Buffer Pool
Memory Mgr.
Scheduling
Sinc. Services
Lock Mgr.
I/O
SQLDK.dll
SQLOS.dll
Globalcode – Open4education
Protocolo TDS
TDS = Tabular Data Stream;
Formato aberto;
Linux FREETDS;
Globalcode – Open4education
Arquitetura do SQL Server
P
r
o
t
o
c
o
l
o
s
Parser
Optimizer
SQL Mgr.
DB. Mgr.
Query
Executor
R
e
l
a
t
i
o
n
a
l
E
n
g
i
n
e
S
t
o
r
a
g
e
E
n
g
i
n
e
T-Services
Lock Mgr.
File Mgr.
Utilities
Access
Methods
S
Q
L
O
S
SQLLang.dll
PageLock Monitor
Resource Monitor
Lazy Writer
Scheduler Monitor
SQLmin.dll
Buffer Pool
Memory Mgr.
Scheduling
Sinc. Services
Lock Mgr.
I/O
SQLDK.dll
SQLOS.dll
Globalcode – Open4education
Relational Engine
Também é chamado de Query Processor;
Inclui os componente do SQL Server que
determinam exatamente o que a query necessita
fazer e a melhor maneira de fazer;
Globalcode – Open4education
Command Parser
Verifica a sintaxe e traduz comandos T-SQL para
um formato interno;
Query Tree;
Globalcode – Open4education
Query Optimizer
Pega a Query Tree do Parser e prepara para
execução;
Se concentra apenas em DML;
Globalcode – Open4education
Query Executor
É o executor, roda o plano que o Query Optimizer
criou;
Globalcode – Open4education
Arquitetura do SQL Server
P
r
o
t
o
c
o
l
o
s
Parser
Optimizer
SQL Mgr.
DB. Mgr.
Query
Executor
R
e
l
a
t
i
o
n
a
l
E
n
g
i
n
e
S
t
o
r
a
g
e
E
n
g
i
n
e
T-Services
Lock Mgr.
File Mgr.
Utilities
Access
Methods
S
Q
L
O
S
SQLLang.dll
PageLock Monitor
Resource Monitor
Lazy Writer
Scheduler Monitor
SQLmin.dll
Buffer Pool
Memory Mgr.
Scheduling
Sinc. Services
Lock Mgr.
I/O
SQLDK.dll
SQLOS.dll
Globalcode – Open4education
Storage Engine
Inclui todos os componentes para acessar e
gerenciar dados;
É composto de três grandes áreas:
Métodos de acesso;
Serviços de transação e lock;
Comandos utilitários.
Globalcode – Open4education
Arquitetura do SQL Server
P
r
o
t
o
c
o
l
o
s
Parser
Optimizer
SQL Mgr.
DB. Mgr.
Query
Executor
R
e
l
a
t
i
o
n
a
l
E
n
g
i
n
e
S
t
o
r
a
g
e
E
n
g
i
n
e
T-Services
Lock Mgr.
File Mgr.
Utilities
Access
Methods
S
Q
L
O
S
SQLLang.dll
PageLock Monitor
Resource Monitor
Lazy Writer
Scheduler Monitor
SQLmin.dll
Buffer Pool
Memory Mgr.
Scheduling
Sinc. Services
Lock Mgr.
I/O
SQLDK.dll
SQLOS.dll
Globalcode – Open4education
SQLOS
Surge no SQL Server 2005;
Componente anterior era UMScheduler;
SQLOS tem a função de:
Gerenciar memória;
Scheduling;
Gerenciar I/O;
Tratamento de exceção;
Dumping;
Etc.
Globalcode – Open4education
Workers e Schedulers
SQLOS cria um conjunto de schedulers que inicia
igual ao número de CPUs lógicas;
Cada scheduler gerencia os Workers. Cada tarefa
à executar é atribuída a um Worker que esta em
Idle;
Workers não se movem entre schedulers e tasks
nunca se movem entre workers;
Entretanto o SQLOS pode criar tasks filhas e associar
em diferentes workers;
Globalcode – Open4education
Tasks
Podem ter um dos seis estados:
Pending: aguardando for algum worker disponível;
Done: concluída;
Running: sendo executada;
Runnable: aguardando um scheduler;
Suspended: aguardando por um recurso ou evento
externo;
Spinloop: processando um spinlock.
Globalcode – Open4education
Analogia
Scheduler Task Running
Tasks in Runnable Task in Runnable
Worker
Globalcode – Open4education
Query Optimizer
Pase e logical query tree;
Binding;
Gerar um plano físico;
Globalcode – Open4education
Custo
Segundo
Coner
Cunningham
em uma
palestra do
SQLBits.
Globalcode – Open4education
Arquitetura do SQL Server
P
r
o
t
o
c
o
l
o
s
Parser
Optimizer
SQL Mgr.
DB. Mgr.
Query
Executor
R
e
l
a
t
i
o
n
a
l
E
n
g
i
n
e
S
t
o
r
a
g
e
E
n
g
i
n
e
T-Services
Lock Mgr.
File Mgr.
Utilities
Access
Methods
S
Q
L
O
S
SQLLang.dll
PageLock Monitor
Resource Monitor
Lazy Writer
Scheduler Monitor
SQLmin.dll
Buffer Pool
Memory Mgr.
Scheduling
Sinc. Services
Lock Mgr.
I/O
SQLDK.dll
SQLOS.dll
Globalcode – Open4education
Relational Engine
OptimizerQuery
Executor
Cmd Parser
SNI
Camada de
Protocolo
Storage Engine
Transaction
Manager
Access
Methods
Buffer
Manager
Lock Manager
Data Cache
Plan Cache
Data File
T-SQL
Select * from cliente
T
D
S
Query
Tree
O
L
E
D
B
IF
Buffer Pool
Query Workspace
Query Compile
Token Perm
XE
ve
nts
, M
eta
da
do
s,
ou
tro
s..
.
IF
S
Q
L
O
S
Globalcode – Open4education
Wait SOS_Scheduler_Yield
Async_Network_IOWritelog,
LogBuffer
PageIOLatch_x,
Async_IO_Completion,
IO_Completion
Pagelatch_x, Latch_x,
Resource_SemaphoreLocksLCK_x, LCK_M_x
Latches
OLEDB
BackupIOCXPacket
IO_Completion
MSQL_XP
MSQL_DQ
PreEmptive_OS_ThreadPool
Globalcode – Open4education
Relational Engine
OptimizerQuery
Executor
Cmd Parser
SNI
Camada de
Protocolo
Storage Engine
Transaction
Manager
Access
Methods
Buffer
Manager
Lock Manager
Data Cache
Plan Cache
Data File
T-SQL
Wait
T
D
S
Query
Tree
O
L
E
D
B
Buffer Pool
Query Workspace
Query Compile
Token Perm
XE
ve
nts
, M
eta
da
do
s,
ou
tro
s..
.
Async_Net
work_IO
SOS_Scheduler_Yield, CXPacket
Pagelatch_x, Latch_x,
Resource_Semaphore
Latches
PageIOLatch_x,
Async_IO_Completio
n, IO_Completion
Writelog,
LogBuffer
Locks
LCK_x,
LCK_M_x
S
Q
L
O
S
Globalcode – Open4education
Physical Query Tree
• É a forma do otimizador calcular o caminho mais eficiente para a
execução do comando;
• Mais eficiente ou mais otimizado?
Globalcode – Open4education
Demo 1
Globalcode – Open4education
Relational Engine
OptimizerQuery
Executor
Cmd Parser
SNI
Camada de
Protocolo
Storage Engine
Transaction
Manager
Access
Methods
Buffer
ManagerData File
T-SQL
Update cliente set nome = ‘Rodrigo’
T
D
S
Query Tree
O
L
E
D
B
IF
Lazy Writer
CheckPoint
Lock Manager
Data Cache
Plan Cache
Buffer Pool
Query Workspace
Query Compile
Token Perm
Xe
ve
nts
, M
eta
dad
os
,
ou
tro
s..
.
Lock
S
Q
L
O
S
Globalcode – Open4education
Demo 2
Globalcode – Open4education
Dúvidas?
Globalcode – Open4education
SQL Saturday 570
8 de Outubro
UNIP Tatuapé, Rua
Antônio Macedo,
505, São Paulo, São
Paulo, 03087-040,
Brazil
Globalcode – Open4education
SQLPASS.ORG
http://sqlservers.com.br
Youtube: SQL SERVER RS
@SQLSERVERRS
Globalcode – Open4education
Obrigado
37
@SQLCresp
i
rodr igocrespi
br. l inkedin.com/in/ rodr igocres
pi
Referências e dicas de leitura:
• https://en.wikipedia.org/wiki/Cache_algorithms;
• Microsoft SQL Server 2012 Internals;
• Microsoft SQL Server 2008 Internals and Troubleshooting;
• https://www.sqlpassion.at/archive/2014/06/30/introduction-to-spinlocks-in-sql-server-2/• http://blogs.msdn.com/jimmymay/archive/2009/04/27/wait-stats-by-joe-sack.aspx
• Presentation Deck for "Performance Tuning with Wait Statistics"http://blogs.msdn.com/joesack/archive/2009/04/22/presentation-deck-for-performance-tuning-with-wait-statistics.aspx
Sqlcrespi .com