Como sintonizar sql em 12c oráculo
O maior estrondo que você está indo para obter em termos de ajuste de desempenho para seus bancos de dados da Oracle 12c é por ter boa Structured Query Language (SQL). SQL mal escrito é predominantemente a causa para a maioria dos problemas de desempenho em qualquer banco de dados.
Conteúdo
Video: using sql tuning advisor
Escrever um bom SQL de o ir buscar quando um novo aplicativo está sendo desenvolvido pode poupar baldes de dinheiro e tempo mais tarde. Infelizmente, como um administrador de banco de dados, a maioria das situações você se encontra em estão em sistemas pré-existentes, onde o SQL já está em vigor.
Como gerar um plano de explicar no Oracle 12c
Digamos que você se estreitou um problema de desempenho para baixo para uma instrução SQL específica no banco de dados. Através questionando o usuário e testar o problema sozinho, você foi capaz de replicar o problema com uma instrução SQL específica.
Uma das ferramentas fornecidas com o banco de dados que primeiro você quer se familiarizar com é Explicar Plano. Explicar Plano faz exatamente o que diz. Ele mostra a execução da instrução SQL e explica o que cada passo do plano está fazendo.
O Plano de explicar é gerado usando o comando SQL explain plan para. Como um exemplo simples, digamos que você tem a seguinte instrução SQL, que está levando muito tempo para executar:
first_name SELECT, last_nameFROM empWHERE last_name = `Hopkins`-
Aqui está como você gerar um plano de explicação para a instrução anterior:
EXPLAIN PLAN FORSELECT first_name, last_nameFROM empWHERE last_name = `Hopkins`-
Você vê esta saída depois de gerar o plano de explicação:
Explicou.
Após a instrução SQL é explicada, por padrão, o plano é armazenado na tabela do dicionário de dados chamado de PLAN_TABLE $. Há um sinônimo público, PLAN_TABLE, que permite que todos os usuários tenham acesso a essa tabela interna.
Como exibir e ler a saída instrução SQL no Oracle 12c
Você pode retirar as informações no PLAN_TABLE em um número de maneiras. Existe uma grande quantidade de informações a ser exibido. Exibindo tudo isso nem sempre é útil. Um método simples é para executar um script do Oracle fornecido para ler e formatar as informações.
Este método exibe apenas o mais recente Explicar Plano. O script é armazenado no diretório $ ORACLE_HOME / rdbms / admin. O script é chamado utlxpls. De SQL na mesma sessão onde você executou o EXPLICAR, digite o seguinte:
SQLgt; @? Rdbmsadminutlxpls
Um atalho para especificar ORACLE_HOME é o “?”, Como mostrado na declaração anterior.
A saída explicou de sua instrução SQL semelhante a este:
PLAN_TABLE_OUTPUT ------------------------------------------------- ------------------------- Plano valor de hash: 3956160932 -------------------- -------------------------------------------------- ---- | Id | operação | Nome | linhas | bytes | Custo (% CPU) | Tempo | ------------------------------------------------ -------------------------- | 0 | Instrução SELECT | | 1 | 15 | 40335 (2) | 00:00:02 || * 1 | QUADRO DE ACESSO COMPLETO | EMP | 1 | 15 | 40335 (2) | 00:00:02 | -------------------------------------------- ------------------------------ Informações predicado (identificado pelo código de operação): ----------- ---------------------------------------- 1 - filtro ("ÚLTIMO NOME"= `Hopkins)
Embora ele tenha alguma experiência para ler os detalhes finos na saída de EXPLAIN PLAN, algumas coisas saltar para fora:
O uso de uma varredura completa da tabela (QUADRO DE ACESSO COMPLETO EMP)
A informação predicado (1 -. Filtro ( “LAST_NAME” =’Hopkins’) Esta é a sua cláusula WHERE.
Video: Oracle SQL Performance Analyzer
O número 1 combinando a informação predicado de volta para a operação. Os índices Número este volta para a etapa na secção acima. Neste exemplo, parece simples, mas, se você tem um plano de explicação com dezenas de linhas, isso pode ser muito útil.
Outro bit de informação que você pode notar é o valor para a COST. No caso anterior, o custo é de 40335. Embora o custo por si só não significa necessariamente nada pelo valor de face, você pode usá-lo para comparar as alterações que você fizer para o plano de execução. Normalmente, quanto mais baixo o custo é, melhor o seu plano.
Video: Let's Learn SQL! Lesson 23 : Derived Tables with Aggregates!
Demonstrações com muitas operações diferentes têm custos associados a cada etapa. Ao olhar para o custo de cada etapa, você pode determinar o estágio da execução é o mais caro (resource-wise, não o dinheiro-wise). Depois, você pode focar a sua sintonia no palco. Na maioria das vezes, como você fazer alterações e reduzir o custo, você está fazendo se move na direção certa.
Aqui está um exemplo mais complexo de um plano de execução:
explicar plano first_name forSELECT, last_name, department_nameFROM emp juntar departamentos usando (department_id) ONDE last_name = `Hopkins-Explained.Elapsed: 00: 00: 00.09SQLgt; @? RdbmsadminutlxplsPLAN_TABLE_OUTPUT ----------------------------------------------- ----------------------------------- Plano valor de hash: 3338584009 ---------- -------------------------------------------------- ---------------------------- | Id | operação | Nome | linhas | bytes | Custo (% CPU) | Tempo | ------------------------------------------------ ---------------------------------------- | 0 | Instrução SELECT | | 1 | 34 | 40336 (2) | 00:00:02 || 1 | Nested Loops | ||| | || 2 | Nested Loops | | 1 | 34 | 40336 (2) | 00:00:02 || * 3 | QUADRO DE ACESSO COMPLETO | EMP | 1 | 18 | 40335 (2) | 00:00:02 || * 4 | UNIQUE INDEX SCAN | DEPT_ID_PK | 1 || 0 (0) | 00:00:01 || 5 | ACESSO tabela por ROWID ÍNDICE | DEPARTAMENTOS | 1 | 16 | 1 (0) | 00:00:01 | -------------------------------------------- -------------------------------------- Informação predicado (identificado pelo código de operação): --- ------------------------------------------------ 3 - filtro("EMP"."ÚLTIMO NOME"= `Hopkins) 4 - acesso ("EMP"."DEPARTMENT_ID"="DEPARTAMENTOS"."DEPARTMENT_ID")
Neste exemplo, você vê cinco operações. Ao olhar para a operação de altura (Passo 5) e trabalhando para trás, você pode ver que o custo parece com isso:
Passo 5 = 1
Passo 4 = 0
Passo 3 = 40335
Etapa 2 = 40336
Passo 1 = 40.336
Total = 40336
Observe como o custo de todas as etapas acrescenta-se. Além disso, observe como o custo do Passo 3 é de longe o mais caro. Com isso dito, um administrador de banco de dados (DBA) gostaria de concentrar seus esforços de ajuste na Etapa 3.