Você está na página 1de 100

DB2

DB2 Verso 9
para Linux e Windows

Tutorial do Visual Explain

S517-8703-00

DB2

DB2 Verso 9
para Linux e Windows

Tutorial do Visual Explain

S517-8703-00

Antes de utilizar estas informaes e o produto a que elas se referem, certifique-se de ter lido as informaes gerais na seo Avisos.

Avisos sobre a Edio Este documento contm informaes de propriedade da IBM. Ele fornecido sob um acordo de licena e protegido pela lei de copyright. As informaes contidas nesta publicao no incluem garantias de produto, e nenhuma declarao feita neste manual deve ser interpretada como tal. Voc pode solicitar publicaes da IBM on-line ou atravs do representante IBM local. v Para solicitar publicaes on-line, acesse o IBM Publications Center em www.ibm.com/shop/publications/order v Para localizar o representante IBM local, acesse o IBM Directory of Worldwide Contacts em www.ibm.com/ planetwide Para solicitar publicaes do DB2 atravs do Departamento de Marketing e Vendas nos Estados Unidos e Canad, ligue para 1-800-IBM-4YOU (426-4968). No Brasil, ligue para 0-800-7014-262. Quando o Cliente envia seus comentrios, concede direitos, no exclusivos, IBM para us-los ou distribu-los da maneira que achar conveniente, sem que isso implique em qualquer compromisso ou obrigao para com o Cliente. Direitos Autorais International Business Machines Corporation 2002, 2006. Todos os direitos reservados.

ndice
Sobre este Tutorial . . . . . . . . . . 1 Lio 1. Criando Capturas Instantneas de Explicao . . . . . . . . . . . . 3
Criando Tabelas de Explicao . . . . . . . Utilizando Capturas Instantneas de Explicao . Criando Capturas Instantneas de Explicao para Instrues SQL ou XQuery Dinmicas . . . . . Criando Capturas Instantneas de Explicao para Instrues SQL ou XQuery Estticas . . . . . . 3 . 4 . 5 . 6 Coletando Estatsticas Atuais para as Tabelas e ndices Utilizando Runstats em um Ambiente de Banco de Dados Particionado . . . . . . . . 37 Criando ndices em Colunas Utilizadas para Unir Tabelas em uma Consulta em um Ambiente de Banco de Dados Particionado . . . . . . . . 41 Criando ndices Adicionais em Colunas da Tabela em um Ambiente de Banco de Dados Particionado . 45

Apndice A. Conceitos do Visual Explain . . . . . . . . . . . . . . 49


Plano de Acesso . . . . . . . . . . Grfico do Plano de Acesso . . . . . . N do Grfico do Plano de Acesso . . . Armazenamento em Cluster . . . . . . Continer . . . . . . . . . . . . Custo . . . . . . . . . . . . . Bloqueio do Cursor . . . . . . . . . Espao de Tabelas Gerenciado pelo Banco de SQL ou XQuery Dinmica . . . . . . Captura Instantnea de Explicao . . . Instruo Explicvel . . . . . . . . Instruo Explicada . . . . . . . . . Operando . . . . . . . . . . . . Operador . . . . . . . . . . . . Otimizador . . . . . . . . . . . Pacote . . . . . . . . . . . . . Predicado . . . . . . . . . . . . Classe de Otimizao de Consulta . . . . Seletividade de Predicados . . . . . . Juno em Estrela . . . . . . . . . SQL ou XQuery Esttica . . . . . . . Espao de Tabelas Gerenciado pelo Sistema. Espaos de Tabela . . . . . . . . . Timerons . . . . . . . . . . . . Visual Explain . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 50 51 51 52 52 52 53 53 53 54 54 55 55 56 57 57 58 59 59 60 60 61 61 62

Lio 2. Exibindo e Utilizando um Grfico do Plano de Acesso . . . . . . 9


Exibindo um Grfico de Plano de Acesso Escolhendo a partir de uma Lista de Instrues SQL ou XQuery Explicadas Anteriormente . . . . . . . . . . 9 Lendo os Smbolos em um Grfico do Plano de Acesso . . . . . . . . . . . . . . . . 9 Utilizando a Rgua de Controle de Zoom para Ampliar Partes de um Grfico . . . . . . . . 10 Obtendo mais Detalhes sobre os Objetos em um Grfico . . . . . . . . . . . . . . . . 11 Alterando a Aparncia de um Grfico . . . . . 13

Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica . . . . . . . 15


Consultas Associadas a Capturas Instantneas de Explicao em um Ambiente de Banco de Dados de Partio nica . . . . . . . . . . . . . Executando uma Consulta sem ndices e sem Estatsticas em um Ambiente de Banco de Dados de Partio nica . . . . . . . . . . . . . Coletando Estatsticas Atuais para as Tabelas e ndices Utilizando Runstats em um Ambiente de Banco de Dados de Partio nica. . . . . . . Criando ndices em Colunas Utilizadas para Unir Tabelas em uma Consulta em um Ambiente de Banco de Dados de Partio nica. . . . . . . Criando ndices Adicionais em Colunas da Tabela em um Ambiente de Banco de Dados de Partio nica . . . . . . . . . . . . . . . . 15

16

19

Apndice B. Lista em Ordem Alfabtica dos Operadores do Visual Explain . . . 63


Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador CMPEXP . DELETE . EISCAN . FETCH . FILTER . GENROW GRPBY . HSJOIN . INSERT . IXAND . IXSCAN . MSJOIN . NLJOIN . PIPE . . RETURN . RIDSCN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 64 64 64 65 65 65 66 67 67 67 68 69 69 69 70

23

28

Lio 4. Melhorando o Plano de Acesso em um Ambiente de Banco de Dados Particionado . . . . . . . . . 33


Consultas Associadas a Capturas Instantneas de Explicao em um Ambiente de Banco de Dados Particionado . . . . . . . . . . . . . Executando uma Consulta sem ndices e sem Estatsticas em um Ambiente de Banco de Dados Particionado . . . . . . . . . . . . . . 33

. 34

Direitos Autorais IBM Corp. 2002, 2006

iii

Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador

RPD . . SHIP . . SORT . . TBSCAN . TEMP . . TQUEUE . UNION . UNIQUE . UPDATE . XISCAN . XSCAN . XANDOR

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

. . . . . . . . . . . .

70 70 71 71 72 73 73 73 74 74 75 76

Esquemas . Tabelas . .

. .

. .

. .

. .

. .

. .

. .

. .

. .

. .

. .

. .

. .

. 79 . 80

Apndice D. Informaes Adicionais


Diretrizes para Criao de ndices . Planos de Acesso Desatualizados . Utilizando RUNSTATS. . . . . . . . . . . . . . . . . . . .

81
. 81 . 81 . 82

Apndice E. Avisos . . . . . . . . . 85
Marcas Comerciais . . . . . . . . . . . . 87

ndice Remissivo . . . . . . . . . . 89 Entrando em Contato com a IBM . . . 91

Apndice C. Conceitos do DB2 . . . . 79


Bancos de Dados . . . . . . . . . . . . 79

iv

Tutorial do Visual Explain

Sobre este Tutorial


Este tutorial oferece um guia para os recursos do DB2 Visual Explain. Ao concluir as lies neste tutorial, voc aprender como o Visual Explain permite visualizar o plano de acesso para as instrues SQL ou XQuery explicadas como um grfico. Voc tambm aprender como utilizar as informaes disponveis de tal grfico para ajustar suas consultas para obter um melhor desempenho. Utilizando seu otimizador, o DB2 examina suas consultas e determina a melhor maneira de acessar seus dados. Este caminho para os dados chamado de plano de acesso. O DB2 permite visualizar o que o otimizador fez permitindo que voc observe o plano de acesso selecionado para desempenhar uma consulta especfica. Voc poder utilizar o Visual Explain para exibir o plano de acesso como grfico. O grfico uma apresentao visual dos objetos do banco de dados envolvidos em uma consulta (por exemplo, tabelas e ndices). Ele tambm inclui as operaes executadas nesses objetos (por exemplo, varreduras e ordenaes) e mostra o fluxo dos dados. Voc poder melhorar o acesso a dados de uma consulta executando alguma ou todas as atividades de ajuste a seguir: 1. Ajuste seu projeto de tabela e a reorganizao dos dados de tabela. 2. Crie ndices apropriados. 3. Utilize o comando runstats para fornecer ao otimizador as estatsticas atuais. 4. Selecione os parmetros de configurao apropriados. 5. Selecione as opes de unio apropriadas. 6. 7. 8. 9. Projete consultas para recuperar apenas dados requeridos. Trabalhe com um plano de acesso. Crie capturas instantneas de explicao. Utilize um grfico do plano de acesso para melhorar o plano de acesso.

Essas atividades relacionadas a desempenho correspondem quelas mostradas na seguinte ilustrao. (Linhas quebradas indicam aes requeridas para o Visual Explain).

Direitos Autorais IBM Corp. 2002, 2006

Este tutorial contm lies sobre: v Criando capturas instantneas de explicao. Esses so requerimentos para exibir grficos do plano de acesso. v Exibindo e manipulando um grfico do plano de acesso. v Executando atividades de ajuste e examinando como melhoram seu plano de acesso. Nota: O ajuste de desempenho dividido em uma lio para ambientes de banco de dados de partio nica e uma lio para ambientes de bancos de dados particionados. Voc ir utilizar o banco de dados SAMPLE fornecido pelo DB2 para concluir as lies. Consulte db2sampl - Comando para Criar Banco de Dados de Amostra se voc ainda no criou o banco de dados SAMPLE. Informaes Especficas do Ambiente: Informao marcada com esse cone pertence somente a ambientes banco de dados de partio nica. Informao marcada com esse cone pertence somente a ambientes banco de dados particionado.

Tutorial do Visual Explain

Lio 1. Criando Capturas Instantneas de Explicao


Nesta lio, voc ir criar capturas instantneas de explicao. O recurso Explain utilizado para capturar informaes sobre o ambiente no qual uma instruo SQL ou XQuery esttica ou dinmica compilada. As informaes capturadas permitem que voc entenda a estrutura e desempenho de execuo em potencial de suas instrues SQL ou XQuery. Uma captura instantnea de explicao so informaes compactadas coletadas quando uma instruo SQL ou XQuery explicada. Ela armazenada como um BLOB (Binary Large Object) na tabela EXPLAIN_STATEMENT e contm as seguintes informaes: v A representao interna do plano de acesso, incluindo seus operadores e tabelas, alm dos ndices acessados. v Os critrios de deciso utilizados pelo otimizador, incluindo estatsticas para objetos de banco de dados e o custo cumulativo de cada operao. Para exibir um grfico do plano de acesso, o Visual Explain requer as informaes contidas em uma captura instantnea de explicao.

Criando Tabelas de Explicao


Para criar instantneos de explicao, voc deve assegurar que as seguintes tabelas de explicao existam para seu ID de usurio: v EXPLAIN_INSTANCE v EXPLAIN_STATEMENT Para verificar se elas existem, utilize o comando DB2 list tables. Se essas tabelas no existirem, ser necessrio cri-las utilizando as seguintes instrues: 1. Se o DB2 ainda no tiver sido iniciado, execute o comando db2start. 2. A partir do prompt do processador de linha de comandos do DB2, conecte-se ao banco de dados que deseja utilizar. Para este tutorial, conecte-se ao banco de dados SAMPLE utilizando o comando connect to sample. 3. Crie as tabelas de explicao, utilizando o arquivo de comando de exemplo fornecido no arquivo EXPLAIN.DDL. Este arquivo est localizado no diretrio sqllib\misc. Para executar o arquivo de comando, acesse este diretrio e execute o comando db2 -tf EXPLAIN.DDL. Este arquivo de comando cria tabelas de explicao pr-fixadas com o ID de usurio conectado. Este ID de usurio deve possuir privilgio CREATETAB no banco de dados, ou autoridade SYSADM ou DBADM. Nota: Na Verso 9, a janela Histrico de Instruo do Explain exibe os registros explicados do esquema SYSTOOLS e do esquema do ID de autorizao atual. Voc deve ter privilgio de leitura nas tabelas de explicao SYSTOOLS para o Visual Explain para recuperar os registros SYSTOOLS e exibi-los na janela Histrico de Instruo do Explain. Se voc no tiver acesso de leitura, esses registros no sero exibidos.

Direitos Autorais IBM Corp. 2002, 2006

Utilizando Capturas Instantneas de Explicao


So fornecidas quatro capturas instantneas de amostra para ajud-lo a conhecer o Visual Explain. Informaes sobre criao de seus prprios instantneos so fornecidas nas sees a seguir, mas no ser necessrio criar seus prprios instantneos para trabalhar com este tutorial. v Criando Capturas Instantneas de Explicao para Instrues SQL ou XQuery Dinmicas v Criando Capturas Instantneas de Explicao para Instrues SQL ou XQuery Estticas A consulta utilizada para as capturas instantneas exemplo listam o nome, departamento e salrio de todos os funcionrios que no fazem parte da gerncia que ganham mais de 90% do salrio do gerente com o maior salrio.
SELECT S.ID,S.NAME,O.DEPTNAME,SALARY+COMM FROM ORG O, STAFF S WHERE O.DEPTNUMB = S.DEPT AND S.JOB <> Mgr AND S.SALARY+S.COMM > ALL( SELECT ST.SALARY*.9 FROM STAFF ST WHERE ST.JOB=Mgr ) ORDER BY S.NAME

A consulta tem duas partes: 1. A subconsulta (entre parnteses) produz linhas de dados constitudos de 90% do salrio de cada gerente. Como a subconsulta est qualificada por ALL, apenas o maior valor desta tabela ser recuperado. 2. A consulta principal une todas as linhas nas tabelas ORG e STAFF em que os nmeros de departamento so iguais, JOB no igual a Mgr, e salrio mais comisso maior que o valor retornado da subconsulta. A consulta principal contm os trs predicados (comparaes) a seguir:
1. 2. 3. O.DEPTNUMB = S.DEPT S.JOB <> Mgr S.SALARY+S.COMM > ALL ( SELECT ST.SALARY*.9 FROM STAFF ST WHERE ST.JOB=Mgr )

Esses predicados representam, respectivamente: 1. Um predicado de juno, que une as tabelas ORG e STAFF em que os nmero de departamento so iguais 2. Um predicado local na coluna JOB da tabela STAFF 3. Um predicado local nas colunas SALARY e COMM da tabela STAFF que utilizam o resultado da subconsulta Para carregar as capturas instantneas de exemplo: 1. Se o DB2 ainda no tiver sido iniciado, execute o comando db2start. 2. Assegure que as tabelas de explicao existam em seu banco de dados. Para fazer isso, siga as instrues em Criando Tabelas de Explicaes. 3. Conecte-se ao banco de dados que deseja utilizar. Para este tutorial, voc poder conectar-se ao banco de dados SAMPLE. Para conectar-se ao banco de dados SAMPLE, a partir do processador de linha de comandos (CLP) do DB2, execute o comando connect to sample.

Tutorial do Visual Explain

4. Para importar as capturas instantneas pr-definidas, execute o arquivo de comando do DB2 chamado VESAMPL.DDL. v Este arquivo est localizado no diretrio sqllib\samples\ve.

v Este arquivo est localizado no diretrio sqllib\samples\ve\inter. Para executar o arquivo de comando, acesse este diretrio e execute o comando db2 -tf vesampl.ddl. v Este arquivo de comando deve ser executado utilizando o mesmo ID de usurio utilizado para criar as tabelas de explicao. v Este arquivo de comando importa as capturas instantneas pr-definidas. Ele no cria tabelas ou dados. As atividades de ajuste descritas posteriormente (por exemplo, CREATE INDEX e runstats), sero executadas em tabelas e dados no banco de dados SAMPLE. Agora voc est pronto para exibir e utilizar os grficos do plano de acesso. Conceitos Relacionados: v Predicado na pgina 57 Tarefas Relacionadas: v Criando Capturas Instantneas de Explicao para Instrues SQL ou XQuery Dinmicas na pgina 5 v Criando Capturas Instantneas de Explicao para Instrues SQL ou XQuery Estticas na pgina 6 v Criando Tabelas de Explicao na pgina 3

Criando Capturas Instantneas de Explicao para Instrues SQL ou XQuery Dinmicas


Nota: As informaes de criao da captura instantnea de explicao so fornecidas para sua referncia. Como so fornecidas capturas instantneas de explicao de exemplo, no ser necessrio concluir esta tarefa para trabalhar com o tutorial. Siga estas etapas para criar uma captura instantnea de explicao para uma instruo SQL ou XQuery dinmica: 1. Se o DB2 ainda no tiver sido iniciado, execute o comando db2start. 2. Assegure que as tabelas de explicao existam em seu banco de dados. Para fazer isso, siga as instrues em Criando Tabelas de Explicaes. 3. A partir do prompt do processador de linha de comandos do DB2, conecte-se ao banco de dados que deseja utilizar. Por exemplo, para conectar-se ao banco de dados SAMPLE execute o comando connect to sample. 4. Crie uma captura instantnea de explicao para uma instruo SQL ou XQuery dinmica, utilizando um dos seguintes comandos a partir do prompt CLP do DB2: v Para criar uma captura instantnea de explicao sem executar a instruo SQL ou XQuery, emita o comando set current explain snapshot=explain. v Para criar uma captura instantnea de explicao e executar a instruo SQL ou XQuery, emita o comando set current explain snapshot=yes.

Lio 1. Criando Capturas Instantneas de Explicao

Este comando define o registro especial de explicao. Uma vez definido, todas as instrues SQL ou XQuery subseqentes sero afetadas. Para obter mais informaes, consulte as sees sobre as capturas instantneas de explicao atuais na publicao SQL Reference. 5. Envie suas instrues SQL ou XQuery a partir do prompt CLP do DB2. 6. Para exibir um grfico do plano de acesso para o instantneo, atualize a janela do Histrico das Instrues Explicadas (disponvel a partir do Centro de Controle), e d um clique duplo no instantneo. 7. Opcional. Para desligar o recurso de captura instantnea, emita o comando set current explain snapshot=no aps enviar suas instrues SQL ou XQuery. Conceitos Relacionados: v Captura Instantnea de Explicao na pgina 53 v SQL ou XQuery Dinmica na pgina 53 Tarefas Relacionadas: v Criando Tabelas de Explicao na pgina 3

Criando Capturas Instantneas de Explicao para Instrues SQL ou XQuery Estticas


Nota: As informaes de criao do instantneo de explicao so fornecidas para sua referncia. Como so fornecidas capturas instantneas de explicao de exemplo, no ser necessrio concluir esta tarefa para trabalhar com o tutorial. Siga estas etapas para criar uma captura instantnea de explicao para uma instruo SQL ou XQuery esttica: 1. Se o DB2 ainda no tiver sido iniciado, execute o comando db2start. 2. Assegure que as tabelas de explicao existam em seu banco de dados. Para fazer isso, siga as instrues em Criando Tabelas de Explicaes. 3. A partir do prompt do processador de linha de comandos do DB2, conecte-se ao banco de dados que deseja utilizar. Por exemplo, para conectar-se ao banco de dados SAMPLE execute o comando connect to sample. 4. Crie uma captura instantnea de explicao para uma instruo SQL ou XQuery esttica utilizando a opo EXPLSNAP ao ligar ou preparar seu aplicativo. Por exemplo, execute o comando bind seu arquivo explsnap yes. 5. Opcional. Para visualizar um grfico do plano de acesso para a captura instantnea, atualize a janela do Histrico das Instrues Explicadas (disponvel a partir do Centro de Controle), e d um clique duplo na captura instantnea. Para obter as informaes sobre a utilizao da opo EXPLSNAP para as APIs equivalentes, consulte as sees para cada uma dessas na publicao Administrative API Reference. O que Vem a Seguir: Na Lio 2. Exibindo e utilizando um grfico de plano de acesso, voc aprender como visualizar um grfico de plano de acesso e entender seu contedo. Conceitos Relacionados: v Captura Instantnea de Explicao na pgina 53

Tutorial do Visual Explain

v SQL ou XQuery Esttica na pgina 60 Tarefas Relacionadas: v Criando Tabelas de Explicao na pgina 3

Lio 1. Criando Capturas Instantneas de Explicao

Tutorial do Visual Explain

Lio 2. Exibindo e Utilizando um Grfico do Plano de Acesso


Nessa lio, voc utilizar a janela Grfico do Plano de Acesso para exibir e utilizar um grfico de plano de acesso. Um grfico de plano de acesso uma representao grfica de um plano de acesso. A partir dele, voc poder exibir detalhes para: v Tabelas (e suas colunas associadas) e ndices v Operadores (tais como varreduras de tabelas, classificaes e junes) v reas de tabelas e funes. Voc poder exibir um grfico do plano de acesso: v Selecionando a partir de uma lista de instrues explicadas anteriormente. v Selecionando a partir de uma lista de instrues explicveis em um pacote. v Explicando dinamicamente uma instruo SQL ou XQuery. Como voc estar trabalhando com os grficos do plano de acesso para os instantneos de explicao de exemplo carregados na Lio 1, voc ir escolher entre uma lista de instrues explicadas anteriormente. Para obter informaes sobre os outros mtodos de exibio de grficos do plano de acesso, consulte a Ajuda do Visual Explain.

Exibindo um Grfico de Plano de Acesso Escolhendo a partir de uma Lista de Instrues SQL ou XQuery Explicadas Anteriormente
Para exibir um grfico do plano de acesso selecionando em uma lista de instrues explicadas anteriormente: 1. No Centro de Controle, expanda a rvore de objeto at encontrar o banco de dados SAMPLE. 2. D um clique duplo no banco de dados e selecione Mostrar histrico de instrues explicadas a partir do menu pop-up. A janela Histrico de Instrues Explicadas ser aberta. 3. Voc poder exibir apenas um grfico do plano de acesso para uma instruo que possua uma captura instantnea de explicao. Instrues que se qualificam tero uma entrada YES na coluna Captura Instantnea de Explicao. D um clique duplo na entrada identificada como Consulta Nmero 1 (pode ser necessrio rolar para a direita para localizar a coluna Nmero da Consulta). A janela Grfico do Plano de Acesso da instruo ser aberto. Nota: O grfico ser lido de baixo para cima. A primeira etapa da consulta est listada na parte inferior do grfico e a ltima etapa est listada na parte superior.

Lendo os Smbolos em um Grfico do Plano de Acesso


O grfico do plano de acesso mostra a estrutura de um plano de acesso como rvore. Os ns da rvore representam: v Tabelas, mostradas como retngulos v ndices, mostrados como losangos
Direitos Autorais IBM Corp. 2002, 2006

v Operadores, mostrados como octgonos. Operadores TQUEUE, mostrados como paralelogramos v Funes de tabela, mostrados como hexgonos. Para operadores, o nmero entre colchetes direita do tipo de operador, um identificador exclusivo para cada n. O nmero abaixo do tipo de operador, o custo acumulativo. Conceitos Relacionados: v Operadores do Explain em Performance Guide v Custo na pgina 52 Referncia Relacionada: v Operador TQUEUE na pgina 73

Utilizando a Rgua de Controle de Zoom para Ampliar Partes de um Grfico


Quando voc exibe um grfico de plano de acesso, o grfico inteiro mostrado e talvez voc no consiga consultar os detalhes que distinguem cada n. Na janela Grfico de Plano de Acesso, utilize a rgua de controle de zoom para ampliar partes de um grfico: 1. Posicione o ponteiro do mouse sobre a caixa de rolagem pequena na barra da rgua de controle de Zoom do lado esquerdo do grfico. 2. Clique com o boto esquerdo e arraste a rgua de controle at que o grfico esteja no nvel de ampliao desejado. Para visualizar partes diferentes do grfico, utilize a barra de deslocamento. Para visualizar um grfico de plano de acesso complexo e de grande porte, utilize a janela Viso Geral do Grfico. Voc poder utilizar esta janela para ver qual parte do grfico voc est visualizando, e para ampliar ou deslocar-se pelo grfico. A seo na caixa de ampliao ser mostrada no plano de acesso.

10

Tutorial do Visual Explain

Para rolar pelo grfico, posicione o ponteiro do mouse sobre a rea realada na janela Viso Geral do Grfico, pressione e mantenha pressionado o boto esquerdo do mouse e, em seguida, mova o mouse at ver a parte do grfico de plano de acesso desejada. Conceitos Relacionados: v N do Grfico do Plano de Acesso na pgina 51

Obtendo mais Detalhes sobre os Objetos em um Grfico


Voc poder acessar mais informaes sobre os objetos em um grfico do plano de acesso. Voc poder exibir: v Estatsticas de catlogo de sistema para objetos como: Tabelas, ndices ou funes de tabela Informaes sobre operadores, tais como seu custo, propriedades e argumentos de entrada Funes incorporadas ou funes definidas pelo usurio Espaos de tabelas Colunas referidas em uma instruo SQL ou XQuery v Informaes sobre parmetros de configurao e opes de ligao (parmetros de otimizao). Obtendo Estatsticas para Tabelas, ndices ou Funes de Tabela: Para visualizar estatsticas de catlogo para uma nica tabela (retngulo), ndice (diamante) ou funo de tabela (hexgono) em um grfico, d um clique duplo em seu n. Uma janela de Estatsticas ser aberta para os objetos selecionados, exibindo informaes sobre as estatsticas em efeito no momento que o instantneo foi criado, alm daquela que existem atualmente nas tabelas de catlogo de sistema.

Lio 2. Exibindo e Utilizando um Grfico do Plano de Acesso

11

Para visualizar estatsticas de catlogo para vrias tabelas, ndices ou funes de tabela, selecione cada uma clicando nela (ela realada); em seguida, selecione N>Mostrar Estatsticas. Ser aberta uma janela de Estatsticas para cada objeto selecionado. (As janelas podem ser empilhadas e pode ser necessrio arrastar e soltar para acess-las.) Se a entrada para STATS_TIME na coluna Explicado contiver a entrada Estatsticas no atualizadas, ento nenhuma estatstica existia quando o otimizador criou o plano de acesso. Conseqentemente, se o otimizador for requerido em certas estatsticas para criar um plano de acesso, ela utilizou seus padres. Se o padro foi utilizado pelo otimizador, elas foram identificadas como (padro) na coluna Explicado. Obtendo Detalhes sobre Operadores em um Grfico: Para visualizar estatsticas de catlogo para um nico operador (octgono), d um clique duplo em seu n. Uma janela Detalhes do operador ser aberta para o operador selecionado, exibindo informaes como: v O custo cumulativo estimado (E/S, instrues da CPU e custo total) v A cardinalidade (isto , o nmero estimado de linhas pesquisadas) at o momento v Tabelas que foram acessadas e unidas no plano at o momento v Colunas dessas tabela que foram acessadas at o momento v Predicados que foram aplicados at o momento, incluindo sua seletividade estimada v Os argumentos de entrada para cada operador. Para visualizar detalhes para vrios operadores, selecione cada um clicando nele (ele realado); em seguida, selecione N>Mostrar Detalhes. Ser aberta uma janela de Estatsticas para cada objeto selecionado. (As janelas podem ser empilhadas e pode ser necessrio arrastar e soltar para acess-las.) Obtendo Estatsticas para Funes: Para visualizar estatsticas de catlogo para funes incorporadas e funes definidas pelo usurio, selecione Instruo>Mostrar Estatsticas>Funes;. Selecione uma ou mais entradas da lista exibida na janela Funes e clique em OK. Ser aberta uma janela Estatsticas de Funo para cada uma das funes selecionadas. Obtendo Estatsticas para Espaos de Tabelas: Para visualizar estatsticas de catlogo para espaos de tabelas, selecione Instruo>Mostrar Estatsticas>Espaos de Tabelas. Selecione uma ou mais entradas da lista exibida na janela Table Spaces e clique em OK. Uma janela da Estatsticas do Table Space ser aberta para cada um dos espaos de tabelas selecionados. Obtendo Estatsticas para Colunas em uma Instruo SQL ou XQuery: Para visualizar estatsticas para as colunas referenciadas em uma instruo SQL ou XQuery, d um clique duplo em uma tabela no grfico do plano de acesso. A janela Estatsticas da Tabela aberta. Clique no boto Colunas de Referncia. A janela Colunas Referenciadas ser aberta, listando as colunas na tabela. Selecione uma ou mais colunas na lista e clique em OK. Uma janela Estatsticas da Coluna Referenciada ser aberta para cada coluna selecionada. Obtendo Informaes sobre Parmetros de Configurao e Opes de Ligao:

12

Tutorial do Visual Explain

Para visualizar informaes sobre parmetros de configurao e opes de ligao (parmetros de otimizao), selecione Instruo>Mostrar Parmetros de Otimizao na janela Grfico do Plano de Acesso. A janela Parmetros de Otimizao aberta, exibindo informaes sobre os valores de parmetros que estavam em vigor no momento em que a captura instantnea foi criada, bem como os valores atuais. Conceitos Relacionados: v N do Grfico do Plano de Acesso na pgina 51 v Predicado na pgina 57

Alterando a Aparncia de um Grfico


Para alterar vrias caractersticas de como um grfico exibido: 1. A partir da janela Grfico do Plano de Acesso, selecione Visualizar>Definies. O bloco de notas Definies do Grfico do Plano de Acesso ser aberto. 2. Para alterar a cor do segundo plano, escolha a guia Grfico. 3. Para alterar a cor dos vrios operadores, utilize as guias Bsico, Estender, Atualizar e Vrios. 4. Para alterar a cor da tabela, ndice ou ns de funo da tabela, selecione a guia Operando. 5. Para especificar qual tipo de informao mostrado nos ns do operador (tipo de custo ou cardinalidade, que o nmero estimado de linhas retornadas at o momento), escolha a guia Operador. 6. Para especificar se os nomes dos esquemas ou IDs de usurios so mostrados nos ns de tabela, selecione a guia Operando. 7. Para especificar se os ns so mostrados de maneira bidimensional ou tridimensional, selecione a guia N. 8. Para atualizar o grfico com as opes selecionadas e salvar as definies, clique em Aplicar. O que Vem a Seguir: Se estiver trabalhando em um ambiente de banco de dados de partio nica, siga para Consultas Associadas a Capturas Instantneas de Explicao em um Ambiente de Banco de Dados de Partio nica, onde voc ir descobrir como diferentes atividades de ajuste podem alterar e melhorar um plano de acesso. Se estiver trabalhando em um ambiente de banco de dados particionado, siga para Consultas Associadas a Capturas Instantneas de Explicao em um Ambiente de Banco de Dados Particionado, onde voc ir aprender como diferentes atividades de ajuste podem alterar e melhorar um plano de acesso. Conceitos Relacionados: v Custo na pgina 52 Tarefas Relacionadas: v Consultas Associadas a Capturas Instantneas de Explicao em um Ambiente de Banco de Dados de Partio nica na pgina 15 v Consultas Associadas a Capturas Instantneas de Explicao em um Ambiente de Banco de Dados Particionado na pgina 33
Lio 2. Exibindo e Utilizando um Grfico do Plano de Acesso

13

14

Tutorial do Visual Explain

Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica


Nesta lio, voc aprender como o plano de acesso e janelas relacionadas para a consulta bsica so alterados quando voc desempenha vrias atividades de ajuste. Utilizando uma srie de exemplos, acompanhados por ilustraes, voc ir descobrir como o custo total estimado do plano de acesso, at mesmo uma consulta simples, pode ser melhorado utilizando o comando runstats e incluindo ndices apropriados. Utilizando as quatro capturas instantneas de explicao de amostra como exemplos, voc aprender como o ajuste uma parte importante do desempenho do banco de dados. Conforme voc ganha experincia com o Visual Explain, voc descobre outras maneiras de ajustar as consultas.

Consultas Associadas a Capturas Instantneas de Explicao em um Ambiente de Banco de Dados de Partio nica
As consultas associadas s capturas instantneas de explicao esto numeradas de 1 a 4. Cada consulta utiliza a mesma instruo SQL ou XQuery (descrita na Lio 1):
SELECT S.ID,S.NAME,O.DEPTNAME,SALARY+COMM FROM ORG O, STAFF S WHERE O.DEPTNUMB = S.DEPT AND S.JOB <> Mgr AND S.SALARY+S.COMM > ALL( SELECT ST.SALARY*.9 FROM STAFF ST WHERE ST.JOB=Mgr ) ORDER BY S.NAME

Mas cada iterao da consulta utiliza mais tcnicas de ajuste do que a execuo anterior. Por exemplo, Consulta 1 no possui ajuste de desempenho, enquanto a Consulta 4 possui o nmero maior. As diferenas nas consultas esto descritas abaixo: Consulta 1 Executando uma consulta sem ndices e sem estatsticas Consulta 2 Coletando estatsticas atuais para as tabelas e ndices em uma consulta Consulta 3 Criando ndices em colunas utilizadas para unir tabelas em uma consulta Consulta 4 Criando ndices adicionais em colunas da tabela Tarefas Relacionadas: v Executando uma Consulta sem ndices e sem Estatsticas em um Ambiente de Banco de Dados de Partio nica na pgina 16 v Coletando Estatsticas Atuais para as Tabelas e ndices Utilizando Runstats em um Ambiente de Banco de Dados de Partio nica na pgina 19

Direitos Autorais IBM Corp. 2002, 2006

15

v Criando ndices em Colunas Utilizadas para Unir Tabelas em uma Consulta em um Ambiente de Banco de Dados de Partio nica na pgina 23 v Criando ndices Adicionais em Colunas da Tabela em um Ambiente de Banco de Dados de Partio nica na pgina 28

Executando uma Consulta sem ndices e sem Estatsticas em um Ambiente de Banco de Dados de Partio nica
Neste exemplo, o plano de acesso foi criado para a consulta SQL sem ndices e sem estatsticas. Para visualizar o grfico do plano de acesso para esta consulta (Consulta 1): 1. No Centro de Controle, expanda a rvore de objeto at encontrar o banco de dados SAMPLE. 2. D um clique duplo no banco de dados e selecione Mostrar histrico de instrues explicadas a partir do menu pop-up. A janela Histrico de Instrues Explicadas ser aberta. 3. D um clique duplo na entrada identificada como Consulta Nmero 1 (pode ser necessrio rolar para a direita para localizar a coluna Nmero da Consulta). A janela Grfico do Plano de Acesso da instruo ser aberto.

16

Tutorial do Visual Explain

Responder as seguintes perguntas ir ajud-lo a entender como melhorar a consulta. 1. As estatsticas atuais existem para cada tabela na consulta? Para verificar se existem estatsticas atuais para cada tabela na consulta, d um clique duplo em cada n da tabela no grfico de plano de acesso. Na janela Estatsticas da Tabela aberta, a linha STATS_TIME sob a coluna Explicado esto as palavras Estatsticas no atualizadas se nenhuma estatstica foi coletada no momento em que o instantneo foi criado. Se no existirem estatsticas atuais, o otimizador utilizar estatsticas padro, que podem ser diferentes das estatsticas vigentes. As estatsticas padro so identificadas pela palavra padro sob a coluna Explicado na janela Estatsticas da Tabela. De acordo com as informaes na janela Estatsticas da Tabela para a tabela ORG, o otimizador utilizou estatsticas padro (conforme indicado prximo aos valores explicados). As estatsticas padro foram utilizadas pois as estatsticas atuais no estavam disponveis quando a captura instantnea foi criada (conforme indicado na linha STATS_TIME).

Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica

17

2. Este plano de acesso utiliza os mtodos mais eficientes de acesso de dados? Este plano de acesso contm as varreduras de tabela e no varreduras de ndice. As varreduras de tabela so mostradas como octgonos e so etiquetadas como TBSCAN. Se as varreduras de ndice tiverem sido utilizadas, elas aparecero como diamantes e sero etiquetadas como IXSCAN. O uso de um ndice criado para uma tabela tem um melhor custo do que uma varredura de tabela caso pequenas quantidades de dados estejam sendo extradas. 3. Quo efetivo este plano de acesso? Voc poder determinar a eficincia de um plano de acesso caso ele seja baseado em estatsticas atuais. Como o otimizador utilizou estatsticas padro no plano de acesso, voc no poder determinar o quo efetivo o plano. Em geral, voc deve anotar o custo total estimado para o plano de acesso para comparao posterior com planos de acesso revisados. O custo listado em cada n cumulativo, desde a primeira etapa de sua consulta at (e incluindo) o n. Na janela Grfico do Plano de Acesso, o custo total aproximadamente 1.067 timerons, mostrado em RETURN (1) na parte superior do grfico. O custo total estimado tambm mostrado na parte superior da janela.

18

Tutorial do Visual Explain

4. O que vem a seguir? A Consulta 2 aponta para um plano de acesso para a consulta bsica aps runstats ter sido executado. Utilizar o comando runstats fornece ao otimizador as estatsticas atuais em todas as tabelas acessadas pela consulta. Conceitos Relacionados: v N do Grfico do Plano de Acesso na pgina 51 v Custo na pgina 52 Referncia Relacionada: v Operador TBSCAN na pgina 71 v Operador IXSCAN na pgina 67

Coletando Estatsticas Atuais para as Tabelas e ndices Utilizando Runstats em um Ambiente de Banco de Dados de Partio nica
Este exemplo baseado no plano de acesso descrito na Consulta 1 coletando as estatsticas atuais com o comando runstats. altamente recomendado que voc utilize o comando runstats para coletar as estatsticas atuais em tabelas e ndices, especialmente se atividades de atualizaes significativas ocorreram ou se novos ndices foram criados desde a ltima vez em que o comando runstats foi executado. Isto fornece ao otimizador as informaes
Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica

19

mais precisas com as quais voc poder determinar o melhor plano de acesso. Se as estatsticas atuais no estiverem disponveis, o otimizador poder escolher um plano de acesso ineficiente baseado em estatsticas padro imprecisas. Certifique-se de utilizar runstats aps fazer as atualizaes da tabela; caso contrrio, a tabela poder parecer vazia para o otimizador. Este problema evidente se a cardinalidade na janela Detalhes do operador for igual a zero. Neste caso, conclua suas atualizaes de tabela, execute o comando runstats e recrie as capturas instantneas para tabelas afetadas. Para visualizar o grfico do plano de acesso para esta consulta (Consulta 2): na janela Histrico de Instrues Explicadas, d um clique duplo na entrada identificada como Consulta Nmero 2. A janela Grfico do Plano de Acesso para esta execuo da instruo ser aberta.

Responder as seguintes perguntas ir ajud-lo a entender como melhorar a consulta. 1. As estatsticas atuais existem para cada tabela na consulta? A janela Estatsticas da Tabela da tabela ORG mostra que o otimizador utilizou estatsticas atuais (o valor STATS_TIME o tempo real em que as estatsticas foram coletadas). A preciso das estatsticas depende da existncia de alteraes significantes para o contedo das tabelas desde a execuo do comando runstats.

20

Tutorial do Visual Explain

2. Este plano de acesso utiliza os mtodos mais eficientes de acesso de dados? Como na Consulta 1, o plano de acesso na Consulta 2 utiliza varreduras de tabelas (TBSCAN), no varreduras de ndices (IXSCAN). Embora existam estatsticas atuais, uma varredura de ndice no foi feita porque no houveram ndices nas colunas utilizadas pela consulta. Uma maneira de aprimorar a consulta seria fornecer ao otimizador os ndices em colunas que so utilizadas para unir tabelas (isto , em colunas utilizadas na juno de predicados). Neste exemplo, esta a primeira juno de varredura de combinao: HSJOIN (7).

Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica

21

Na janela Detalhes do Operador para o operador HSJOIN (7), procure na seo Unir predicados em Argumentos de Entrada. As colunas utilizadas nessa operao de unio so listadas sob a coluna Texto. Neste exemplo, essas colunas so DEPTNUMB e DEPT.

22

Tutorial do Visual Explain

3. Quo efetivo este plano de acesso? Planos de acesso baseados em estatsticas atualizadas sempre produzem um custo estimado realista (medido em timerons). Como o custo estimado na Consulta 1 foi baseado nas estatsticas padro, o custo dos dois grficos de plano de acesso no pode ser comparado para determinar qual deles o mais efetivo. Se o custo maior ou menor no relevante. Ser necessrio comparar o custo dos planos de acesso baseados em estatsticas atuais para obter uma medida vlida de eficincia. 4. O que vem a seguir? A Consulta 3 observa os efeitos da incluso de ndices nas colunas DEPTNUMB e DEPT. A incluso de ndice nas colunas utilizadas em Unir Predicados podem melhorar o desempenho. Conceitos Relacionados: v Predicado na pgina 57 Referncia Relacionada: v Operador TBSCAN na pgina 71 v Operador IXSCAN na pgina 67

Criando ndices em Colunas Utilizadas para Unir Tabelas em uma Consulta em um Ambiente de Banco de Dados de Partio nica
Este exemplo baseado no plano de acesso descrito na Consulta 2 ao criar ndices na coluna DEPT da tabela STAFF e na coluna DEPTNUMB da tabela ORG. ndices recomendados podem ser criados utilizando o Orientador de Design.

Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica

23

Para exibir o grfico do plano de acesso para esta consulta (Consulta 3): na janela Histrico de Instrues Explicadas, d um clique duplo na entrada identificada como Consulta Nmero 3. A janela Grfico do Plano de Acesso para esta execuo da instruo ser aberta. Nota: Embora um ndice tenha sido criado para DEPTNUM, o otimizador no a utilizou.

Responder as seguintes perguntas ir ajud-lo a entender como melhorar a consulta. 1. O que mudou no plano de acesso com ndices? Uma juno de loop aninhada, NLJOIN (7), substituiu a juno de varredura de mesclagem HSJOIN (7) que era utilizada na Consulta 2. Utilizar uma juno de loop aninhada resultou em um custo estimado inferior a uma juno de varredura de mesclagem pois este tipo de juno no requer qualquer classificao ou tabelas temporrias. Um n com formato de losango, I_DEPT, foi includo logo acima da tabela STAFF. Este n representa o ndice criado em DEPT, e mostra que o otimizador utilizou uma varredura de ndice em vez de uma varredura de tabela para determinar quais linhas devem ser recuperadas.

24

Tutorial do Visual Explain

Nesta parte do grfico do plano de acesso, observe que um novo ndice (I_DEPT) foi criado na coluna DEPT e IXSCAN (17) foi utilizado para acessar a tabela STAFF. Na Consulta 2, uma varredura de tabela foi utilizada para acessar a tabela STAFF. 2. Este plano de acesso utiliza os mtodos mais eficientes de acesso de dados? Como resultado da incluso de ndices, um n IXSCAN, IXSCAN (17), foi utilizado para acessar a tabela STAFF. A Consulta 2 no tinha um ndice; conseqentemente, uma varredura de tabela foi utilizada nesse exemplo. O n FETCH, FETCH (11), mostra que, alm da utilizao da varredura de ndice para recuperar a coluna DEPT, o otimizador recuperou colunas adicionais da tabela STAFF, utilizando o ndice como um ponteiro. Neste caso, a combinao de uma varredura e busca de ndice so calculadas para ter um custo menor do que a varredura completa de tabela utilizada em planos de acesso anteriores. Nota: O n para a tabela STAFF aparece duas vezes, para mostrar seu relacionamento com o ndice para DEPT e com a operao FETCH.

Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica

25

O plano de acesso para esta consulta mostra o efeito de criao de ndices em colunas envolvidas em Unir Predicados. Os ndices tambm podem acelerar a aplicao de predicados locais. Vamos olhar os predicados locais para cada tabela nesta consulta para ver como a incluso de ndices em colunas referenciadas em predicados locais pode afetar o plano de acesso. Na janela Detalhes do Operador do operador FETCH (11), observe as colunas sob Propriedades cumulativas. A coluna utilizada no predicado para esta operao de busca JOB, conforme mostrado na seo Predicados. Nota: A seletividade deste predicado .69. Isto significa que com este predicado, 69% das linhas sero selecionadas para processamento posterior.

26

Tutorial do Visual Explain

A janela Detalhes do Operador do operador FETCH (11) mostra as colunas sendo utilizadas nesta operao. Voc poder ver que DEPTNAME est listado na primeira linha ao lado de Colunas recuperadas sob Argumentos de Entrada.
Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica

27

3. Quo efetivo este plano de acesso? Este plano de acesso tem um melhor custo do que o do exemplo anterior. O custo cumulativo foi reduzido de aproximadamente 1.755 timerons na Consulta 2 para aproximadamente 959 timerons na Consulta 3. No entanto, o plano de acesso da Consulta 3 mostra uma varredura de ndice IXSCAN (17) e FETCH (11) para a tabela STAFF. Enquanto uma varredura de ndice combinada com uma operao de busca custa menos do que uma varredura de tabela completa, isto significa que para cada linha recuperada, a tabela e o ndice sero acessados uma vez. Vamos tentar reduzir este acesso duplo na tabela STAFF. 4. O que vem a seguir? A Consulta 4 reduz a busca e varredura de ndice para uma nica varredura de ndice sem uma busca. Criar ndices adicionais pode reduzir o custo estimado para o plano de acesso. Conceitos Relacionados: v N do Grfico do Plano de Acesso na pgina 51 v Predicado na pgina 57 Referncia Relacionada: v Operador NLJOIN na pgina 69 v Operador IXSCAN na pgina 67 v Operador FETCH na pgina 64

Criando ndices Adicionais em Colunas da Tabela em um Ambiente de Banco de Dados de Partio nica
Este exemplo baseado no plano de acesso descrito na Consulta 3, criando um ndice na coluna JOB da tabela STAFF, e incluindo DEPTNAME no ndice existente na tabela ORG. (Incluir um ndice separado pode causar um acesso adicional). Para visualizar o plano de acesso para esta consulta (Consulta 4): na janela Histrico de Instrues Explicadas, d um clique duplo na entrada identificada como Consulta Nmero 4. A janela Grfico do Plano de Acesso para esta execuo da instruo ser aberta.

28

Tutorial do Visual Explain

Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica

29

Responder as seguintes perguntas ir ajud-lo a entender como melhorar a consulta. 1. O que mudou neste plano de acesso como resultado da criao de ndices adicionais? O otimizador utilizou o ndice criado na coluna JOB na tabela STAFF (representado por um losango rotulado como I_JOB) para refinar posteriormente este plano de acesso.

30

Tutorial do Visual Explain

Na parte intermediria do grfico do plano de acesso, observe que para a tabela ORG, a varredura de ndice anterior e busca foram alteradas para apenas um IXSCAN (9) de varredura de ndice. A Incluso da coluna DEPTNAME no ndice na parte superior da tabela ORG permitiu que o otimizador elimine o acesso adicional envolvendo a busca.

Lio 3. Melhorando um Plano de Acesso em um Ambiente de Banco de Dados de Partio nica

31

2. Quo efetivo este plano de acesso? Este plano de acesso tem um melhor custo do que o do exemplo anterior. O custo cumulativo foi reduzido de aproximadamente 1.370 timerons na Consulta 3 para aproximadamente 959 timerons na Consulta 4.

32

Tutorial do Visual Explain

Lio 4. Melhorando o Plano de Acesso em um Ambiente de Banco de Dados Particionado


Nesta lio, voc aprender como o plano de acesso e janelas relacionadas para a consulta bsica so alterados quando voc desempenha vrias atividades de ajuste. Utilizando uma srie de exemplos, acompanhados por ilustraes, voc ir descobrir como o custo total estimado do plano de acesso, at mesmo uma consulta simples, pode ser melhorado utilizando o comando runstats e incluindo ndices apropriados. Utilizando as quatro capturas instantneas de explicao de amostra como exemplos, voc aprender como o ajuste uma parte importante do desempenho do banco de dados. Conforme voc ganha experincia com o Visual Explain, voc descobre outras maneiras de ajustar as consultas.

Consultas Associadas a Capturas Instantneas de Explicao em um Ambiente de Banco de Dados Particionado


As consultas associadas s capturas instantneas de explicao esto numeradas de 1 a 4. Cada consulta utiliza a mesma instruo SQL ou XQuery (descrita na Lio 1):
SELECT S.ID,S.NAME,O.DEPTNAME,SALARY+COMM FROM ORG O, STAFF S WHERE O.DEPTNUMB = S.DEPT AND S.JOB <> Mgr AND S.SALARY+S.COMM > ALL( SELECT ST.SALARY*.9 FROM STAFF ST WHERE ST.JOB=Mgr ) ORDER BY S.NAME

Mas cada iterao da consulta utiliza mais tcnicas de ajuste do que a execuo anterior. Por exemplo, Consulta 1 no possui ajuste de desempenho, enquanto a Consulta 4 possui o nmero maior. As diferenas nas consultas esto descritas abaixo: Consulta 1 Executando uma consulta sem ndices e sem estatsticas Consulta 2 Coletando estatsticas atuais para as tabelas e ndices em uma consulta Consulta 3 Criando ndices em colunas utilizadas para unir tabelas em uma consulta Consulta 4 Criando ndices adicionais em colunas da tabela Esses exemplos foram produzidos em uma mquina do DB2 Enterprise Extended Edition NT 2000 com 7 ns fsicos utilizando paralelismo interpartio. Tarefas Relacionadas: v Executando uma Consulta sem ndices e sem Estatsticas em um Ambiente de Banco de Dados Particionado na pgina 34
Direitos Autorais IBM Corp. 2002, 2006

33

v Coletando Estatsticas Atuais para as Tabelas e ndices Utilizando Runstats em um Ambiente de Banco de Dados Particionado na pgina 37 v Criando ndices em Colunas Utilizadas para Unir Tabelas em uma Consulta em um Ambiente de Banco de Dados Particionado na pgina 41 v Criando ndices Adicionais em Colunas da Tabela em um Ambiente de Banco de Dados Particionado na pgina 45

Executando uma Consulta sem ndices e sem Estatsticas em um Ambiente de Banco de Dados Particionado
Neste exemplo, o plano de acesso foi criado para a consulta SQL sem ndices e sem estatsticas. Para visualizar o grfico do plano de acesso para esta consulta (Consulta 1): 1. No Centro de Controle, expanda a rvore de objeto at encontrar o banco de dados SAMPLE. 2. Clique com o boto direito no banco de dados e selecione Mostrar histrico de instrues explicadas no menu pop-up. A janela Histrico de Instrues Explicadas ser aberta. 3. D um clique duplo na entrada identificada como Consulta Nmero 1 (pode ser necessrio rolar para a direita para localizar a coluna Nmero da Consulta). A janela Grfico do Plano de Acesso da instruo ser aberto.

34

Tutorial do Visual Explain

Responder as seguintes perguntas ir ajud-lo a entender como melhorar a consulta. 1. As estatsticas atuais existem para cada tabela na consulta? Para verificar se existem estatsticas atuais para cada tabela na consulta, d um clique duplo em cada n da tabela no grfico de plano de acesso. Na janela Estatsticas da Tabela correspondente que ser aberta, a linha STATS_TIME sob a coluna Explicado existem as palavras Estatsticas no atualizadas, indicando que nenhuma estatstica foi coletada no momento em que o instantneo foi criado. Se no existirem estatsticas atuais, o otimizador utilizar estatsticas padro, que podem ser diferentes das estatsticas vigentes. As estatsticas padro so identificadas pela palavra padro sob a coluna Explicado na janela Estatsticas da Tabela. De acordo com as informaes na janela Estatsticas da Tabela para a tabela ORG, o otimizador utilizou estatsticas padro (conforme indicado prximo aos valores explicados). As estatsticas padro foram utilizadas pois as estatsticas atuais no estavam disponveis quando a captura instantnea foi criada (conforme indicado na linha STATS_TIME).

2. Este plano de acesso utiliza os mtodos mais eficientes de acesso de dados? Este plano de acesso contm as varreduras de tabela e no varreduras de ndice. As varreduras de tabela so mostradas como octgonos e so etiquetadas como TBSCAN. Se as varreduras de ndice tiverem sido utilizadas, elas aparecero como diamantes e sero etiquetadas como IXSCAN. O uso de um ndice criado para uma tabela tem um melhor custo do que uma varredura de tabela caso pequenas quantidades de dados estejam sendo extradas. 3. Quo efetivo este plano de acesso? Voc poder determinar a eficincia de um plano de acesso caso ele seja baseado em estatsticas atuais. Como o otimizador utilizou estatsticas padro no plano de acesso, voc no poder determinar o quo efetivo o plano.

Lio 4. Melhorando o Plano de Acesso em um Ambiente de Banco de Dados Particionado

35

Em geral, voc deve anotar o custo total estimado para o plano de acesso para comparao posterior com planos de acesso revisados. O custo listado em cada n cumulativo, desde a primeira etapa de sua consulta at (e incluindo) o n. Nota: Para bancos de dados particionados, este o custo cumulativo para o n que utiliza o maior nmero de recursos. Na janela Grfico do Plano de Acesso, o custo total aproximadamente 1.234 timerons, mostrado em RETURN (1) na parte superior do grfico. O custo total estimado tambm mostrado na parte superior da janela.

4. O que vem a seguir? A Consulta 2 aponta para um plano de acesso para a consulta bsica aps runstats ter sido executado. Utilizar o comando runstats fornece ao otimizador as estatsticas atuais em todas as tabelas acessadas pela consulta. Conceitos Relacionados: v N do Grfico do Plano de Acesso na pgina 51 v Custo na pgina 52 Referncia Relacionada: v Operador TBSCAN na pgina 71 v Operador IXSCAN na pgina 67

36

Tutorial do Visual Explain

Coletando Estatsticas Atuais para as Tabelas e ndices Utilizando Runstats em um Ambiente de Banco de Dados Particionado
Este exemplo baseado no plano de acesso descrito na Consulta 1 coletando as estatsticas atuais com o comando runstats. altamente recomendado que voc utilize o comando runstats para coletar as estatsticas atuais em tabelas e ndices, especialmente se atividades de atualizaes significativas ocorreram ou se novos ndices foram criados desde a ltima vez em que o comando runstats foi executado. Isto fornece ao otimizador as informaes mais precisas com as quais voc poder determinar o melhor plano de acesso. Se as estatsticas atuais no estiverem disponveis, o otimizador poder escolher um plano de acesso ineficiente baseado em estatsticas padro imprecisas. Certifique-se de utilizar runstats aps fazer as atualizaes da tabela; caso contrrio, a tabela poder parecer vazia para o otimizador. Este problema evidente se a cardinalidade na janela Detalhes do operador for igual a zero. Neste caso, conclua suas atualizaes de tabela, execute o comando runstats e recrie as capturas instantneas para tabelas afetadas. Para visualizar o plano de acesso grfico para esta consulta (Consulta 2): na janela Histrico de Instrues Explicadas, d um clique duplo na entrada identificada como Consulta Nmero 2. A janela Grfico do Plano de Acesso para esta execuo da instruo ser aberta.

Lio 4. Melhorando o Plano de Acesso em um Ambiente de Banco de Dados Particionado

37

Responder as seguintes perguntas ir ajud-lo a entender como melhorar a consulta. 1. As estatsticas atuais existem para cada tabela na consulta? A janela Estatsticas da Tabela da tabela ORG mostra que o otimizador utilizou estatsticas atuais (o valor STATS_TIME o tempo real em que as estatsticas foram coletadas). A preciso das estatsticas depende da existncia de alteraes significantes para o contedo das tabelas desde a execuo do comando runstats.

38

Tutorial do Visual Explain

2. Este plano de acesso utiliza os mtodos mais eficientes de acesso de dados? Como na Consulta 1, o plano de acesso na Consulta 2 utiliza varreduras de tabelas (TBSCAN), no varreduras de ndices (IXSCAN). Embora existam estatsticas atuais, uma varredura de ndice no foi feita porque no houveram ndices nas colunas utilizadas pela consulta. Uma maneira de aprimorar a consulta seria fornecer ao otimizador os ndices em colunas que so utilizadas para unir tabelas (isto , em colunas utilizadas na juno de predicados). Neste exemplo, esta a primeira unio de varredura de combinao: HSJOIN (9).

Lio 4. Melhorando o Plano de Acesso em um Ambiente de Banco de Dados Particionado

39

Na janela Detalhes do Operador do operador HSJOIN (9), consulte a seo Unir Predicados em Argumentos de entrada. As colunas utilizadas nessa operao de unio so listadas sob a coluna Texto. Neste exemplo, essas colunas so DEPTNUMB e DEPT.

40

Tutorial do Visual Explain

3. Quo efetivo este plano de acesso? Planos de acesso baseados em estatsticas atualizadas sempre produzem um custo estimado realista (medido em timerons). Como o custo estimado na Consulta 1 foi baseado nas estatsticas padro, o custo dos dois grficos de plano de acesso no pode ser comparado para determinar qual deles o mais efetivo. Se o custo maior ou menor no relevante. Ser necessrio comparar o custo dos planos de acesso baseados em estatsticas atuais para obter uma medida vlida de eficincia. 4. O que vem a seguir? A Consulta 3 observa os efeitos da incluso de ndices nas colunas DEPTNUMB e DEPT. A incluso de ndice nas colunas utilizadas em Unir Predicados podem melhorar o desempenho. Conceitos Relacionados: v Predicado na pgina 57 Referncia Relacionada: v Operador TBSCAN na pgina 71 v Operador IXSCAN na pgina 67

Criando ndices em Colunas Utilizadas para Unir Tabelas em uma Consulta em um Ambiente de Banco de Dados Particionado
Este exemplo baseado no plano de acesso descrito na Consulta 2 ao criar ndices na coluna DEPT da tabela STAFF e na coluna DEPTNUMB da tabela ORG. ndices recomendados podem ser criados utilizando o Orientador de Design.

Lio 4. Melhorando o Plano de Acesso em um Ambiente de Banco de Dados Particionado

41

Para exibir o grfico do plano de acesso para esta consulta (Consulta 3): na janela Histrico de Instrues Explicadas, d um clique duplo na entrada identificada como Consulta Nmero 3. A janela Grfico do Plano de Acesso para esta execuo da instruo ser aberta. Nota: Embora um ndice tenha sido criado para DEPTNUM, o otimizador no a utilizou.

Responder as seguintes perguntas ir ajud-lo a entender como melhorar a consulta. 1. O que mudou no plano de acesso com ndices? Um n com formato de losango, I_DEPT, foi includo logo acima da tabela STAFF. Este n representa o ndice criado em DEPT, e mostra que o otimizador utilizou uma varredura de ndice em vez de uma varredura de tabela para determinar quais linhas devem ser recuperadas.

42

Tutorial do Visual Explain

2. Este plano de acesso utiliza os mtodos mais eficientes de acesso de dados? O plano de acesso para esta consulta mostra o efeito da criao de ndices na coluna DEPTNUMB da tabela ORG, resultando em FETCH (15) e IXSCAN (21) na coluna DEPT da tabela STAFF. A Consulta 2 no possua este ndice; conseqentemente, uma varredura de tabela foi utilizada nesse exemplo.

Lio 4. Melhorando o Plano de Acesso em um Ambiente de Banco de Dados Particionado

43

A janela Detalhes do Operador para o operador FETCH(15) mostra as colunas sendo utilizadas nesta operao.

44

Tutorial do Visual Explain

A combinao do ndice e busca so calculados para ter um custo menor do que a varredura de tabela completa utilizada nos planos de acesso anteriores. 3. Quo efetivo este plano de acesso? Este plano de acesso tem um melhor custo do que o do exemplo anterior. O custo cumulativo foi reduzido de aproximadamente 1.214 timerons na Consulta 2 para aproximadamente 755 timerons na Consulta 3. 4. O que vem a seguir? A Consulta 4 reduz a busca e varredura de ndice para uma nica varredura de ndice sem uma busca. Criar ndices adicionais pode reduzir o custo estimado para o plano de acesso.

Criando ndices Adicionais em Colunas da Tabela em um Ambiente de Banco de Dados Particionado


Este exemplo baseado no plano de acesso descrito na Consulta 3, criando um ndice na coluna JOB da tabela STAFF, e incluindo DEPTNAME no ndice existente na tabela ORG. (Incluir um ndice separado pode causar um acesso adicional). Para visualizar o plano de acesso para esta consulta (Consulta 4): na janela Histrico de Instrues Explicadas, d um clique duplo na entrada identificada como Consulta Nmero 4. A janela Grfico do Plano de Acesso para esta execuo da instruo ser aberta.
Lio 4. Melhorando o Plano de Acesso em um Ambiente de Banco de Dados Particionado

45

Responder as seguintes perguntas ir ajud-lo a entender como melhorar a consulta. 1. O que mudou neste plano de acesso como resultado da criao de ndices adicionais? Na parte intermediria do grfico do plano de acesso, observe que para a tabela ORG, a varredura de tabela anterior foi alterada para uma varredura de ndice, IXSCAN (7). A incluso da coluna DEPTNAME no ndice na tabela ORG permitiu que o otimizador refine o acesso envolvendo a varredura de tabela.

46

Tutorial do Visual Explain

Na parte inferior do grfico do plano de acesso, observe que para a tabela STAFF a varredura e busca de ndice anterior foram alteradas para apenas um IXSCAN (39) de varredura de ndice. Criar o ndice JOB na tabela STAFF permitiu ao otimizador eliminar o acesso adicional envolvendo a busca.

Lio 4. Melhorando o Plano de Acesso em um Ambiente de Banco de Dados Particionado

47

2. Quo efetivo este plano de acesso? Este plano de acesso tem um melhor custo do que o do exemplo anterior. O custo cumulativo foi reduzido de aproximadamente 753 timerons na Consulta 3 para aproximadamente 288 timerons na Consulta 4.

48

Tutorial do Visual Explain

Apndice A. Conceitos do Visual Explain


v v v v v v v v v v v v v v v v v v v v v v v v v Plano de Acesso Grfico do Plano de Acesso N do Grfico do Plano de Acesso Armazenamento em Cluster Continer Custo Bloqueio do Cursor Espao de Tabelas Gerenciado pelo Banco de Dados SQL ou XQuery Dinmica Captura Instantnea de Explicao Instruo Explicvel Instruo Explicada Operando Operador Otimizador Pacote Predicado Classe de Otimizao de Consulta Seletividade de Predicados Juno em Estrela SQL ou XQuery Esttica Espao de Tabelas Gerenciado pelo Sistema reas de tabela Timerons Visual Explain

Plano de Acesso
So necessrios certos dados para resolver uma instruo SQL ou XQuery explicvel. Um plano de acesso especifica uma ordem de operaes para acessar estes dados. Um plano de acesso permite que voc visualize estatsticas para tabelas, ndices ou colunas selecionadas; propriedades para operadores; informaes globais como espao de tabelas e estatsticas de funo; e parmetros de configurao relevantes otimizao. Com o Visual Explain, voc poder visualizar o plano de acesso para uma instruo SQL ou XQuery no formato grfico. O otimizador produz um plano de acesso sempre que voc compila uma instruo SQL ou XQuery explicvel. Isto acontece no momento de prep/bind de instrues estticas e no momento da execuo de instruo dinmicas. importante compreender que um plano de acesso uma estimativa baseada nas informaes que esto disponveis. O otimizador baseia suas estimativas em informaes como as seguintes:

Direitos Autorais IBM Corp. 2002, 2006

49

v Estatsticas nas tabelas de catlogo do sistema (se as estatsticas no forem atuais, atualize-as utilizando o comando RUNSTATS.) v Parmetros de configurao v Opes de unio v A classe de otimizao de consulta Informaes de Custo associadas a um plano de acesso so a melhor estimativa do otimizador para a utilizao de recursos em uma consulta. O tempo decorrido real para uma consulta pode variar de acordo com os fatores fora do escopo do DB2 (por exemplo, o nmero de outros aplicativos em execuo ao mesmo tempo). O tempo decorrido real pode ser medido enquanto a consulta executada, utilizando monitorao de desempenho. Conceitos Relacionados: v Grfico do Plano de Acesso na pgina 50 v Viso Geral do Visual Explain em Administration Guide: Implementation Tarefas Relacionadas: v Explicando Dinamicamente uma Instruo SQL ou uma XQuery em Administration Guide: Implementation v Visualizando uma Representao Grfica de um Plano de Acesso em Administration Guide: Implementation v Visualizando Instrues Explicveis para um Pacote em Administration Guide: Implementation v Visualizando o Histrico de Instrues de Consulta Explicadas Anteriormente em Administration Guide: Implementation

Grfico do Plano de Acesso


O Visual Explain utiliza informaes de vrias origens para produzir um grfico do plano de acesso, conforme mostrado na ilustrao abaixo. Com base em vrias entradas, o otimizador escolhe um plano de acesso e o Visual Explain exibe-o em um grfico de plano de acesso. Os ns no grfico representam tabelas e ndices a cada operao feita neles. As ligaes entre os ns representam o fluxo de dados.

50

Tutorial do Visual Explain

Conceitos Relacionados: v Plano de Acesso na pgina 49 v Viso Geral do Visual Explain em Administration Guide: Implementation Tarefas Relacionadas: v Visualizando o Histrico de Instrues de Consulta Explicadas Anteriormente em Administration Guide: Implementation v Explicando Dinamicamente uma Instruo SQL ou uma XQuery em Administration Guide: Implementation v Visualizando uma Representao Grfica de um Plano de Acesso em Administration Guide: Implementation v Visualizando Instrues Explicveis para um Pacote em Administration Guide: Implementation

N do Grfico do Plano de Acesso


O grfico do plano de acesso constitudo de uma rvore exibindo ns. Estes ns representam: v Tabelas, mostradas como retngulos v ndices, mostrados como losangos v Operadores, mostrados como octgonos (8 lados). Operadores TQUEUE, mostrados como paralelogramos v Funes de tabelas, mostradas como hexgonos (6 lados). Conceitos Relacionados: v Plano de Acesso na pgina 49 v Grfico do Plano de Acesso na pgina 50

Armazenamento em Cluster
Com o tempo, as atualizaes podem fazer com que linhas em pginas de dados tenham sua localizao alterada, diminuindo o grau de cluster que existe entre um ndice e as pginas de dados. Reorganizar uma tabela respeitando um ndice selecionado, refaz o cluster dos dados. Um ndice com cluster mais til para colunas que possuam predicados de intervalo, porque permite um melhor acesso seqencial de dados na tabela base. O resultado uma menor busca de pginas, j que valores semelhantes esto na mesma pgina de dados. Em geral, apenas um dos ndices em uma tabela pode ter um alto grau de cluster. Para verificar o grau de cluster de um ndice, d um clique duplo em seu n para exibir a janela Estatsticas de ndice. Os valores de proporo de cluster ou de fator de cluster so mostrados nesta janela. Se um valor estiver baixo, considere reorganizar os dados da tabela. Referncia Relacionada: v Diretrizes para Criao de ndices na pgina 81

Apndice A. Conceitos do Visual Explain

51

Continer
Um continer uma localizao de armazenamento fsico dos dados. Ele est associado a um espao de tabelas e pode ser um arquivo, um diretrio ou um dispositivo. Conceitos Relacionados: v Espaos de Tabela na pgina 61

Custo
Custo, no contexto do Visual Explain, a utilizao de recursos total estimada, necessria para executar o plano de acesso para uma instruo (ou os elementos de uma instruo). O custo origina-se de uma combinao de custo da CPU (em nmero de instrues) e E/S (em nmeros de buscas e transferncias de pgina). A unidade do custo o timeron. Um timeron no se equipara diretamente a nenhum tempo decorrido real, mas d uma estimativa relativa aproximada dos recursos (custo) requeridos pelo gerenciador de banco de dados para executar dois planos para a mesma consulta. O custo mostrado em cada n de operador de um grfico do plano de acesso o custo cumulativo, do incio da execuo do plano de acesso at a (e incluindo) execuo deste operador especfico. Ele no reflete fatores como a carga de trabalho no sistema ou o custo de linhas de dados retornadas para o usurio. Conceitos Relacionados: v Timerons na pgina 61

Bloqueio do Cursor
Bloqueio do cursor uma tcnica que reduz o overhead fazendo com que o gerenciador de banco de dados recupere um bloco de linhas em uma nica operao. Estas linhas so armazenadas em cache enquanto so processadas. O cache alocado quando um aplicativo emite um pedido OPEN CURSOR e desalocado quando o cursor fechado. Quando todas as linhas tiverem sido processadas, outro bloco de linhas recuperado. Utilize a opo BLOCKING nos comando PREP ou BIND junto com os seguintes parmetros para especificar o tipo de bloqueio de cursor: UNAMBIG Apenas cursores no ambguos so bloqueados (o padro). ALL NO Cursores ambguos e no ambguos so bloqueados. Cursores no so bloqueados.

Tarefas Relacionadas: v Especificando Bloqueio de Linha para reduo de overhead em Performance Guide Referncia Relacionada: v Comando BIND em Command Reference

52

Tutorial do Visual Explain

v Comando PRECOMPILE em Command Reference

Espao de Tabelas Gerenciado pelo Banco de Dados


Existem dois tipos de espaos de tabela que podem existir em um banco de dados: DMS (Database-managed Space) e SMS (System-managed Space). reas de tabela DMS so gerenciadas pelo gerenciador de banco de dados e so projetadas e ajustadas para atender aos seus requisitos. A definio de rea de tabela DMS inclui uma lista de arquivos (ou dispositivos) nos quais os dados do banco de dados so armazenados em seu formato de rea de tabela DMS. Voc pode incluir arquivos (ou dispositivos) pr-alocados em uma rea de tabela DMS existente para aumentar sua capacidade de armazenamento. O gerenciador de bancos de dados automaticamente faz o rebalanceamento dos dados existentes em todos os contineres pertencentes a esse espao de tabelas. reas de tabela DMS e SMS podem coexistir no mesmo banco de dados. Conceitos Relacionados: v Espao de Tabelas Gerenciado pelo Sistema na pgina 60

SQL ou XQuery Dinmica


Instrues SQL ou XQuery dinmicas so instrues SQL ou XQuery preparadas e executadas dentro de um programa de aplicativo enquanto o programa est em execuo. Em uma SQL ou XQuery dinmica, : v Voc emite a instruo SQL ou XQuery de maneira interativa, utilizando a CLI ou o CLP v A origem SQL ou XQuery est contida em variveis de linguagem host integradas em um programa aplicativo. Quando o DB2 executa uma instruo dinmica SQL ou XQuery, ele cria um plano de acesso baseado em estatsticas atuais do catlogo e nos parmetros de configurao. Este plano de acesso pode mudar de uma execuo do programa aplicativo de instrues para outra. A alternativa a SQL ou XQuery dinmicas o uso de SQL ou XQuery estticas. Conceitos Relacionados: v SQL ou XQuery Esttica na pgina 60

Captura Instantnea de Explicao


Com o Visual Explain, voc poder examinar o contedo de uma captura instantnea de explicao. Um instantneo de explicao formado por informaes compactadas que so coletadas quando uma instruo SQL explicada. Ele armazenado como um BLOB (binary large object) na tabela EXPLAIN_STATEMENT e contm as seguintes informaes:
Apndice A. Conceitos do Visual Explain

53

v A representao interna do plano de acesso, incluindo seus operadores e as tabelas e ndices acessados. v Os critrios de deciso utilizados pelo otimizador, incluindo estatsticas para objetos de banco de dados e o custo cumulativo de cada operao. Um instantneo de explicao exigido se voc quiser exibir a representao grfica do plano de acesso de uma instruo SQL. Para assegurar que um instantneo de explicao seja criado: 1. Tabelas de explicao devem existir no gerenciador de banco de dados para armazenar os instantneos de explicao. Para obter informaes sobre como criar estas tabelas, consulte Criando tabelas de explicao na ajuda on-line. 2. Para um pacote contendo instrues SQL ou XQuery estticas, configure a opo EXPLSNAP para ALL ou YES quando ligar ou preparar o pacote. Voc receber um instantneo de explicao para cada instruo SQL explicvel no pacote. Para obter mais informaes sobre os comandos BIND e PREP, consulte a Command Reference. 3. Para instrues SQL dinmicas, defina a opo EXPLSNAP para ALL quando efetuar a unio do aplicativo que as emite, ou defina o registro especial CURRENT EXPLAIN SNAPSHOT para YES ou EXPLAIN antes de emit-las interativamente. Para obter mais informaes, consulte a seo sobre instantneos de explicao atuais na SQL Reference. Tarefas Relacionadas: v Utilizando Capturas Instantneas de Explicao na pgina 4 Referncia Relacionada: v Comando BIND em Command Reference v Comando PRECOMPILE em Command Reference

Instruo Explicvel
Uma instruo explicvel uma instruo SQL ou XQuery para qual uma operao de explicao pode ser realizada. Instrues SQL ou XQuery explicveis so: v SELECT v INSERT v UPDATE v DELETE v VALUES Conceitos Relacionados: v Instruo Explicada na pgina 54

Instruo Explicada
Uma instruo explicada uma instruo SQL ou XQuery para a qual foi executada uma operao explicada. Instrues explicadas so mostradas na janela Histrico de Instrues Explicadas. Conceitos Relacionados: v Instruo Explicvel na pgina 54

54

Tutorial do Visual Explain

Operando
Um operando uma entidade na qual uma operao realizada. Por exemplo, uma tabela ou um ndice um operando de vrios operados como TBSCAN e IXSCAN. Conceitos Relacionados: v Operador na pgina 55

Operador
Um operador uma ao que deve ser realizada em dados ou a sada de uma tabela ou de um ndice, quando o plano de acesso para uma instruo SQL ou XQuery for executado. Os seguintes operadores podem ser exibidos no grfico do plano de acesso: CMPEXP Calcula expresses. (Apenas para o modo de depurao.) DELETE Exclui linhas de uma tabela. EISCAN Varre um ndice definido pelo usurio para produzir um fluxo reduzido de linhas. FETCH Busca colunas de uma tabela utilizando um identificador de registro especfico. FILTER Filtra dados aplicando um ou mais predicados neles. GENROW Gera uma tabela de linhas. GRPBY Agrupa linhas por valores de coluna ou funes designadas em comum e avalia funes definidas. HSJOIN Representa uma unio de hash, onde duas ou mais tabelas tem hash executado nas colunas de unio. INSERT Insere linhas em uma tabela. IXAND Executa ANDs nos identificadores de linha (RIDs) de duas ou mais varreduras de ndice. IXSCAN Varre um ndice de uma tabela com condies iniciar/parar opcionais, produzindo um fluxo ordenado de linhas. MSJOIN Representa uma unio de combinao, onde tanto a tabela externa quanto a interna devem estar na ordem unio-predicado.

Apndice A. Conceitos do Visual Explain

55

NLJOIN Representa uma unio de loop aninhado que acessa uma tabela interna uma vez para cada linha da tabela externa. PIPE Transfere linhas. (Apenas para o modo de depurao.)

RETURN Representa o retorno dos dados da consulta para o usurio. RIDSCN Varre uma lista de identificadores de linha (RIDs) obtidos de um ou mais ndices. RPD (Remote PushDown) Um operador para planos remotos. Ele bastante similar ao operador SHIP na Verso 8 (operador RQUERY nas verses anteriores), exceto que no contm uma instruo SQL ou XQuery. SHIP Recupera dados de uma origem de dados remota. Utilizado no sistema federado.

SORT Ordena linhas na ordem das colunas especificadas e opcionalmente elimina entradas duplicadas. TBSCAN Recupera linhas lendo todos os dados requeridos diretamente das pginas de dados. TEMP Armazena dados em uma tabela temporria para serem lidos posteriormente (possivelmente vrias vezes). TQUEUE Transfere dados de tabela entre agentes de banco de dados. UNION Concatena fluxos de linhas de vrias tabelas. UNIQUE Elimina linhas com valores duplicados, para colunas especificadas. UPDATE Atualiza linhas em uma tabela. XISCAN Executa uma varredura no ndice de uma tabela XML. XSCAN Navega pelas subrvores do n de um documento XML. XANDOR Permite que predicados AND e OR sejam aplicados em vrios ndices XML. Conceitos Relacionados: v Operando na pgina 55

Otimizador
O otimizador o componente do compilador SQL que escolhe um plano de acesso para uma instruo SQL DML (Data Manipulation Language). Ele faz isto modelando o custo de execuo de vrios planos de acesso alternativos e selecionando aquele com o menor custo estimado.

56

Tutorial do Visual Explain

Conceitos Relacionados: v Classe de Otimizao de Consulta na pgina 58

Pacote
Um pacote um objeto armazenado no banco de dados que inclui as informaes necessrias para processar as instrues SQL associadas a um arquivo de origem de um programa aplicativo. Ele gerado atravs de: v Pr-compilao de um arquivo de origem com o comando PREP. v Ligao de um arquivo de unio que foi gerado pelo pr-compilador com o comando BIND. Referncia Relacionada: v Comando BIND em Command Reference v Comando PRECOMPILE em Command Reference

Predicado
Um predicado um elemento de uma condio de pesquisa que expressa ou implica uma operao de comparao. Predicados so includos em clusulas comeando com WHERE ou HAVING. Por exemplo, na instruo SQL a seguir:
SELECT * FROM SAMPLE WHERE NAME = SMITH AND DEPT = 895 AND YEARS > 5

Os seguintes itens so predicados: NAME = SMITH, DEPT = 895; e YEARS > 5. Predicados pertencem a uma das seguintes categorias, ordenadas da mais eficiente menos eficiente: 1. Parntese de condies de incio e de parada (reduzir) uma varredura de ndice. (Estas condies tambm so denominadas predicados de delimitao de intervalo). 2. Predicados de pgina de ndice (tambm denominados sargable de ndice) podem ser avaliados a partir de um ndice porque as colunas envolvidas no predicado so parte da chave de ndice. 3. Predicados de pgina de dados (tambm denominados sargable de dados) no podem ser avaliados a partir de um ndice, mas podem ser avaliados enquanto linhas permanecem no buffer. 4. Predicados residuais geralmente requerem E/S alm do simples acesso de uma tabela base e devem ser aplicados depois dos dados serem copiados da pgina de buffer. Eles incluem predicados que contm subconsultas, ou aqueles que lem dados LONG VARCHAR ou LOB armazenados em arquivos separados da tabela. Ao projetar predicados, tenha como objetivo a maior seletividade possvel para que o menor nmero possvel de linhas seja retornado. Os seguintes tipos de predicados so os mais eficientes e utilizados mais freqentemente:

Apndice A. Conceitos do Visual Explain

57

v Um predicado de unio de igualdade simples exigido para uma unio de combinao. Ele tem o formato tabela1.coluna = tabela2.coluna e permite que colunas em duas tabelas diferentes sejam igualadas para que as tabelas sejam unidas. v Um predicado local aplicado apenas a uma tabela. Conceitos Relacionados: v Seletividade de Predicados na pgina 59

Classe de Otimizao de Consulta


Uma classe de otimizao de consulta um conjunto de regras de regravao de consulta e tcnicas de otimizao para compilao de consultas. As classes de otimizao de consulta principais so: 1 Otimizao restrita. til quando recursos de memria e processamento esto gravemente restringidos. Aproximadamente equivalente otimizao oferecida pela Verso 1. Otimizao leve. Especifica um nvel para otimizao superior ao da Verso 1, mas com custo de otimizao significativamente menor que dos nveis 3 e superiores, especialmente para consultas muito complexas. Otimizao moderada. Chega mais prximo de corresponder s caractersticas de otimizao de consulta do DB2 para MVS/ESA. Otimizao normal. Recomendada para um ambiente misto utilizando transaes simples e consultas complexas. Otimizao normal. Igual otimizao de consulta 5, exceto pelo fato de no reduzir a quantidade de otimizao de consulta para consultas dinmicas complexas.

3 5 7

Outras classes de otimizao de consulta, para serem utilizadas apenas sob circunstncias especiais, so: 0 Otimizao mnima. Utilize apenas quando for necessria otimizao mnima ou nula (ou seja, para consultas muito simples em tabelas bem indexadas). Otimizao mxima. Utiliza recursos de memria e de processamento substanciais. Utilize apenas se a classe 5 for insuficiente (ou seja, para consultas muito complexas e de longo prazo que no tm bom desempenho na classe 5).

No geral, utilize uma classe de otimizao mais alta para consultas estticas e para consultas que voc prev que levaro bastante tempo para serem executadas e uma classe de otimizao mais baixa para consultas simples que sejam emitidas dinamicamente ou que sejam executadas apenas algumas vezes. Para configurar a otimizao de consulta para instrues SQL ou XQuery dinmicas, digite o seguinte comando no processador de linha de comandos:
SET CURRENT QUERY OPTIMIZATION = n;

em que n a classe de otimizao de consulta desejada.

58

Tutorial do Visual Explain

Para configurar a otimizao de consulta para instrues SQL ou XQuery estticas, utilize a opo QUERYOPT nos comandosBIND ou PREP. Conceitos Relacionados: v Otimizador na pgina 56 Referncia Relacionada: v Comando BIND em Command Reference v Comando PRECOMPILE em Command Reference

Seletividade de Predicados
Seletividade refere-se probabilidade de qualquer linha satisfazer um predicado (ou seja, ser verdadeira). Por exemplo, uma seletividade de 0,01 (1%) para um predicado sendo operado em uma tabela com 1.000.000 linhas significa que este predicado retorna uma estimativa de 10.000 linhas (1% de 1.000.000) e descarta uma estimativa de 990.000 linhas. Um predicado altamente seletivo (um com uma seletividade de 0,10 ou mais) proveitoso. Estes predicados retornam menos linhas para serem trabalhadas por operadores futuros, exigindo assim menos CPU e E/S para satisfazer a consulta. Exemplo Suponha que voc tenha uma tabela de 1.000.000 linhas e que a consulta original contenha uma clusula ORDER BY exigindo uma etapa de ordenao adicional. Com um predicado que tenha seletividade menor que 0,01, a ordenao teria que ser feita em uma estimativa de 10.000 linhas. Entretanto, com um predicado menos seletivo de 0,50, a ordenao teria que ser feita em uma estimativa de 500.000 linhas, exigindo mais tempo de CPU e E/S. Conceitos Relacionados: v Predicado na pgina 57

Juno em Estrela
Um conjunto de unies so considerados uma unio estrela quando uma tabela de fato (tabela central maior) unida a duas ou mais tabelas de dimenso (tabelas menores contendo descries dos valores de coluna na tabela de fato). Uma unio Estrela formada por 3 partes principais: v Semi-unies v Index ANDing dos resultados das Semi-unies v Concluso das semi-unies. Ela aparece como duas ou mais junes alimentando um operador IXAND. Uma Semi-unio uma forma especial de unio na qual o resultado da unio apenas o RID (Identificador de Linha) da tabela interna, ao invs da unio das colunas da tabela interna e externa.

Apndice A. Conceitos do Visual Explain

59

Unies estrela utilizam Semi-unies para fornecer Identificadores de Linha para um operador Index ANDing. O operador Index ANDing acumula o efeito de filtragem de vrias unies. A sada do operador Index ANDing alimentada em um operador Index ORing, que ordena os Identificadores de Linha e elimina todas as linhas duplicadas que podem ter resultado das unies alimentando o operador Index ANDing. As linhas da tabela de fato so buscadas utilizando-se um operador Fetch. Finalmente, a tabela de fato reduzida unida a todas as tabelas de dimenso, para concluir as unies. Sugestes de desempenho: v Crie ndices na tabela de fato para cada uma das unies de tabela de dimenso. v Assegure que o limite de heap de ordenao seja alto o suficiente para permitir alocao do filtro de bit do operador Index ANDing. Para unies estrela, isto pode requerer at 12 MB ou 3000 pginas de 4K. Para paralelismo intraparties, o filtro de bit ser alocado do mesmo segmento de memria compartilhado que o heap de classificao compartilhado, alm de ser ligado pelo parmetro de configurao de banco de dados sortheap e pelo parmetro de configurao de banco de dados sheapthres_shr. v Aplique predicados de filtragem nas tabelas de dimenso. Se as estatsticas no estiverem atualizadas, atualize-as utilizando o comando runstats. Referncia Relacionada: v Operador IXAND na pgina 67 v Comando RUNSTATS em Command Reference v Utilizando RUNSTATS na pgina 82

SQL ou XQuery Esttica


Uma instruo SQL ou XQuery esttica integrada em um programa aplicativo. Todas estas instrues embutidas devem ser pr-compiladas e ligadas em um pacote para que o aplicativo possa ser executado. Para executar expresses XQuery em SQL esttica, utilize a funo XMLQUERY. Quando o DB2 compila essas instrues, ele cria um plano de acesso para cada uma delas baseado nas estatsticas de catlogo e parmetros de configurao no momento em que as instrues foram pr-compiladas e ligadas. Estes planos de acesso so sempre utilizados quando o aplicativo executado; eles no mudam at que o pacote seja ligado novamente. A alternativa s instrues SQL ou XQuery estticas so as instrues SQL ou XQuery dinmicas. Tarefas Relacionadas: v Executando Expresses XQuery em Aplicativos SQL Incorporados em Desenvolvendo Aplicativos SQL Incorporados

Espao de Tabelas Gerenciado pelo Sistema


Existem dois tipos de espaos de tabela que podem existir em um banco de dados: SMS (System-managed Space) e DMS (Database-managed Space).

60

Tutorial do Visual Explain

Uma rea de tabela SMS gerenciada pelo sistema operacional, que armazena os dados do banco de dados em um espao que atribudo quando um rea de tabela criada. A definio de table space inclui uma lista de um ou mais caminhos de diretrio onde esses dados so armazenados. O sistema de arquivos gerencia a alocao e o gerenciamento do armazenamento de mdia. reas de tabela SMS e DMS podem coexistir no mesmo banco de dados. Conceitos Relacionados: v Espao de Tabelas Gerenciado pelo Banco de Dados na pgina 53

Espaos de Tabela
mais fcil gerenciar bancos de dados muito grandes se ele for particionado em partes gerenciadas separadamente denominadas reas de tabela. Uma rea de tabela permite que voc atribua a localizao de dados a dispositivos lgicos particulares ou a partes deles. Por exemplo, quando uma tabela criada, voc pode especificar que seus ndices ou suas colunas longas com dados de objeto grande (LOB) sejam mantidas longe do resto dos dados da tabela. Uma rea de tabela pode ser espalhada em um ou mais dispositivos de armazenamento fsico (contineres) para melhorar o desempenho. Entretanto, recomendamos que todos os dispositivos ou contineres dentro de uma rea de tabela tenham caractersticas de desempenho semelhantes. Um espao de tabela pode ser gerenciado de duas maneiras diferentes: como um SMS (System-managed Space) ou como um DMS (Database-managed Space). Conceitos Relacionados: v Continer na pgina 52

Timerons
Timerons so a unidade de medida do DB2 para custo. Um timeron no equivale diretamente ao tempo de execuo real da CPU, mas oferece uma medida relativa da estimativa dos recursos necessrios para execuo de uma determinada consulta de acordo com o plano de acesso selecionado. O custo estimado de uma consulta em timerons no prev o tempo de execuo dessa consulta. No entanto, a estimativa pode oferecer uma base para comparao de duas consultas no mesmo ambiente sob a mesma carga de trabalho. Por exemplo, se considerarmos os mesmos fatores externos, como capacidade de hardware e carga de trabalho simultnea, uma consulta com maior custo, que envolva junes complexas e varreduras de tabelas grandes provavelmente ter um tempo de execuo maior do que uma consulta mais simples e com menor custo. Conceitos Relacionados: v Custo na pgina 52

Apndice A. Conceitos do Visual Explain

61

Visual Explain
Nota: Como na Verso 6, o Visual Explain no pode mais ser iniciado a partir da linha de comandos. Entretanto, ele ainda pode ser iniciado a partir de vrios objetos de banco de dados no Centro de Controle. Para esta verso, a documentao continua a utilizar o nome Visual Explain. O Visual Explain permite que voc visualize o plano de acesso para as instrues SQL ou XQuery explicadas como um grfico. Voc poder utilizar as informaes disponveis no grfico a fim de ajustar suas consultas para obter um melhor desempenho. Um grfico do plano de acesso mostra detalhes de: v Tabelas (e suas colunas associadas) e ndices v Operadores (como varreduras, ordenaes e unies de tabela) v reas de tabelas e funes. Voc tambm pode utilizar o Visual Explain para: v Exibir as caractersticas que foram utilizadas no momento da otimizao. Voc pode comparar estas estatsticas s estatsticas do catlogo atual para ajud-lo a determinar se a nova unio do pacote pode melhorar o desempenho. v Determinar se um ndice foi ou no utilizado para acessar uma tabela. Se um ndice no tiver sido utilizado, o Visual Explain pode ajud-lo a determinar quais colunas podem ser beneficiadas se forem indexadas. v Exibir os efeitos de se realizar vrias tcnicas de ajuste comparando as verses anteriores e posteriores do grfico do plano de acesso para uma consulta. v Obter informaes sobre cada operao no plano de acesso, incluindo o custo estimado total e o nmero de linhas recuperadas (cardinalidade). Para iniciar o Visual Explain:: v A partir do Centro de Controle, clique com o boto direito em um nome de banco de dados e selecione Mostrar Histrico de Instrues Explicadas ou Explicar Consulta. v A partir do Command Editor, execute uma instruo explicvel nas pginas Interactive ou Script. v A partir do Query Patroller, clique em Mostrar Plano de Acesso a partir do bloco de notas Propriedades de Consultas Gerenciadas ou do bloco de notas Propriedades de Consultas Histricas. Conceitos Relacionados: v Viso Geral do Visual Explain em Administration Guide: Implementation

62

Tutorial do Visual Explain

Apndice B. Lista em Ordem Alfabtica dos Operadores do Visual Explain


v v v v v v Operador Operador Operador Operador Operador Operador CMPEXP DELETE EISCAN FETCH FILTER GENROW

v Operador GRPBY v Operador HSJOIN v v v v v v v v v v v v v v v v v v Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador Operador INSERT IXAND IXSCAN MSJOIN NLJOIN PIPE RETURN RIDSCN RPD SHIP SORT TBSCAN TEMP TQUEUE UNION UNIQUE UPDATE XISCAN

v Operador XSCAN v Operador XANDOR

Operador CMPEXP
Nome do operador: CMPEXP Representa: A computao de expresses exigidas para resultados intermedirios ou finais. (Este operador apenas para o modo de depurao). Conceitos Relacionados: v Operador na pgina 55

Direitos Autorais IBM Corp. 2002, 2006

63

Operador DELETE
Nome do operador: DELETE Representa: A excluso de linhas de uma tabela. Este operador representa uma operao necessria. Para melhorar os custos do plano de acesso, concentre-se em outros operadores (como varreduras ou unies) que definem o conjunto de linhas a serem excludas. Sugesto de Desempenho: v Se voc estiver excluindo todas as linhas de uma tabela, considere a instruo DROP TABLE ou o comando LOAD REPLACE. Conceitos Relacionados: v Operador na pgina 55

Operador EISCAN
Nome do operador: EISCAN Representa: Este operador varre um ndice definido pelo usurio para produzir um fluxo reduzido de linhas. A varredura utiliza as vrias condies iniciar/parar da funo criadora de intervalo fornecida pelo usurio. Esta operao realizada para diminuir o conjunto de linhas qualificadas antes de acessar a tabela base (com base em predicados). Sugesto de Desempenho: v Com o tempo, atualizaes de banco de dados podem fazer com que um ndice torne-se fragmentado, resultando em mais pgina de ndice que o necessrio. Isto pode ser corrigido eliminando e recriando o ndice ou reorganizando-o. v Se as estatsticas no estiverem atualizadas, atualize-as utilizando o comando runstats. Conceitos Relacionados: v Operador na pgina 55

Operador FETCH
Nome do operador: FETCH Representa: A busca colunas de uma tabela utilizando um RID (Row Identifier) especfico. Sugestes de desempenho: v Expanda as chaves de ndice para incluir as colunas buscadas para que as pginas de dados no tenham que ser acessadas. v Encontre um ndice relacionado busca e d um clique duplo em seu n para exibir sua janela de estatsticas. Assegure que o grau de armazenamento em cluster seja alto para o ndice.

64

Tutorial do Visual Explain

v Aumente o tamanho do buffer se o valor de entrada/sada (E/S) criado pela busca for maior que o nmero de pginas na tabela. v Se as estatsticas no estiverem atualizadas, atualize-as. O quantil e as estatsticas de valor freqentes oferecem informaes sobre a seletividade de predicados, o que determina quando varreduras de ndice so escolhida em varreduras de tabela. Para atualizar estas estatsticas, utilize o comando runstats em uma tabela com a clusula WITH DISTRIBUTION. Conceitos Relacionados: v Operador na pgina 55

Operador FILTER
Nome do operador: FILTER Representa: A aplicao de predicados residuais para que dados sejam filtrados com base nos critrios fornecidos pelos predicados. Sugestes de desempenho: v Certifique-se de ter utilizado predicados que recuperem apenas os dados necessrios. Por exemplo, assegure que o valor de seletividade para os predicados representa a parte da tabela que voc deseja que seja retornada. v Assegure que a classe de otimizao seja pelo menos 3, para que o otimizador utilize uma juno em vez de uma subconsulta. Se isto no for possvel, tente escrever novamente a consulta SQL mo para eliminar a subconsulta. Conceitos Relacionados: v Operador na pgina 55

Operador GENROW
Nome do operador: GENROW Representa: Uma funo interna que gera uma tabela de linhas, no utilizando entrada de tabelas, ndices ou operadores. GENROW pode ser utilizado pelo otimizador para gerar linhas de dados (por exemplo, para uma instruo INSERT ou para algumas listas IN que so transformadas em unies). Para exibir as estatsticas estimadas para as tabelas geradas pela funo GENROW, d um clique duplo em seu n. Conceitos Relacionados: v Operador na pgina 55

Operador GRPBY
Nome do operador: GRPBY

Apndice B. Lista em Ordem Alfabtica dos Operadores do Visual Explain

65

Representa: O agrupamento de linhas de acordo com valores comuns de colunas ou funes designadas. Esta operao necessria para produzir um grupo de valores ou para avaliar funes definidas. Se nenhuma coluna GROUP BY for especificada, o operador GRPBY ainda pode ser utilizado se houver funes de agregao na lista SELECT, indicando que a tabela inteira foi tratada como um nico grupo quando esta agregao foi feita. Sugestes de desempenho: v Este operador representa uma operao necessria. Para melhorar os custos do plano de acesso, concentre em outros operadores (como varreduras ou unies) que definem o conjunto de linhas para serem agrupadas. v Para melhorar o desempenho de uma instruo SELECT que contenha uma nica funo de agregao mas nenhuma clusula GROUP BY, tente o seguinte: Para uma funo de agregao MIN(C), crie um ndice ascendente em C. Para uma funo de agregao MAX(C), crie um ndice descendente em C. Conceitos Relacionados: v Operador na pgina 55

Operador HSJOIN
Nome do operador: HSJOIN Representa: Uma unio hash para a qual as linhas qualificadas de tabelas tem hash produzido para permitir unio direta, sem pr-ordenao do contedo das tabelas. Uma unio necessria sempre que houver mais que uma tabela com referncia em uma clusula FROM. Uma unio de hash possvel sempre que houver um predicado de unio que iguale colunas de duas tabelas diferentes. Os predicados de unio precisam ter exatamente o mesmo tipo de dados. Junes de hash tambm podem surgir de uma subconsulta gravada novamente, como o caso de NLJOIN. Uma unio de hash no requer que as tabelas de entrada sejam ordenadas. A unio realizada varrendo-se a tabela interna da unio de hash e gerando-se uma tabela de consulta produzindo hash dos valores de coluna de unio. Ele l a tabela externa, produzindo hash dos valores de coluna de unio e verificando na tabela de consulta gerada para a tabela interna. Sugestes de desempenho: v Utilize predicados locais (ou seja, predicados que faam referncia a uma tabela) para reduzir o nmero de linhas a serem unidas. v Aumente o tamanho do heap de ordenao para torn-lo grande o suficiente para conter a tabela de consulta de hash na memria. v Se as estatsticas no forem atuais, atualize-as utilizando o comando RUNSTATS. Conceitos Relacionados: v Operador na pgina 55

66

Tutorial do Visual Explain

Operador INSERT
Nome do operador: INSERT Representa: A insero de linhas em uma tabela. Este operador representa uma operao necessria. Para melhorar os custos do plano de acesso, concentre em outros operadores (como varreduras ou unies) que definem o conjunto de linhas para serem inseridas. Conceitos Relacionados: v Operador na pgina 55

Operador IXAND
Nome do operador: IXAND Representa: A execuo de AND dos resultados de vrias varreduras de ndice utilizando tcnicas de Bitmap Dinmico. O operador permite que predicados com AND sejam aplicados a vrios ndices, para reduzir acessos de tabela bsicos ao mnimo. Este operador executado para: v Reduzir o conjunto de linhas antes de acessar a tabela base. v Executar AND de predicados aplicados a vrios ndices v Executar AND nos resultados de semi-unies, utilizados em uma unio estrela. Sugestes de desempenho: v Com o tempo, atualizaes de banco de dados podem fazer com que um ndice torne-se fragmentado, resultando em mais pgina de ndice que o necessrio. Isto pode ser corrigido eliminando e recriando o ndice ou reorganizando-o. v Se as estatsticas no estiverem atualizadas, atualize-as utilizando o comando runstats. v Em geral, varreduras de ndices so mais eficientes quando apenas algumas linhas so qualificadas. Para estimar o nmero de linhas qualificadas, o otimizador utiliza as estatsticas que esto disponveis para as colunas referenciadas em predicados. Se alguns valores ocorrerem com maior freqncia que outros, importante solicitar as estatsticas de distribuio utilizando a clusula WITH DISTRIBUTION para o comando RUNSTATS. Utilizando as estatsticas de distribuio no uniformes, o otimizador pode distinguir entre valores que ocorrem freqentemente e no freqentemente. v IXAND pode explorar melhor ndices de coluna nicos, j que chaves de incio e parada so cruciais no uso de IXAND. v Para junes em estrela , crie ndices de coluna nica para cada uma das colunas mais seletivas na tabela de fato e nas tabelas de dimenso relacionada. Conceitos Relacionados: v Operador na pgina 55

Operador IXSCAN
Nome do operador: IXSCAN
Apndice B. Lista em Ordem Alfabtica dos Operadores do Visual Explain

67

Representa: A varredura de um ndice para produzir um fluxo reduzido de IDs de linha. A varredura pode utilizar condies opcionais de incio/parada ou pode aplicar-se a predicados indexveis que faam referncia a colunas do ndice. Esta operao realizada para reduzir o conjunto de IDs de linha de qualificao antes de acessar a tabela base (com base em predicados). Sugestes de desempenho: v Com o tempo, atualizaes de banco de dados podem fazer com que um ndice torne-se fragmentado, resultando em mais pgina de ndice que o necessrio. Isto pode ser corrigido eliminando e recriando o ndice ou reorganizando-o. v Quando duas ou mais tabelas esto sendo acessadas, o acesso tabela interna atravs de um ndice pode ser mais eficiente fornecendo um ndice na coluna de juno da tabela externa. Para obter mais instrues sobre ndices, consulte a ajuda on-line do Visual Explain. v Se as estatsticas no forem atuais, atualize-as utilizando o comando RUNSTATS. v Geralmente, varreduras de ndice so mais eficientes quando apenas alguns IDs de linha so qualificados. Para estimar o nmero de IDs de linha de qualificao, o otimizador utiliza as estatsticas que esto disponveis para as colunas referenciadas em predicados. Se alguns valores ocorrerem mais freqentemente que outros, importante solicitar estatsticas de distribuio utilizando a clusula WITH DISTRIBUTION para o comando runstats. Utilizando as estatsticas de distribuio no uniformes, o otimizador pode distinguir entre valores que ocorrem freqentemente e no freqentemente. Conceitos Relacionados: v Operador na pgina 55

Operador MSJOIN
Nome do operador: MSJOIN Representa: Uma unio de combinao para a qual as linhas qualificadas das tabelas externa e interna devem estar na ordem unio-predicado. Uma combinao tambm denominada uma unio de varredura de combinao ou unio de combinao ordenada. Uma unio necessria sempre que houver mais que uma tabela com referncia em uma clusula FROM. Uma unio de combinao possvel sempre que houver um predicado de juno que iguale colunas de duas tabelas diferentes. Tambm pode ser criada a partir de uma subconsulta escrita novamente. Uma unio de combinao requer colunas de entrada e sada ordenadas, j que as tabelas so geralmente varridas apenas uma vez. Esta entrada ordenada obtida acessando-se um ndice ou uma tabela ordenada. Sugestes de desempenho: v Utilize predicados locais (ou seja, predicados que faam referncia a uma tabela) para reduzir o nmero de linhas a serem unidas. v Se as estatsticas no forem atuais, atualize-as utilizando o comando RUNSTATS.

68

Tutorial do Visual Explain

Conceitos Relacionados: v Operador na pgina 55

Operador NLJOIN
Nome do operador: NLJOIN Representa: Uma unio de loop aninhado que varre (geralmente com uma varredura de ndice) a tabela interna uma vez para cada linha da tabela externa. Uma unio necessria sempre que houver mais que uma tabela com referncia em uma clusula FROM. Uma unio de loop aninhado no requer um predicado de unio, mas geralmente tem melhor desempenho com um. Uma unio de loop aninhado realizada: v Varrendo-se a tabela interna para cada linha acessada da tabela externa. v Realizando-se uma consulta de ndice na tabela interna para cada linha acessada da tabela externa. Sugestes de desempenho: v Uma unio de loop aninhado provavelmente ser mais eficiente se houver um ndice nas colunas unio-predicado da tabela interna (a tabela exibida direita do operador NLJOIN). Verifique se a tabela interna uma TBSCAN ao invs de IXSCAN. Se for, considere incluir um ndice em suas colunas de unio. Outra maneira (menos importante) de tornar a unio mais eficiente criar um ndice nas colunas de unio da tabela externa para que ela seja ordenada. v Se as estatsticas no forem atuais, atualize-as utilizando o comando RUNSTATS. Conceitos Relacionados: v Operador na pgina 55

Operador PIPE
Nome do operador: PIPE Representa: A transferncia de linhas para outros operadores sem alteraes s linhas. (Este operador apenas para o modo de depurao). Conceitos Relacionados: v Operador na pgina 55

Operador RETURN
Nome do operador: RETURN Representa: O retorno de dados de uma consulta para o usurio. Este o operador final no grfico do plano de acesso e mostra os valores e custos totais acumulados do plano de acesso.

Apndice B. Lista em Ordem Alfabtica dos Operadores do Visual Explain

69

Este operador representa uma operao necessria. Sugesto de Desempenho: v Certifique-se de ter utilizado predicados que recuperem apenas os dados necessrios. Por exemplo, assegure que o valor de seletividade para os predicados representa a parte da tabela que voc deseja que seja retornada. Conceitos Relacionados: v Operador na pgina 55

Operador RIDSCN
Nome do operador: RIDSCN Representa: A varredura de uma lista de RIDs (Row Identifiers) obtidos de um ou mais ndices. Este operador considerado pelo otimizador quando: v Predicados so conectados por palavras-chave OR ou existe um predicado IN. Pode-se utilizar uma tcnica denominada ORing de ndice, que combina resultados de vrios acessos de ndices na mesma tabela. v proveitoso utilizar pr-busca de lista para um nico acesso de ndice, j que ordenar os identificadores de linha antes de acessar as linhas base tornam a E/S mais eficiente. Conceitos Relacionados: v Operador na pgina 55

Operador RPD
Nome do operator: RPD Representa: Um operador utilizado no sistema federado para recuperar dados de uma origem de dados remota atravs de um reincio cclico no relacional. Este operador considerado pelo otimizador quando ele contm um plano remoto que no ser inspecionado pelo otimizador. Um operador RPD envia um pedido para uma origem de dados remota no relacional para recuperar o resultado da consulta. O pedido gerado pelo reincio cclico no relacional utilizando a API suportada pela origem de dados. Conceitos Relacionados: v Operador na pgina 55

Operador SHIP
Nome do operador: SHIP Representa: Um operador utilizado no sistema federado para recuperar dados de uma origem de dados remota. Este operador considerado pelo otimizador quando ele contm um plano remoto que no ser inspecionado pelo otimizador. Um operador SHIP envia uma instruo SELECT SQL ou XQuery para uma

70

Tutorial do Visual Explain

origem de dados remota para recuperar o resultado da consulta. A instruo SELECT gerada utilizando o dialeto SQL ou XQuery suportado pela origem de dados e poder conter qualquer consulta vlida, conforme permitida pela origem de dados. Conceitos Relacionados: v Operador na pgina 55

Operador SORT
Nome do operador: SORT Representa: A ordenao das linhas em uma tabela na ordem de uma ou mais de suas colunas, eliminando opcionalmente entradas duplicadas. A ordenao necessria quando no existem ndices que satisfaam os pedidos solicitados ou quando a ordenao pode ser menos cara que uma varredura de ndice. A ordenao geralmente realizada como uma operao final quando as linhas requeridas so buscadas, ou para ordenar dados anteriores para uma unio ou para um agrupamento. Se o nmero de linhas for alto ou se os dados ordenados no puderem ter canal processado, a operao requer a gerao de tabelas temporrias de alto custo. Sugestes de desempenho: v Considere incluir um ndice nas colunas de ordenao. v Certifique-se de ter utilizado predicados que recuperem apenas os dados necessrios. Por exemplo, assegure que o valor de seletividade para os predicados representa a parte da tabela que voc deseja que seja retornada. v Verifique se o tamanho da pr-busca da rea de tabela temporria do sistema adequado, ou seja, no esteja ligado a E/S. (Para verificar isto, selecione Instruo>Exibir estatsticas>Table spaces.) v Se ordenaes grandes forem freqentemente necessrias, considere aumentar os valores dos seguintes parmetros de configurao: Tamanho do heap de ordenao (sortheap). Para alterar este parmetro, clique com o boto direito no banco de dados no Centro de Controle e selecione Configurar neste menu pop-up. Selecione a guia Desempenho no bloco de notas exibido. Limite de heap de ordenao (sheapthres). Para alterar este parmetro, clique com o boto direito na instncia de banco de dados no Centro de Controle e selecione Configurar neste menu pop-up. Selecione a guia Desempenho no bloco de notas exibido. v Se as estatsticas no forem atuais, atualize-as utilizando o comando RUNSTATS. Conceitos Relacionados: v Operador na pgina 55

Operador TBSCAN
Nome do operador: TBSCAN

Apndice B. Lista em Ordem Alfabtica dos Operadores do Visual Explain

71

Representa: Uma varredura de tabela (varredura relacional) que recupera linhas lendo todos os dados necessrios diretamente das pginas de dados. Este tipo de varredura escolhida pelo otimizador em uma varredura de ndice quando: v O intervalo de valores varridos ocorre com freqncia (ou seja, a maioria das tabelas devem ser acessada) v A tabela for pequena v O armazenamento em cluster for baixo v Um ndice no existir Sugestes de desempenho: v Uma varredura de ndice pode ser mais eficiente que uma varredura de tabela se a tabela for grande e a maioria de suas linhas no forem acessadas. Para aumentar a possibilidade de que uma varredura de ndice ser utilizada pelo otimizador nesta situao, considere incluir ndices em colunas para qual existam predicados seletivos. v Se um ndice j existir mas no tiver sido utilizado, verifique se existem predicados seletivos em cada uma de suas colunas iniciais. Caso estes predicados existam, verifique em seguida se esse grau de armazenamento em cluster alto para o ndice. (Para ver estas estatsticas, abra a janela Estatsticas de Tabela da tabela abaixo da ordenao e selecione o boto ndices para exibir a janela Estatsticas de ndice). v Verifique se o tamanho da pr-busca da rea de tabela adequado, ou seja, no esteja ligado a E/S. (Para verificar isto, selecione Instruo>Exibir estatsticas>Table spaces.) v Se as estatsticas no forem atuais, atualize-as utilizando o comando RUNSTATS. O quantil e as estatsticas de valor freqentes oferecem informaes sobre a seletividade de predicados. Por exemplo, estas estatsticas podem ser utilizadas para determinar quando varreduras de ndice so escolhidas em varreduras de tabelas. Para atualizar estes valores, utilize o comando RUNSTATS em uma tabela com a clusula WITH DISTRIBUTION. Conceitos Relacionados: v Operador na pgina 55

Operador TEMP
Nome do operador: TEMP Representa: A ao de ordenar dados em uma tabela temporria, para serem lidos posteriormente por outro operador (possivelmente vrias vezes). A tabela removida aps o processamento da instruo SQL ou XQuery, caso no tenha sido removida antes. Este operador necessrio para avaliar subconsultas ou para armazenar resultados intermedirios. Em algumas situaes (como quando a instruo pode ser atualizada), ela pode ser obrigatria. Conceitos Relacionados: v Operador na pgina 55

72

Tutorial do Visual Explain

Operador TQUEUE
Nome do operador: TQUEUE Representa: Uma fila de tabela que utilizada para passar dados de tabela de um agente de banco de dados para outro quando h vrios agentes de banco de dados processando uma consulta. Vrios agentes de banco de dados so utilizados para processar uma consulta quando paralelismo est envolvido. Os tipos de filas de tabela so: v Local: A fila de tabela utilizada para passar dados entre agentes de banco de dados dentro de um nico n. Uma fila de tabela local utilizada para paralelismo intrapartio. v No Local: A fila de tabela utilizada para passar dados entre agentes de banco de dados em ns diferentes. Conceitos Relacionados: v Operador na pgina 55

Operador UNION
Nome do operador: UNION Representa: A concatenao de fluxos de linhas de vrias tabelas. Este operador representa uma operao necessria. Para melhorar os custos de planos de acesso, concentre-se em outros operadores (como varreduras e unies) que definam o conjunto de linhas a serem concatenadas. Conceitos Relacionados: v Operador na pgina 55

Operador UNIQUE
Nome do operador: UNIQUE Representa: A eliminao de linhas tendo valores duplicados para colunas especificadas. Sugesto de Desempenho: v Este operador no necessrio apenas se um ndice exclusivo existir em colunas apropriadas. Para obter instrues sobre ndices, consulte Criando ndices apropriados na ajuda on-line do Visual Explain. Conceitos Relacionados: v Operador na pgina 55

Apndice B. Lista em Ordem Alfabtica dos Operadores do Visual Explain

73

Operador UPDATE
Nome do operador: UPDATE Representa: A atualizao de dados nas linhas de uma tabela. Este operador representa uma operao necessria. Para melhorar os custos do plano de acesso, concentre-se em outros operadores (como varreduras ou unies) que definem o conjunto de linhas para serem atualizadas. Conceitos Relacionados: v Operador na pgina 55

Operador XISCAN
Nome do Operador: XISCAN Representa: Esta operao realizada para um nico predicado de consulta. Sua avaliao limita o conjunto de retorno qualificado de IDs de linha e IDs de ns XML, atravs da varredura por intervalos de qualquer ndice sobre dados XML associado antes de acessar a tabela de base. O uso de um ndice pode aprimorar o desempenho de uma consulta, pois o compilador determina se e como utilizar as informaes de ndice para completar a consulta. O resultado disto geralmente : v A classificao dos ns por documento e a eliminao de todas as duplicatas. v Busca de cada linha da tabela que contenha os documentos de qualificao. v Uma operao XSCAN no documento XML. Por exemplo, se desejar localizar o primeiro nome de todas as pessoas listadas na fragmento de documento XML de amostra que possuam o sobrenome Murphy, uma instruo XQuery vlida para buscar os resultados corretos seria:
db2-fn:column("EMPLOYEE.XMLCOL")/emp//name[last="Murphy"]/first

Suponha que voc j tenha criado um ndice para os dados XML em todos os sobrenomes, utilizando a instruo a seguir:
CREATE INDEX empname on EMPLOYEE(XMLCOL) GENERATE KEY USING XMLPATTERN //name/last AS SQL VARCHAR(50)

O compilador de consultas poder escolher um operador XISCAN para avaliar a consulta, que ir receber o padro: /emp//name/last, o operador = e o valor Murphy. O ndice ir ajud-lo a localizar rapidamente os ns associados ao sobrenome Murphy. O fragmento de plano resultante como sada por db2exfmt poder ter a seguinte aparncia:
Linhas RETURN ( 1) Cost E/S (entrada/sada) 6454.4 NLJOIN ( 1.53351e+06 189180 2)

74

Tutorial do Visual Explain

81 SORT

/--+-\ 6996.81 0.922477 FETCH XSCAN ( 3) ( 7) 4091.76 218.587 266 27 /---+---\ 6996.81 210000 RIDSCN TABLE: DB2XML ( 4) TX 3609.39 | 6996.81

( 5) 3609.34 81 | 6996.81 XISCAN ( 6) 3017.54 81 | 210000 XMLIN: DB2XML TX_IDX

Sugestes de desempenho: v Com o tempo, atualizaes de banco de dados podem fazer com que um ndice torne-se fragmentado, resultando em mais pgina de ndice que o necessrio. Isto pode ser corrigido eliminando e recriando o ndice ou reorganizando-o. v Quando duas ou mais tabelas esto sendo acessadas, o acesso tabela interna atravs de um ndice pode ser mais eficiente fornecendo um ndice na coluna de juno da tabela externa. v Se as estatsticas no estiverem atualizadas, atualize-as utilizando o comando RUNSTATS. Referncia Relacionada: v Operador XSCAN na pgina 75

Operador XSCAN
Nome do operador: XSCAN Representa: Este operador utilizado para navegao de fragmentos XML para avaliar expresses XPath e para extrair fragmentos de documentos, se necessrio. Este operador processa referncias de ns transmitidas por um NLJOIN (Nested-loop Join Operator). Ele no representando com uma entrada direta no plano de acesso. Por exemplo, considere a seguinte instruo XQuery:
XQUERY for $i in db2-fn:xmlcolumn("MOVIES.XMLCOL")//actor return $i

O plano de acesso para esta instruo, conforme fornecido pelo utilitrio db2exfmt, mostra um operador XSCAN processando referncias a ns de documento recuperadas por uma varredura de tabela na tabela TELIAZ.MOVIES. O operador XSCAN, neste caso, retorna referncias ao n agente encontradas na coleta TELIAZ.MOVIES.XMLCOL.
Apndice B. Lista em Ordem Alfabtica dos Operadores do Visual Explain

75

Rows RETURN ( 1) Cost I/O | 180 NLJOIN ( 2) 10137.9 1261 /-+\ 180 1 TBSCAN XSCAN ( 3) ( 4) 21.931 56.2 1 7 | 180 TABLE: TELIAZ MOVIES

Conceitos Relacionados: v Operador na pgina 55

Operador XANDOR
Nome do operador: XANDOR Representa: A tcnica ANDing de ndice sobre dados XML dos resultados de mltiplas varreduras de ndice, utilizadas para a avaliao de predicados complexos a partir de uma nica consulta. O operador permite que predicados com AND sejam aplicados em vrios ndices para reduzir acessos s tabelas subjacentes ao mnimo. Para que o operador XANDOR seja utilizado, as seguintes condies devem ser atendidas: v Apenas predicados de igualdade so utilizados. v No existem caracteres curinga no caminho de consulta de ndice. v Todos os predicados so utilizados na mesma coluna XML. Se qualquer uma dessas condies no for atendida, o operador IXAND ser utilizado. Um plano de acesso com mltiplas varreduras de ndice sobre dados XML com XANDOR, conforme mostrado pela ferramenta db2exfmt, poder ter essa aparncia:
Rows RETURN ( 1) Cost I/O | 0.00915933 NLJOIN ( 2) 985.789 98.9779 /--+--\ 2.96215 0.00309213

76

Tutorial do Visual Explain

FETCH XSCAN ( 3) ( 11) 340.113 217.976 19 27 /---+---\ 2.96215 210000 RIDSCN TABLE: DB2XML ( 4) TPCHX 332.008 18 | 2.96215 SORT ( 5) 331.957 18 | 2.96215 XANDOR ( 6) 331.784 18 +----------------+--------+-------+----------------+ 355.62 6996.81 105000 105000 XISCAN XISCAN XISCAN XISCAN ( 7) ( 8) ( 9) ( 10) 165.892 3017.54 1.6473e+06 851554 9 81 27768 14898 | | | | 210000 210000 210000 210000 XMLIN: DB2XML XMLIN: DB2XML XMLIN: DB2XML XMLIN: DB2XML TPCHX_IDX TPCHX_IDX TPCHX_IDX TPCHX_IDX

Cada operador XISCAN ir executar uma varredura de ndice e alimentar o operador XANDOR com os IDs do n XML qualificados. O operador XANDOR ir aplicar os predicados AND e OR e ir retornar os ns XML que satisfaam o padro XML para a consulta. Sugestes de desempenho: v Com o tempo, atualizaes de banco de dados podem fazer com que um ndice torne-se fragmentado, resultando em mais pgina de ndice que o necessrio. Isto pode ser corrigido eliminando e criando o ndice novamente ou reorganizando-o. v Se as estatsticas no forem atuais, atualize-as utilizando o comando RUNSTATS. v Em geral, varreduras de ndices so mais eficientes quando apenas algumas linhas so qualificadas. Para estimar o nmero de linhas qualificadas, o otimizador utiliza as estatsticas que esto disponveis para as colunas referenciadas em predicados. Se alguns valores ocorrerem com maior freqncia que outros, importante solicitar as estatsticas de distribuio utilizando a clusula WITH DISTRIBUTION com o comando RUNSTATS. Utilizando as estatsticas de distribuio no uniformes, o otimizador pode distinguir entre valores que ocorrem freqentemente e no freqentemente. Conceitos Relacionados: v Operador na pgina 55

Apndice B. Lista em Ordem Alfabtica dos Operadores do Visual Explain

77

78

Tutorial do Visual Explain

Apndice C. Conceitos do DB2


v Bancos de Dados v Esquemas v Tabelas

Bancos de Dados
Um banco de dados relacional apresenta dados como um conjunto de tabelas. Uma tabela constituda de um conjunto definido de colunas e de qualquer nmero de linhas. Os dados em cada tabela so relacionados logicamente, e os relacionamentos podem ser definidos entre as tabelas.Os dados podem ser visualizados e manipulados com base em princpios matemticos e operaes chamadas relaes (como INSERT, SELECT e UPDATE). Um banco de dados auto-descritivo; ele contm, alm de dados, uma descrio de sua prpria estrutura. Ele inclui um conjunto de tabelas de catlogos do sistema, que descrevem a estrutura lgica e fsica dos dados; um arquivo de configurao que contm os valores de parmetros associados ao banco de dados e um log de recuperao, que registra transaes contnuas e transaes que podem ser arquivadas. Bancos de dados podem ser locais ou remotos. Um banco de dados local est fisicamente localizado na estao de trabalho em uso, enquanto um banco de dados em outra mquina considerado remoto. Conceitos Relacionados: v Viso Geral do Visual Explain em Administration Guide: Implementation

Esquemas
Um esquema um identificador exclusivo utilizado para agrupar um conjunto de objetos de banco de dados (como tabelas, exibies, ndices e aliases). Isto , se voc estava criando uma tabela denominada PAYROLL, seria tedioso ter de pesquisar todos os banco de dados para descobrir se algum outro usurio j criou uma tabela com o mesmo nome. O nome de cada objeto precisa ser exclusivo apenas dentro de seu prprio esquema. A maioria dos objetos do banco de dados possuem um nome de objeto com duas partes, com a primeira parte sendo o nome do esquema e a segunda parte o nome do objeto. Quando um objeto criado, ele pode ser atribudo a um esquema especfico. Se no especificar um esquema, ele ser atribudo ao esquema padro, que geralmente o ID de usurio da pessoa que criou o objeto. Por exemplo, um usurio denominado Silva poder ter uma tabela denominada SILVA.PAYROLL. O esquema tambm se torna um objeto no banco de dados. Ele ser criado quando o primeiro objeto no esquema for criado. Um esquema pode ser de propriedade de um indivduo, e o proprietrio poder controlar o acesso aos dados e aos objetos dentro dele. Conceitos Relacionados: v Viso Geral do Visual Explain em Administration Guide: Implementation
Direitos Autorais IBM Corp. 2002, 2006

79

Tabelas
Um banco de dados relacional apresenta dados como um conjunto de tabelas. Uma tabela constituda de dados organizados logicamente em colunas e linhas (conhecidos como registros). Cada tabela possui um nome, e dentro de uma tabela, cada coluna possui um nome. Nenhuma ordenao especfica mantida entre as linhas de uma tabela, mas as linhas podem ser recuperadas em uma ordem determinada pelos valores em suas colunas. Os dados em uma tabela so relacionados logicamente. Todos os dados do banco de dados e da tabela so atribudos a reas de tabela. Conceitos Relacionados: v Viso Geral do Visual Explain em Administration Guide: Implementation

80

Tutorial do Visual Explain

Apndice D. Informaes Adicionais


v Diretrizes para Criao de ndices v Planos de Acesso Desatualizados v Utilizando Runstats

Diretrizes para Criao de ndices


Criar ndices apropriados permite que o otimizador escolha uma varredura de ndice para os casos em que seria mais eficiente que uma varredura de tabela. Algumas instrues para criar ndices incluem: v Definir chaves principais e ndices nicos sempre que se aplicarem. v Criar um ndice em qualquer coluna utilizada pela consulta para unir tabelas (predicados de juno). v Criar um ndice sobre qualquer coluna a partir da qual voc procura valores especficos em uma base regular. v Criar um ndice sobre colunas que so geralmente utilizadas em clusulas ORDER BY. v Certifique-se de que voc tenha utilizado predicados que recuperam apenas os dados necessrios. Por exemplo, assegure que o valor de seletividade para os predicados representa a parte da tabela que voc deseja que seja retornada. v Quando um ndice multicoluna criado, as primeiras colunas do ndice devem ser aquelas que so utilizadas mais freqentemente pelos predicados em sua consulta. v Certifique-se de que o disco e o overhead de manuteno de atualizao que um ndice apresenta no seja muito alto. Conceitos Relacionados: v Requisitos de Espao para ndices em Administration Guide: Planning v Viso Geral do Visual Explain em Administration Guide: Implementation Tarefas Relacionadas: v Estimando Requisitos de Espao para Tabelas e ndices em Administration Guide: Implementation

Planos de Acesso Desatualizados


Sintoma A linha STATS_TIME indica que as estatsticas no esto atualizadas. Causa possvel O otimizador utilizou valores padro. (Esses valores padro so exibidos com a palavra-chave padro.) Esta situao pode resultar em um plano de acesso desatualizado. Ao Recomenda-se que voc utilize o comando runstats para atualizar as estatsticas; em seguida vincule o pacote novamente.

Conceitos Relacionados: v Plano de Acesso na pgina 49


Direitos Autorais IBM Corp. 2002, 2006

81

v Viso Geral do Visual Explain em Administration Guide: Implementation

Utilizando RUNSTATS
O otimizador utiliza as tabelas de catlogo do banco de dados para obter informaes sobre o banco de dados, a quantidade de dados existente nele e outras caractersticas e utiliza estas informaes para escolher a melhor maneira de acessar os dados. Se as estatsticas atuais no estiverem disponveis, o otimizador poder escolher um plano de acesso ineficiente com base em estatsticas padro imprecisas. altamente recomendado que voc utilize o comando RUNSTATS para coletar as estatsticas atuais sobre tabelas e ndices, especialmente se tiver ocorrido alguma atividade de atualizao significativa ou caso novos ndices tenham sido criados desde a ltima vez em que o comando RUNSTATS foi executado. Isto fornece ao otimizador as informaes mais precisas com as quais voc poder determinar o melhor plano de acesso. Certifique-se de utilizar RUNSTATS aps atualizar suas tabelas; caso contrrio, a tabela poder parecer vazia para o otimizador. Este problema evidente se a cardinalidade na janela Detalhes do operador for igual a zero. Neste caso, conclua suas atualizaes de tabela, execute o comando RUNSTATS novamente e crie as capturas instantneas de explicao novamente para as tabelas afetadas. Nota: v Utilize RUNSTATS em todas as tabelas e ndices que possam ser acessadas por uma consulta. v O quantil e as estatsticas de valor freqentes determinam quando os dados so distribudos de maneira desigual. Para atualizar esses valores, utilize RUNSTATS em uma tabela com a clusula WITH DISTRIBUTION. v Alm das estatsticas, outros fatores (como a classificao de linhas de qualificao, tamanho de tabela e tamanho do conjunto de buffers) podem influenciar como um plano de acesso selecionado. v Os aplicativos devem ser ligados novamente (e suas instrues opcionalmente re-explicadas) aps executar o comando RUNSTATS ou alterar os parmetros de configurao. O comando RUNSTATS (que pode ser digitado a partir do prompt de CLP do DB2) pode fornecer diferentes nveis de estatsticas, conforme mostrado na seguinte sintaxe: Estatsticas Bsicas Tabela: RUNSTATS ON TABLE tablename ndice: RUNSTATS ON TABLE tablename FOR INDEXES ALL Tabelas e ndices: RUNSTATS ON TABLE tablename AND INDEXES ALL Estatsticas Aperfeioadas Tabela: RUNSTATS ON TABLE tablename WITH DISTRIBUTION

82

Tutorial do Visual Explain

ndice: RUNSTATS ON TABLE tablename FOR DETAILED INDEXES ALL Tabelas e ndices: RUNSTATS ON TABLE tablename WITH DISTRIBUTION AND DETAILED INDEXES ALL Nota: Em cada um dos comandos acima, o nome de tabela deve estar completo, com o nome do esquema. Conceitos Relacionados: v Viso Geral do Visual Explain em Administration Guide: Implementation Referncia Relacionada: v Comando RUNSTATS em Command Reference

Apndice D. Informaes Adicionais

83

84

Tutorial do Visual Explain

Apndice E. Avisos
possvel que a IBM no oferea os produtos, servios ou recursos discutidos nesta publicao em outros pases. Consulte um representante IBM local para obter informaes sobre produtos e servios disponveis atualmente em sua rea. Qualquer referncia a produtos, programas ou servios IBM no significa que apenas produtos, programas ou servios IBM possam ser utilizados. Qualquer produto, programa ou servio funcionalmente equivalente, que no infrinja nenhum direito de propriedade intelectual da IBM (ou quaisquer outros direitos da IBM), poder ser utilizado em substituio a este produto, programa ou servio. Entretanto a avaliao e verificao da operao de qualquer produto, programa ou servio no-IBM so de responsabilidade do Cliente. A IBM pode ter patentes ou solicitaes de patentes pendentes relativas a assuntos tratados nesta publicao. O fornecimento desta publicao no garante ao Cliente nenhum direito sobre tais patentes. Pedidos de licena devem ser enviados, por escrito, para: Gerncia de Relaes Comerciais e Industriais da IBM Brasil Av. Pasteur 138-146 Botafogo Rio de Janeiro - RJ CEP 22290-240 Para pedidos de licena relacionados a informaes de DBCS (Conjunto de Caracteres de Byte Duplo), entre em contato com o Departamento de Propriedade Intelectual da IBM em seu pas ou envie pedidos de licena, por escrito, para: IBM World Trade Asia Corporation Licensing 2-31 Roppongi 3-chome, Minato-ku Tokyo 106, Japan O pargrafo a seguir no se aplica a nenhum pas em que tais disposies no estejam de acordo com a legislao local: A INTERNATIONAL BUSINESS MACHINES CORPORATION FORNECE ESTA PUBLICAO NO ESTADO EM QUE SE ENCONTRA SEM GARANTIA DE NENHUM TIPO, SEJA EXPRESSA OU IMPLCITA, INCLUINDO, MAS NO SE LIMITANDO S GARANTIAS IMPLCITAS DE NO-VIOLAO, MERCADO OU ADEQUAO A UM DETERMINADO PROPSITO. Alguns pases no permitem a excluso de garantias expressas ou implcitas em certas transaes; portanto, esta disposio pode no se aplicar ao Cliente. Esta publicao pode incluir imprecises tcnicas ou erros tipogrficos. Periodicamente, so feitas alteraes nas informaes aqui contidas; tais alteraes sero incorporadas em futuras edies desta publicao. A IBM pode, a qualquer momento, aperfeioar e/ou alterar os produtos e/ou programas descritos nesta publicao, sem aviso prvio. Referncias nestas informaes a Web sites no-IBM so fornecidas apenas por convenincia e no representam de forma alguma um endosso a estes Web sites. Os materiais contidos nesses Web sites no fazem parte dos materiais desse produto IBM e a utilizao desses Web sites de inteira responsabilidade do Cliente.
Direitos Autorais IBM Corp. 2002, 2006

85

A IBM pode utilizar ou distribuir as informaes fornecidas da forma que julgar apropriada sem incorrer em qualquer obrigao para com o Cliente. Licenciados deste programa que desejam obter informaes sobre este assunto com objetivo de permitir: (i) a troca de informaes entre programas criados independentemente e outros programas (incluindo este), e (ii) a utilizao mtua das informaes trocadas, devem entrar em contato com: Gerncia de Relaes Comerciais e Industriais da IBM Brasil Av. Pasteur, 138-146 Botafogo Rio de Janeiro, RJ CEP: 22290-240 Tais informaes podem estar disponveis, sujeitas a termos e condies apropriadas, incluindo em alguns casos o pagamento de uma taxa. O programa licenciado descrito nesta publicao e todo o material licenciado disponvel so fornecidos pela IBM sob os termos do Contrato com o Cliente IBM, do Contrato de Licena de Programa Internacional IBM ou de qualquer outro contrato equivalente. Todos os dados de desempenho aqui contidos foram determinados em um ambiente controlado. Portanto, os resultados obtidos em outros ambientes operacionais podem variar significativamente. Algumas medidas podem ter sido tomadas em sistemas de nvel de desenvolvimento e no h garantia de que tais medidas sero iguais em sistemas geralmente disponveis. Alm disso, algumas medidas podem ter sido estimadas por extrapolao. Os resultados reais podem variar. Os usurios deste documento devem verificar os dados aplicveis para o seu ambiente especfico. As informaes relativas a produtos no-IBM foram obtidas junto aos fornecedores dos produtos, de seus anncios publicados ou de outras fontes disponveis publicamente. A IBM no testou estes produtos e no pode confirmar a preciso de seu desempenho, compatibilidade nem qualquer outra reivindicao relacionada a produtos no-IBM. Dvidas sobre a capacidade de produtos no-IBM devem ser encaminhadas diretamente a seus fornecedores. Todas as declaraes relacionadas aos objetivos e intenes futuras da IBM esto sujeitas a alteraes ou cancelamento sem aviso prvio e representam apenas metas e objetivos. Estas informaes podem conter exemplos de dados e relatrios utilizados nas operaes dirias de negcios. Para ilustr-lo da forma mais completa possvel, os exemplos podem incluir nomes de indivduos, empresas, marcas e produtos. Todos os nomes so fictcios e qualquer semelhana com nomes e endereos utilizados por uma empresa real mera coincidncia. LICENA DE COPYRIGHT: Estas informaes podem conter programas aplicativos de exemplo na linguagem fonte, que ilustram as tcnicas de programao em diversas plataformas operacionais. O Cliente pode copiar, modificar e distribuir estes programas de exemplo sem a necessidade de pagar IBM, com objetivos de desenvolvimento, utilizao, marketing ou distribuio de programas aplicativos em conformidade com a interface de programao de aplicativo para a plataforma operacional para a qual os programas de exemplo so criados. Estes exemplos no foram testados

86

Tutorial do Visual Explain

completamente em todas as condies. Portanto, a IBM no pode garantir ou implicar a confiabilidade, manuteno ou funo destes programas. Cada cpia ou parte deste exemplo de programa ou qualquer trabalho derivado deve incluir um aviso de copyright com os dizeres: (nome da sua empresa) (ano). Partes deste cdigo so derivadas dos Programas de Exemplo da IBM Corp. Direitos Autorais IBM Corp. _digite o ano ou anos_. Todos os direitos reservados.

Marcas Comerciais
Os nomes de empresas, produtos ou servios identificados nos documentos da biblioteca de documentaes do DB2 Verso 9 podem ser marcas registradas ou marcas de servios da International Business Machines Corporation ou de terceiros. As informaes sobre marcas registradas da IBM Corporation nos Estados Unidos e/ou em outros pases esto localizadas no endereo http://www.ibm.com/legal/ copytrade.shtml. Os termos a seguir so marcas ou marcas registradas de terceiros e foram utilizados em pelo menos um dos documentos da biblioteca de documentao da DB2: Microsoft, Windows, Windows NT e o logotipo Windows so marcas registradas da Microsoft Corporation nos Estados Unidos e/ou em outros pases. Intel, Itanium, Pentium e Xeon so marcas registradas da Intel Corporation nos Estados Unidos e/ou em outros pases. Java e todas as marcas e baseadas em Java so marcas registradas da Sun Microsystems, Inc. nos Estados Unidos e/ou em outros pases. UNIX uma marca registrada do The Open Group nos Estados Unidos e/ou em outros pases. Linux uma marca registrada de Linus Torvalds nos Estados Unidos e/ou em outros pases. Outros nomes de empresas, produtos ou servios podem ser marcas registradas ou marcas de servio de terceiros.

Apndice E. Avisos

87

88

Tutorial do Visual Explain

ndice Remissivo A
reas de tabela gerenciadas pelo sistema definio 60 armazenamento em cluster definio 51 avisos 85 grfico de plano de acesso (continuao) para obter uma lista de instrues SQL ou XQuery explicadas anteriormente 9 operador IXSCAN definio 67 operador MSJOIN definio 68 operador NLJOIN definio 69 operador PIPE definio 69 operador RETURN definio 69 operador RIDSCN definio 70 operador RPD definio 70 operador SHIP definio 70 operador SORT definio 71 operador TBSCAN definio 71 operador TEMP definio 72 operador TQUEUE definio 73 operador UNION definio 73 operador UNIQUE definio 73 operador UPDATE definio 74 operador XANDOR definio 76 operador XISCAN definio 74 operador XSCAN definio 75 operadores CMPEXP 63 definio 55 DELETE 64 EISCAN 64 FETCH 64 FILTER 65 GENROW 65 GRPBY 65 HSJOIN 66 INSERT 67 IXAND 67 IXSCAN 67 MSJOIN 68 NLJOIN 69 PIPE 69 RETURN 69 RIDSCN 70 RPD 70 SHIP 70 SORT 71 TBSCAN 71 TEMP 72 TQUEUE 73 UNION 73

I
ndices criao 81 ndices em colunas da tabela criando em um ambiente de banco de dados particionado 45 instruo CREATE INDEX viso geral 81 instrues explicveis definio 54 instrues SQL explicadas definio 54 instrues SQL ou XQuery dinmicas definio 53 instrues SQL ou XQuery estticas definio 60 instrues XQuery explicadas definio 54

B
Bancos de dados definio 79 bloqueio de linha consulte bloqueio do cursor bloqueio do cursor definio 52 52

C
captura instantnea da explicao definio 53 classe de otimizao de consulta definio 58 comando vesampl.ddl 4 comandos EXPLAIN.DDL 3 vesampl.ddl 4 contineres definio 52 criando ndices 81 custo definio 52

J
junes estrela definio 59

N
n do grfico do plano de acesso 51

E
entrando em contato com a IBM 91 espaos de tabela gerenciados por banco de dados definio 53 espaos de tabelas definio 61 esquemas definio 79 EXPLAIN.DDL comando 3 explicar capturas instantneas para instrues SQL ou XQuery dinmicas 5 para instrues SQL ou XQuery estticas 6 para tutorial do Visual Explain 4

O
opo explsnap 6 operador CMPEXP description 63 operador DELETE definio 64 operador EISCAN definio 64 operador FETCH definio 64 operador FILTER definio 65 operador GENROW definio 65 operador GRPBY definio 65 operador HSJOIN definio 66 operador INSERT definio 67 operador IXAND definio 67

G
grfico de plano de acesso 50 alterando a aparncia 13 ampliando 10 lendo os smbolos 9 obtendo detalhes adicionais

11

Direitos Autorais IBM Corp. 2002, 2006

89

operadores (continuao) UNIQUE 73 UPDATE 74 XANDOR 76 XISCAN 74 XSCAN 75 operando definio 55 otimizador definio 56

timerons sobre 61 tutoriais Visual Explain

V
Visual Explain definio 62 grfico de plano de acesso planos de acesso 49 tutorial 1 50

P
pacotes definio 57 plano de acesso aprimorando em um ambiente de banco de dados de partio nica 15 em um ambiente de banco de dados particionado 33 coletando estatsticas atuais em um ambiente de banco de dados de partio nica 19 em um ambiente de banco de dados particionado 37 consultas sem ndices e sem estatsticas em um ambiente de banco de dados de partio nica 16 em um ambiente de banco de dados particionado 34 criando ndices adicionais em um ambiente de banco de dados de partio nica 28 em um ambiente de banco de dados particionado 45 criando ndices em colunas utilizadas para unir tabelas em um ambiente de banco de dados de partio nica 23 em um ambiente de banco de dados particionado 41 planos de acesso desatualizado 81 viso geral 49 predicado definio 57

R
runstats USING 82

S
seletividade de predicados definio 59

T
tabelas definio 80 tabelas de explicao criando 3

90

Tutorial do Visual Explain

Entrando em Contato com a IBM


Para entrar em contato com a IBM em seu pas ou regio, verifique o Diretrio Mundial de Contatos da IBM, no endereo http://www.ibm.com/planetwide Para saber mais sobre os produtos DB2, acesse http://www.ibm.com/software/data/db2/.

Direitos Autorais IBM Corp. 2002, 2006

91

92

Tutorial do Visual Explain

Impresso em Brazil

S517-8703-00