Escolar Documentos
Profissional Documentos
Cultura Documentos
DB2 Verso 9
para Linux e Windows
S517-8703-00
DB2
DB2 Verso 9
para Linux e Windows
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
16
19
23
28
. 34
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
81
. 81 . 81 . 82
Apndice E. Avisos . . . . . . . . . 85
Marcas Comerciais . . . . . . . . . . . . 87
iv
Essas atividades relacionadas a desempenho correspondem quelas mostradas na seguinte ilustrao. (Linhas quebradas indicam aes requeridas para o Visual Explain).
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.
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.
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
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
v SQL ou XQuery Esttica na pgina 60 Tarefas Relacionadas: v Criando Tabelas de Explicao na pgina 3
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.
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
10
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
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
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
13
14
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
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
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).
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
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
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).
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
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.
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
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.
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
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
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
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.
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
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
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.
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
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.
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
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).
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
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.
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
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.
43
A janela Detalhes do Operador para o operador FETCH(15) mostra as colunas sendo utilizadas nesta operao.
44
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.
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
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.
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
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:
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
50
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
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
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
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
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.
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
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:
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
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;
58
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.
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
60
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
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
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
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
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
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
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
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
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.
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
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
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
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
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
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
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
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
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
77
78
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
81
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
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
83
84
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
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
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
89
operadores (continuao) UNIQUE 73 UPDATE 74 XANDOR 76 XISCAN 74 XSCAN 75 operando definio 55 otimizador definio 56
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
91
92
Impresso em Brazil
S517-8703-00