SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Custo de Execução de Queries
- Oracle –
(versão 2015)
Carlos Pampulim Caldeira
http://www.di.uevora.pt/~ccaldeira
http://www.linkedin.com/in/carlospampulimcaldeira
Administração de Bases de Dados
O que fazer?
1. SQL> DESC plan_table;
2. Correr o script utlxplan.sql
Plan_table
Explain plan
EXPLAIN PLAN SET STATEMENT_ID =
'DEPARTAMENTO' FOR
SELECT * FROM "Departamento";
Plan set succeeded.
Script para ler plan_table
UNDEFINE v_statement_id;
SELECT
id ||
DECODE(id, 0, '', LPAD(' ', 2*(level - 1))) || ' ' ||
operation || ' ' ||
options || ' ' ||
object_name || ' ' ||
object_type || ' ' ||
DECODE(cost, NULL, '', 'Cost = ' || position)
AS “Plano de Execução”
FROM plan_table
CONNECT BY PRIOR id = parent_id
AND statement_id = '&&v_statement_id'
START WITH id = 0
AND statement_id = '&v_statement_id';
Ordem das operações
A ordem das operações é a seguinte:
• A mais chegada à direita é a primeira a ser
executada, seguida pelas operações-pai;
• Nas operações com mesma posição, a
primeira a ser executada é a de topo, seguida
pelas operações-pai.
Ordem das operações
0 SELECT STATEMENT Cost = 6
1 MERGE JOIN Cost = 1
2 TABLE ACCESS BY INDEX ROWID TIPOS TABLE Cost = 1
3 INDEX FULL SCAN TIPOS_CP INDEX (UNIQUE) Cost = 1
4 SORT JOIN Cost = 2
5 TABLE ACCESS FULL PRODUTOS TABLE Cost = 1
Ordem de execução: 3, 2, 5, 4, 1 e 0.
Comparação de planos de execução
0 SELECT STATEMENT Cost = 4
………
versus
0 SELECT STATEMENT Cost = 5
………
Sumário
• O tuning é o mecanismo que permite
aumentar a performance do SQL;
• O optimizador relacional é um subsistema de
AI que gera planos de execução.

Weitere ähnliche Inhalte

Ähnlich wie Custo de Execução de Queries e Planos de Execução

Stored Procedures com PostgreSQL: porque usar.
Stored Procedures com PostgreSQL:  porque usar.Stored Procedures com PostgreSQL:  porque usar.
Stored Procedures com PostgreSQL: porque usar.Atmos Maciel
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dadosHenrique Fernandes
 
um breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidadesum breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidadesWilliam Costa
 
Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4Ed W. Jr
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas
 
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresOracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresAlex Zaballa
 
Validação e Operações CRUD em PHP
Validação e Operações CRUD em PHPValidação e Operações CRUD em PHP
Validação e Operações CRUD em PHPBreno Vitorino
 
Apresentando o EcmaScript 6
Apresentando o EcmaScript 6Apresentando o EcmaScript 6
Apresentando o EcmaScript 6Giovanni Bassi
 
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoLidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoRafael Ponte
 

Ähnlich wie Custo de Execução de Queries e Planos de Execução (20)

Stored Procedures com PostgreSQL: porque usar.
Stored Procedures com PostgreSQL:  porque usar.Stored Procedures com PostgreSQL:  porque usar.
Stored Procedures com PostgreSQL: porque usar.
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Doctrine for Dummies
Doctrine for DummiesDoctrine for Dummies
Doctrine for Dummies
 
Pdo do PHP Palestra
Pdo do PHP PalestraPdo do PHP Palestra
Pdo do PHP Palestra
 
Como conectar programas em linguagem java a bases de dados
Como conectar programas em linguagem java  a bases de dadosComo conectar programas em linguagem java  a bases de dados
Como conectar programas em linguagem java a bases de dados
 
Artigoajax
ArtigoajaxArtigoajax
Artigoajax
 
Design patterns
Design patternsDesign patterns
Design patterns
 
Falando "Postgrês"
Falando "Postgrês"Falando "Postgrês"
Falando "Postgrês"
 
um breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidadesum breve treinamento sobre SQL e suas funcionalidades
um breve treinamento sobre SQL e suas funcionalidades
 
Banco de dados aula 4
Banco de dados aula 4Banco de dados aula 4
Banco de dados aula 4
 
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
PGDay Campinas 2013 - PL/pg…ETL – Transformação de dados para DW e BI usando ...
 
Palestra de PDO
Palestra de PDOPalestra de PDO
Palestra de PDO
 
Vb
VbVb
Vb
 
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e DesenvolvedoresOracle Database 12c - Novas Características para DBAs e Desenvolvedores
Oracle Database 12c - Novas Características para DBAs e Desenvolvedores
 
MRO simula
MRO simulaMRO simula
MRO simula
 
NoSQL azure
NoSQL azureNoSQL azure
NoSQL azure
 
Validação e Operações CRUD em PHP
Validação e Operações CRUD em PHPValidação e Operações CRUD em PHP
Validação e Operações CRUD em PHP
 
Apresentando o EcmaScript 6
Apresentando o EcmaScript 6Apresentando o EcmaScript 6
Apresentando o EcmaScript 6
 
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto CriticoLidando com o Caos: Testando Código PLSQL em um Projeto Critico
Lidando com o Caos: Testando Código PLSQL em um Projeto Critico
 
Aula1
Aula1Aula1
Aula1
 

Mehr von Carlos Pampulim Caldeira

Administração de Bases de Dados - Introdução
Administração de Bases de Dados - IntroduçãoAdministração de Bases de Dados - Introdução
Administração de Bases de Dados - IntroduçãoCarlos Pampulim Caldeira
 
Afinação da Aplicação | Caminho de Acesso aos Dados
Afinação da Aplicação | Caminho de Acesso aos DadosAfinação da Aplicação | Caminho de Acesso aos Dados
Afinação da Aplicação | Caminho de Acesso aos DadosCarlos Pampulim Caldeira
 
Revisão do Desenho da Base de Dados | 2015
Revisão do Desenho da Base de Dados | 2015Revisão do Desenho da Base de Dados | 2015
Revisão do Desenho da Base de Dados | 2015Carlos Pampulim Caldeira
 
Salvaguarda e Recuperação da Base de Dados | Oracle
Salvaguarda e Recuperação da Base de Dados | OracleSalvaguarda e Recuperação da Base de Dados | Oracle
Salvaguarda e Recuperação da Base de Dados | OracleCarlos Pampulim Caldeira
 
Administração de bases de dados introdução
Administração de bases de dados   introduçãoAdministração de bases de dados   introdução
Administração de bases de dados introduçãoCarlos Pampulim Caldeira
 
Revisão do Desenho da Base de Dados - Design Review
Revisão do Desenho da Base de Dados - Design ReviewRevisão do Desenho da Base de Dados - Design Review
Revisão do Desenho da Base de Dados - Design ReviewCarlos Pampulim Caldeira
 

Mehr von Carlos Pampulim Caldeira (20)

Administração de Bases de Dados - Introdução
Administração de Bases de Dados - IntroduçãoAdministração de Bases de Dados - Introdução
Administração de Bases de Dados - Introdução
 
Estatísticas | Oracle | 2015
Estatísticas | Oracle | 2015Estatísticas | Oracle | 2015
Estatísticas | Oracle | 2015
 
Afinação da Aplicação | Caminho de Acesso aos Dados
Afinação da Aplicação | Caminho de Acesso aos DadosAfinação da Aplicação | Caminho de Acesso aos Dados
Afinação da Aplicação | Caminho de Acesso aos Dados
 
Revisão do Desenho da Base de Dados | 2015
Revisão do Desenho da Base de Dados | 2015Revisão do Desenho da Base de Dados | 2015
Revisão do Desenho da Base de Dados | 2015
 
Disponibilidade da Base de Dados
Disponibilidade da Base de DadosDisponibilidade da Base de Dados
Disponibilidade da Base de Dados
 
Salvaguarda e Recuperação da Base de Dados | Oracle
Salvaguarda e Recuperação da Base de Dados | OracleSalvaguarda e Recuperação da Base de Dados | Oracle
Salvaguarda e Recuperação da Base de Dados | Oracle
 
Views | Controlo de acesso aos dados
Views | Controlo de acesso aos dadosViews | Controlo de acesso aos dados
Views | Controlo de acesso aos dados
 
SQL e Transações
SQL e TransaçõesSQL e Transações
SQL e Transações
 
DBA | Tabelas de teste
DBA | Tabelas de testeDBA | Tabelas de teste
DBA | Tabelas de teste
 
Google BigQuery
Google BigQueryGoogle BigQuery
Google BigQuery
 
Administração de bases de dados introdução
Administração de bases de dados   introduçãoAdministração de bases de dados   introdução
Administração de bases de dados introdução
 
Ambiente de exploração oracle
Ambiente de exploração oracleAmbiente de exploração oracle
Ambiente de exploração oracle
 
Gestão da Aplicação
Gestão da AplicaçãoGestão da Aplicação
Gestão da Aplicação
 
Oracle | Estatísticas
Oracle | EstatísticasOracle | Estatísticas
Oracle | Estatísticas
 
User Management
User ManagementUser Management
User Management
 
Database Performance
Database PerformanceDatabase Performance
Database Performance
 
Data Availability
Data AvailabilityData Availability
Data Availability
 
Alterações na Base de Dados
Alterações na Base de DadosAlterações na Base de Dados
Alterações na Base de Dados
 
Revisão do Desenho da Base de Dados - Design Review
Revisão do Desenho da Base de Dados - Design ReviewRevisão do Desenho da Base de Dados - Design Review
Revisão do Desenho da Base de Dados - Design Review
 
Sistema Spares
Sistema SparesSistema Spares
Sistema Spares
 

Custo de Execução de Queries e Planos de Execução

  • 1. Custo de Execução de Queries - Oracle – (versão 2015) Carlos Pampulim Caldeira http://www.di.uevora.pt/~ccaldeira http://www.linkedin.com/in/carlospampulimcaldeira Administração de Bases de Dados
  • 2. O que fazer? 1. SQL> DESC plan_table; 2. Correr o script utlxplan.sql
  • 4. Explain plan EXPLAIN PLAN SET STATEMENT_ID = 'DEPARTAMENTO' FOR SELECT * FROM "Departamento"; Plan set succeeded.
  • 5. Script para ler plan_table UNDEFINE v_statement_id; SELECT id || DECODE(id, 0, '', LPAD(' ', 2*(level - 1))) || ' ' || operation || ' ' || options || ' ' || object_name || ' ' || object_type || ' ' || DECODE(cost, NULL, '', 'Cost = ' || position) AS “Plano de Execução” FROM plan_table CONNECT BY PRIOR id = parent_id AND statement_id = '&&v_statement_id' START WITH id = 0 AND statement_id = '&v_statement_id';
  • 6. Ordem das operações A ordem das operações é a seguinte: • A mais chegada à direita é a primeira a ser executada, seguida pelas operações-pai; • Nas operações com mesma posição, a primeira a ser executada é a de topo, seguida pelas operações-pai.
  • 7. Ordem das operações 0 SELECT STATEMENT Cost = 6 1 MERGE JOIN Cost = 1 2 TABLE ACCESS BY INDEX ROWID TIPOS TABLE Cost = 1 3 INDEX FULL SCAN TIPOS_CP INDEX (UNIQUE) Cost = 1 4 SORT JOIN Cost = 2 5 TABLE ACCESS FULL PRODUTOS TABLE Cost = 1 Ordem de execução: 3, 2, 5, 4, 1 e 0.
  • 8. Comparação de planos de execução 0 SELECT STATEMENT Cost = 4 ……… versus 0 SELECT STATEMENT Cost = 5 ………
  • 9. Sumário • O tuning é o mecanismo que permite aumentar a performance do SQL; • O optimizador relacional é um subsistema de AI que gera planos de execução.

Hinweis der Redaktion

  1. Operation ID Description 3 Full scan of the index product_types_pk (which is a unique index) to obtain the addresses of the rows in the product_types table. The addresses are in the form of ROWID values, which are passed to operation 2. 2 Access the rows in the product_types table using the list of ROWID values passed from operation 3. The rows are passed to operation 1. 5 Access the rows in the products table. The rows are passed to operation 4. 4 Sort the rows passed from operation 5. The sorted rows are passed to operation 1. 1 Merge the rows passed from operations 2 and 5. The merged rows are passed to operation 0. 0 Return the rows from operation 1 to the user. The total cost of the query is 6 work units.
  2. Work units = Unidades de trabalho