tdc sp -2016 sql internals

33
Globalcode – Open4education SQL Server Query Internals Rodrigo Crespi MCT, MCDBA, MCITP, MCSE e etc. Especialista em Banco de Dados – UGF

Upload: rodrigo-crespi

Post on 17-Jan-2017

32 views

Category:

Software


3 download

TRANSCRIPT

Page 1: TDC SP -2016 SQL Internals

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

Page 2: TDC SP -2016 SQL Internals

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

Page 3: TDC SP -2016 SQL Internals

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.

Page 4: TDC SP -2016 SQL Internals

Globalcode – Open4education

Por que conhecer?

Velocidade, escalabilidade e performance;

Maximizar o hardware;

Utilizar melhor todas as features;

Page 5: TDC SP -2016 SQL Internals

Globalcode – Open4education

Ciclo de Vida de Uma Query

Storage

Engine

Storage

(RAM

ou HD)

Cliente

Relat.

EngineStorage

Engine

Page 6: TDC SP -2016 SQL Internals

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

Page 7: TDC SP -2016 SQL Internals

Globalcode – Open4education

Protocolo TDS

TDS = Tabular Data Stream;

Formato aberto;

Linux FREETDS;

Page 8: TDC SP -2016 SQL Internals

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

Page 9: TDC SP -2016 SQL Internals

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;

Page 10: TDC SP -2016 SQL Internals

Globalcode – Open4education

Command Parser

Verifica a sintaxe e traduz comandos T-SQL para

um formato interno;

Query Tree;

Page 11: TDC SP -2016 SQL Internals

Globalcode – Open4education

Query Optimizer

Pega a Query Tree do Parser e prepara para

execução;

Se concentra apenas em DML;

Page 12: TDC SP -2016 SQL Internals

Globalcode – Open4education

Query Executor

É o executor, roda o plano que o Query Optimizer

criou;

Page 13: TDC SP -2016 SQL Internals

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

Page 14: TDC SP -2016 SQL Internals

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.

Page 15: TDC SP -2016 SQL Internals

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

Page 16: TDC SP -2016 SQL Internals

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.

Page 17: TDC SP -2016 SQL Internals

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;

Page 18: TDC SP -2016 SQL Internals

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.

Page 19: TDC SP -2016 SQL Internals

Globalcode – Open4education

Analogia

Scheduler Task Running

Tasks in Runnable Task in Runnable

Worker

Page 20: TDC SP -2016 SQL Internals

Globalcode – Open4education

Query Optimizer

Pase e logical query tree;

Binding;

Gerar um plano físico;

Page 21: TDC SP -2016 SQL Internals

Globalcode – Open4education

Custo

Segundo

Coner

Cunningham

em uma

palestra do

SQLBits.

Page 22: TDC SP -2016 SQL Internals

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

Page 23: TDC SP -2016 SQL Internals

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

Page 24: TDC SP -2016 SQL Internals

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

Page 25: TDC SP -2016 SQL Internals

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

Page 26: TDC SP -2016 SQL Internals

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?

Page 27: TDC SP -2016 SQL Internals

Globalcode – Open4education

Demo 1

Page 28: TDC SP -2016 SQL Internals

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

Page 29: TDC SP -2016 SQL Internals

Globalcode – Open4education

Demo 2

Page 30: TDC SP -2016 SQL Internals

Globalcode – Open4education

Dúvidas?

Page 31: TDC SP -2016 SQL Internals

Globalcode – Open4education

SQL Saturday 570

8 de Outubro

UNIP Tatuapé, Rua

Antônio Macedo,

505, São Paulo, São

Paulo, 03087-040,

Brazil

Page 32: TDC SP -2016 SQL Internals

Globalcode – Open4education

SQLPASS.ORG

http://sqlservers.com.br

Youtube: SQL SERVER RS

@SQLSERVERRS

Page 33: TDC SP -2016 SQL Internals

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