Upload
rodrigo-crespi
View
106
Download
0
Embed Size (px)
Citation preview
Query InternalsApril 2016
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
Agenda
• Por que conhecer?
• Ciclo de Vida de uma Query
• Arquitetura do SQL Server
• Select * from cliente
• Update cliente set nome = ‘Rodrigo’
• Plano de Execução
• Dúvidas
Por que conhecer?
Velocidade, escalabilidade e performance;
Maximizar o hardware;
Utilizar melhor todas as features;
Ciclo de Vida de Uma Query
Storage
Engine
Storage
(RAM
ou HD)
Cliente
Relat.
EngineStorage
Engine
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
SQLOS
SQLOS.dll
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
Protocolo TDS
TDS = Tabular Data Stream;
• Formato aberto;
• Linux FREETDS;
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
SQLOS
SQLOS.dll
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
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;
Command Parser
Verifica a sintaxe e traduz comandos T-SQL para um formato interno;
• Query Tree;
Query Optimizer
Pega a Query Tree do Parser e prepara para execução;
Se concentra apenas em DML;
Query Executor
É o executor, roda o plano que o Query Optimizer criou;
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
SQLOS
SQLOS.dll
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
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.
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
SQLOS
SQLOS.dll
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
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.
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
SQLOS
SQLOS.dll
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
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
IF
Query Tree
O
L
E
D
B
IF
Buffer Pool
Query Workspace
Query Compile
Token Perm
XEven
ts, M
eta
dad
os,
ou
tro
s...
Plano de Execução
• É a forma do otimizador calcular o caminho mais eficiente para a execução
do comando;
• Mais eficiente ou mais otimizado?
Demo 1
Relational Engine
OptimizerQuery
Executor
Cmd Parser
SNI
Camada de Protocolo
Storage Engine
Transaction
Manager
Access
Methods
Buffer
Manager
Data File
T-SQL
Update cliente set nome = ‘Rodrigo’
T
D
S
IF
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
Xeven
ts, M
eta
dad
os,
ou
tro
s...
Demo 2
Live Query Statistics
Exibe o processo de execução do Plano em tempo real;
/* CUIDADO ao executar em produção */
Demo 3
Dúvidas?
Upcoming SQLSaturdays
North America International
• Apr 30 Baltimore
• May 7 Jacksonville
• May 14 Rochester
• May 14 Houston
• May 21 Atlanta
• June 4 Maine
• Apr 23 Costa Rica
• May 21 El Salvador
• May 21 Kyiv
• May 28 Plovdiv
• May 28 Brisbane
• June 4 Bratislava
• June 4 Krasnodar
Visit www.sqlsaturday.com to
register for an event near you!
18 de Junho Rio de Janeiro
2
7
Volunteering Opportunities
PASS would not exist without its global network of
passionate, dedicated, and hardworking volunteers.
Volunteer today!
For local opportunities, please visit:
volunteer.sqlpass.org
For PASS HQ related activities, please update the
“MyVolunteering” section of your MyPASS profile.
Stay Involved!
• Sign up for a free membership today at sqlpass.org.
• Linked In: http://www.sqlpass.org/linkedin
• Facebook: http://www.sqlpass.org/facebook
• Twitter: @SQLPASS
• PASS: http://www.sqlpass.org
Patrocinadores
Obrigado
30
@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;
Sqlcrespi .com