Extraindo Metadados de SGBDs



Documentos relacionados
SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Banco de dados. Linguagens de Banco de Dados II. Wedson Quintanilha da Silva -

Programação SQL. Introdução

Um objeto de estatística contém informações de distribuição de valores de uma ou mais colunas de uma tabela ou view indexada

Roteiro 9 - SQL Básico: chave estrangeira, operadores de comparação e operadores booleanos

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

Regras de Integridade. Profa. Késsia Marchi

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

ISSN Monografias em Ciência da Computação n 42/08. Extraindo Metadados para a Captura da Carga de Trabalho e Planos de Execução de SGBDs

Noções de. Microsoft SQL Server. Microsoft SQL Server

Prof. Carlos Majer Aplicações Corporativas UNICID

Linguagem SQL (Parte I)

MYSQL: TIPOS DE DADOS. Gilvan Vieira Moura

A linguagem SQL

SQL (Structured Query Language)

Linguagem SQL Parte I

UNIVERSIDADE FEDERAL DE SANTA MARIA - UFSM COLÉGIO AGRÍCOLA DE FREDERICO WESTPHALEN BANCO DE DADOS II

SQL (Structured Query Language)

SQL (Structured Query Language)

AULA 2 INTERAÇÃO COM O BANCO DE DADOS

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

PHP INTEGRAÇÃO COM MYSQL PARTE 1

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

SQL. Autor: Renata Viegas

Manter estatísticas atualizadas é uma das regras de ouro na busca por performance.

Banco de dados 1. Linguagem SQL DDL e DML. Professor: Victor Hugo L. Lopes

APOSTILA BANCO DE DADOS INTRODUÇÃO A LINGUAGEM SQL

BANCO DE DADOS: SQL. Edson Anibal de Macedo Reis Batista. 27 de janeiro de 2010

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

SQL (STRUCTUREDQUERY LANGUAGE)

Linguagem SQL Sub-linguagem DDL

PostgreSQL. André Luiz Fortunato da Silva Analista de Sistemas CIRP / USP alf@cirp.usp.br

Linguagem de Consulta - SQL

Capitulo 2. Prof.º Espc. Fábio Margarito Martins de Barros - Tecnologia de banco de dados

Usando PostgreSQL na Regra de Negócio de um ERP. Fabiano Machado Dias Eduardo Wolak

PROGRAMAÇÃO EM BANCO DADOS Stored Procedure e Trigger

BANCO DE DADOS BANCO DE DADOS. Prof. Patrícia Lucas 3º Trimestre

Curso PHP Aula 08. Bruno Falcão

Structured Query Language (SQL)

Triggers em PostgreSQL. Linguagem de Programação de Banco de Dados. Triggers em PostgreSQL. Triggers em PostgreSQL

Comandos DDL. id_modulo = id_m odulo

Introdução à Engenharia da Computação. Banco de Dados Professor Machado

CREATE TABLE AUTOR ( cod_autor int not null primary key, nome_autor varchar (60) )

INTRODUÇÃO BANCO DE DADOS(MYSQL) E PHP

INTRODUÇÃO BANCO DE DADOS. Prof. Msc. Hélio Esperidião

BANCO DE DADOS II Prof. Ricardo Rodrigues Barcelar

MySQL. Prof. César Melo. com a ajuda de vários

Banco de Dados. Módulo 7 - Modelo Relacional. Definição do Esquema Relacional em SQL. modulo07.prz 1 10/09/01

SQL. Definição do Esquema da Base de Dados. Cristina C. Vieira Departamento de Engenharia Eletrónica e Informática

Sumário. Capítulo 2 Conceitos Importantes Tópicos Relevantes Instance Base de Dados Conclusão... 37


1. Domínio dos Atributos

Banco de Dados I Módulo V: Indexação em Banco de Dados. (Aulas 4) Clodis Boscarioli

Structured Query Language (SQL) Ambiente Simplificado de um SGBD

Comandos de Manipulação

COORDENAÇÃO DE SISTEMAS (CODES) MAIO/2013

SQL SQL BANCO DE DADOS 2. Componentes do SQL (1) Componentes do SQL (2) DDL Criação de banco de dados. Padrões de SQL

O que são Bancos de Dados?

Auditoria de sistemas Deixe que seu banco de dados faça o trabalho por você

Roteiro. Modelo de Dados Relacional. Processo de Projeto de Banco de Dados. BCC321 - Banco de Dados I. Ementa. Posicionamento.

Introdução ao SQL. O que é SQL?

Consistem num conjunto de apontadores para instâncias especificas de cada relação.

SQL (STRUCTUREDQUERY LANGUAGE)

Operação de União JOIN

AULA 6 INTEGRIDADOS DOS DADOS - CRIANDO RESTRIÇÕES

Programação WEB II. PHP e Banco de Dados. progweb2@thiagomiranda.net. Thiago Miranda dos Santos Souza

Introdução à Banco de Dados. Nathalia Sautchuk Patrício

BANCO DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Administração de Banco de Dados

Especialização em Engenharia e Administração de Banco de Dados SISTEMA DE GERENCIAMENTO DE BANCO DE DADOS I

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

SQL Structured Query Language. SQL Linguagem de Definição de Dados. SQL Structured Query Language. SQL Structured Query Language

Listando itens em ComboBox e gravando os dados no Banco de Dados MySQL.

Persistência de Dados

PROGRAMAÇÃO EM BANCO DADOS Store Procedure e Trigger

Modelo Cliente/Servidor Por HIARLY ALVES

Bases de Dados 2012/2013 Restrições de Integridade em SQL. Helena Galhardas 2012 IST. Bibliografia

Laboratório de Banco de Dados II

Projeto de Banco de Dados: Empresa X

Modelagem de banco de dados com MySQL Workbench

SQL - Banco de Dados. Disciplina: Banco de Dados. Professor: José Antônio. José Antônio - CEFET-RN 23/09/2015

SQL. Histórico BANCO DE DADOS. Conceito. Padrões de SQL (1) Componentes do SQL (1) Padrões de SQL (2) (DDL: CREATE TABLE, CONSTRAINTS)

PROCEDIMENTOS ARMAZENADOS (Stored Procedures)

Disciplina: Unidade V: Prof.: Período:

TRANSAÇÕES. Considerando que estes comandos fazem parte de uma TRANSAÇÃO (veremos como indicar isso):

SQL. Structured Query Language

Stored Procedures. Renata Viegas

Estatística, monitoramento e diagnóstico através do catálogo do PostgreSQL

Prof.: Clayton Maciel Costa

Triggers no PostgreSQL

8. Outros tipos de Transação (Modo de Transação de Autoconfirmação e Modo Implícito)

BANCO DE DADOS CONCEITOS BÁSICOS

Banco de Dados. Arquitetura e Terminologia. Prof. Walteno Martins Parreira Jr waltenomartins@yahoo.

(1,n) venda. (1,1) realizacao. cliente. (0,n) (1,1) contem. produto. Laboratório de Banco de Dados Exercicios

PL/pgSQL por Diversão e Lucro

BASES DE DADOS I LTSI/2. Universidade da Beira Interior, Departamento de Informática Hugo Pedro Proença, 2010/2011

Crash recovery é similar ao instance recovery, onde o primeiro referencia ambientes de instância exclusiva e o segundo ambientes parallel server.

MANIPULANDO BANCO DE DADOS NO POSTGRESQL SEM FAZER USO DE COMANDOS SQL

Banco de Dados. StructuredQuery Language- SQL. Prof. Walteno Martins Parreira Jr

Transcrição:

ISSN 0103-9741 Monografias em Ciência da Computação n XX/07 Extraindo Metadados de SGBDs José Maria Monteiro Sérgio Lifschitz Ângelo Brayner Departamento de Informática PNTIFÍCIA UNIVERSIDADE CATÓLICA D RI DE JANEIR RUA MARQUÊS DE SÃ VICENTE, 225 - CEP 22453-900 RI DE JANEIR - BRASIL

Monografias em Ciência da Computação, No. XX/07 ISSN: 0103-9741 Editor: Prof. Carlos José Pereira de Lucena Dezembro, 2007 Extraindo Metadados de SGBDs * José Maria Monteiro, Sérgio Lifschitz, Ângelo Brayner 1 1 Mestrado em Informática Aplicada Universidade de Fortaleza (UNIFR) monteiro@inf.puc-rio.br, sergio@inf.puc-rio.br, brayner@unifor.br!" # $ % &!" &!" '()*+,-./ *--0" '&" &./1 &!" + 2 34 567 88 9: ; <:7 34< 5 = >!&(2 $% >!&?< >!& '()*+,-./ *--0 72 2< 346<8 35 '" >!& 79 & >!& @6 >!&

In charge of publications' Rosane Teles Lins Castilho Assessoria de Biblioteca, Documentação e Informação PUC-Rio Departamento de Informática Rua Marquês de São Vicente, 225 - Gávea 22453-900 Rio de Janeiro RJ Brasil Tel. +55 21 3114-1516 Fax: +55 21 3114-1530 E-mail: bib-di@inf.puc-rio.br Web site: http://bib-di.inf.puc-rio.br/techreports/ ii

1 Introdução + 2 34 56( 34 =7 8 8 @ < 35A 2 9$ <% B & ; < 5 $&!7 %; 35$%$9B >!&$ >!&% 6 34% 7 &!7 5 8 8 6 >!& 358 &8 >!&&!7 35( 34&!75 = >!&?./ $./%C C B < ==8 89 B ( >!& 2 2 <;2 ;28 /34./; 2 ( 2 ; 34./ 8 (D 7 34 &!7 ; 58 34./& 6 8 B >!&2;993 @ 2 5 '8 ;34 34 8 34 D E F**G 7;H: 34B$II% 5= 5 2 7 34 ;H 5 ; 22 8 35 ; 35 1

Entretanto, associar medidas de desempenho a uma combinação de tarefas requer cuidado. A maneira correta de tirar a média dos números é tomar o tempo total para conclusão da carga de trabalho no lugar da produtividade média para cada tipo de transação. Portanto, uma única tarefa não é suficiente para quantificar o desempenho do sistema. Este deve ser medido por um conjunto selecionado de tarefas chamado nível de referência de desempenho, mais conhecido como benchmark [22].? ; >!& ;&!7 < 86 >!&(28 $ % >!&@ 34$II%5 < 2 7 26 34./ 35 C 6 6 35 6C 8 $% (2 $% >!&& &!7C 8./ +,-2 352 2./ *--072 $ &!7% < $<8 % ===88 9 Este trabalho discute como extrair os metadados dos principais SGBDs comerciais: Postgres, racle 10g e SQL Server 2005. As informações capturadas podem ser utilizadas pelos DBAs para a analise da performance dos SGBDs e para descobrir problemas de desempenho. Além disso, os metadados recuperados ajudam a guiar o DBA na seleção das possíveis soluções para os problemas encontrados. restante deste trabalho está organizado da seguinte maneira: a seção 2 discute o conceito e a utilização dos metadados, na seção 3 mostramos como extrair os metadados do Postgres 8.2, a seção 4 ilustra como recuperar os metadados do racle 10g, na seção 5 discutimos a extração dos metadados no SQL Server 2005 e a seção 6 conclui este trabalho. 2 Metadados s metadados são frequentemente descritos como dados sobre dados. u seja, não são mais do que informações adicionais (além da informação espacial e tabular) que é necessária para que os dados se tornem úteis. Por outras palavras, são um conjunto de características sobre os dados que não estão normalmente incluídas nos dados propriamente ditos. 2

A partir desta definição pode então concluir-se os usos mais significativos dos metadados. São eles: - Adicionar contexto e conhecimento sobre os dados acessados pelos usuários. - Esconder (abstrair) a complexidade dos dados dos usuários que não necessitam conhecer os detalhes técnicos dos dados. - Descobrir os tipos dos dados, os relacionamentos entre os dados, o momento em que um dato foi lido ou atualizado pela última vez. etc. - Possibilitar às aplicações executarem checagem de tipo, validação, formatação, - Possibilitar a análise do desempenho do SGBD. Alguns exemplos de metadados incluem: modelos de dados, esquemas, tabelas, colunas, índices, últimas cláusulas SQL executadas, planos de execução das consultas executadas, etc. 3 Postgresql +2 9$ >&!+J% & : 35 D=!+ 8 ; 6 F,0G +2 =; 5./*--K 2 ' E >$% L4" < :" 5 72 8 ' &E M34 J$% @N /( &63! &$ % ;83 ;; = 8 = 7 < 6;;9 : 3

! +8 2 < ; @ 9 3462 34 34 >!&?8 2 9 47 35 4 " # 3435 26 2 2 5 $II% $4% 6;H:4$I34I% 34353434 8 34 34535 ;< :9 34 89 8 346 ;3 9 9 ; 34 356 26 34 8 69 3 $! 4

?MK, < 8 # % &! '(! 7 4$ % 7 4 A $ % ;H <@ 5 ' 5

" ') # N!; J 34B @6 < D8 L4 $ '( * +, & +62 = 34 7 6 2 = 35 D <; 6 A 35 34 5 2B 35 ;! ; = 35+ B "" ;6 9 P8 B " " "" "" ; 35;2 ; 35& 6666 6

7 6 2 8 ;! #$%&'%%( ' Q QJD?"@ 7 Q Q " QR QR QR R Q.S R R R R R - %. /). 0 '( & @5642 6 6 6 4<<3469 7 <6 2 ; 34 5 5 < E 35 5 2 = = 8 < "" $0-- 5%( 34 5A + 2;; 6 = <B 434622 35(6 5 ; 352 6 5 ; < 8 A 6 C 7

? 5 &35 D & 8 ; 3 7 ; 56; B 8 72 ; 8 5 9 8 8 $& ; ;2 8 35% D C 34 34 $ 9 34 % (C ' ;H 6E E <6 + ; ; 5 + ; ; 5 8 8

(6 6 ; < 6 C 6C $( ; 6 % + ; ; 5 6 + ; ; 5 68 pg_statio_all_tables Para cada tabela do banco de dados corrente, o número total de blocos de disco da tabela lidos, o número de acertos no buffer, o número de blocos de disco lidos e acertos no buffer para todos os índices da tabela, o número de blocos de disco lidos e acertos no buffer para a tabela auxiliar TAST da tabela (se houver), e o número de blocos de disco lidos e acertos no buffer para o índice da tabela TAST. pg_statio_sys_tables mesmo que pg_statio_all_tables, exceto que somente são mostradas as tabelas do sistema. pg_statio_user_tables mesmo que pg_statio_all_tables, exceto que somente são mostradas as tabelas de usuário. pg_statio_all_indexes Para cada índice do banco de dados corrente, o número de blocos de disco lidos e de acertos no buffer para o índice. pg_statio_sys_indexes mesmo que pg_statio_all_indexes, exceto que somente são mostrados os índices das tabelas do sistema. pg_statio_user_indexes mesmo que pg_statio_all_indexes, exceto que somente são mostrados os índices das tabelas de usuário. pg_statio_all_sequences Para cada objeto de seqüência do banco de dados corrente, o número de blocos de disco lidos e de acertos no buffer para a seqüência. pg_statio_sys_sequences mesmo que pg_statio_all_sequences, exceto que somente são mostradas as seqüências do sistema (Atualmente não está definida nenhuma seqüência do sistema e, portanto, esta visão está sempre vazia). pg_statio_user_sequences mesmo que pg_statio_all_sequences, exceto que somente são mostradas as seqüências de usuário. $ '( & * 9

1 #/( 2 & ( 6; < 349A6<4 5@ 34 5 KT 7 34 +&;; 2=7346 +& 6 $&; 34 6%7 34 C & ; C Função Tipo Retornado Descrição pg_stat_get_db_numbackends(oid) integer Número de processos servidor ativos conectados ao banco de dados pg_stat_get_db_xact_commit(oid) bigint Transações efetivadas no banco de dados pg_stat_get_db_xact_rollback(oid) bigint Transações canceladas no banco de dados pg_stat_get_db_blocks_fetched(oid) bigint Número de solicitações de busca de blocos de disco para o banco de dados pg_stat_get_db_blocks_hit(oid) bigint Número de solicitações de busca de blocos de disco para o banco de dados encontradas no cache pg_stat_get_numscans(oid) bigint Número de varreduras seqüenciais realizadas quando o argumento é uma tabela, ou o número de varreduras de índice quando o argumento é um índice pg_stat_get_tuples_returned(oid) bigint Número de linhas lidas por varreduras seqüenciais quando o argumento é uma tabela, ou o número de linhas do índice lidas quando o argumento é um índice pg_stat_get_tuples_fetched(oid) bigint Número de linhas válidas (não expiradas) 10

da tabela buscadas por varreduras seqüenciais quando o argumento é uma tabela, ou buscadas por varreduras de índice, utilizando este índice, quando o argumento é um índice pg_stat_get_tuples_inserted(oid) bigint Número de linhas inseridas na tabela pg_stat_get_tuples_updated(oid) bigint Número de linhas atualizadas na tabela pg_stat_get_tuples_deleted(oid) bigint Número de linhas excluídas da tabela pg_stat_get_blocks_fetched(oid) bigint Número de solicitações de busca de bloco de disco para a tabela ou índice pg_stat_get_blocks_hit(oid) bigint Número de solicitações de busca de bloco de disco encontradas no cache para a tabela ou o índice pg_stat_get_backend_idset() conjunto de integer Conjunto de IDs de processos servidor ativos no momento (de 1 ao número de processos servidor ativos). Veja o exemplo de utilização no texto. pg_backend_pid() integer ID de processo do processo servidor conectado à sessão corrente pg_stat_get_backend_pid(integer) integer ID de processo do processo servidor especificado pg_stat_get_backend_dbid(integer) oid ID de banco de dados do processo servidor especificado pg_stat_get_backend_userid(integer) oid ID de usuário do processo servidor especificado pg_stat_get_backend_activity(integer) text Comando ativo do processo servidor especificado (nulo se o usuário corrente não 11

pg_stat_get_backend_activity_start(in teger) timestamp with time zone for um superusuário nem o mesmo usuário da sessão sendo consultada, ou se stats_command_string não estiver habilitado) A hora em que o comando executando no momento, no processo servidor especificado, começou (nulo se o usuário corrente não for um superusuário nem o mesmo usuário da sessão sendo consultada, ou se stats_command_string não estiver habilitado) pg_stat_reset() boolean Reinicia todas as estatísticas atualmente coletadas $ + % #/( 2 & * 3 &4 $! * &9 8 $ % 7 35./ '=8./35S+ C 34./$9C <;./ % 7 4634 A; < 12

" ') 5/) D & 8 ; 3 7; 56;B 872 ;8 5 9 8 8 $&; ;2 8 35% (6 6;< 6C 6C $( ; 6 % $ 0 % '( & 67 13

" #/) $% 5/) & $% $85 8 85 5 % $% 9& $,C % $ 1 % #/( 2 & 67 7= 8 434 K0KU ;:34 34 8 > 35 """ " )*+ ; (&$35% +.K*8./<./;8 35 @/@$%7 $%7 ; MJ+"$ @/@$%7 %7 E - % 8 (35 8./ V',-%$W34./X 14

&;<:" W? JDZ[+./@\@D7&7&DJ7?@7+?@\[+&+ >!& - %, &4/) 9 &4 :./( & * ;8 2 8 34 6 'C $8% 35 6 2 6 6$8! W % ( 348<35 4 &4 5 5 9 B '."(- 5 2."%$',' 7 35 9 2 5 ' 7";;9 >!&; ; 9 6 ;H: 4 7 35 KY 15

$8. 5/)? 65 T 35 8$!/] ^% @2 < 97< L7DD" 7?7/_^@ &// J@7@?&@\ T?C @2 <9 7< L7DD" 7?7/_^@ &// J@7@?&@\ L $6 % 6`J@7@?&@\ 52 &J+(?&@\ + L7DD" ; ;5 6 L$98 % 8 $ 3 8 8 ) =><!! 75."%$',' 34C6 @ 34 ; $% 635 16

$8. 5/)? ; ;2 6? ;6? 6? 3 6$?D//5 % &356$ 356% $ 9 8 8 ) =>:"5&;&! ( 34 5$ % 88./;<."(- (>?&@\@ $; 2."-'*9' C C 6 7./5;' @/@J@/D(/@ 7?D"/?#7 MJ+" (>/7 1#@J@J@/?7"@?$ @/@7!/@?7"@ MJ+"(>7!/@ 1#@J@ #@"7?7"@/]@aIW #@"7WIa 7?&7!/@?7"@/]@aIW?+"@7!@/7WIa %E - + *? * 8 @/@J@/(7>@ 7?D"(7>?7 MJ+" (>/7 1#@J@J@/?7"@?$ @/@7!/@?7"@ MJ+"(>7!/@ 1#@J@ #@"7?7"@/]@aIW #@"7WIa 7?&7!/@?7"@/]@aIW?+"@7!@/7WIa %E - 0 *? * @8 A 17

@/@$ @/@7"?7"@ MJ+" (>7" 1#@J@(>7" +&R(>/7 J@/7" - 1 *? %7?+"@ MJ+" (>/7 1#@J@J@/?7"@/]@$ @/@?&@\?7"@ MJ+"(>?&@\@ 1#@J@ #@"7?7"@/]@aIW #@"7WIa 7?&?&@\?7"@/]@aIW?+"@?&@WIa %E @/@?&@\?7"@ MJ+"(>?&@\@ I 1#@J@ #@"7?7"@/]@aIW #@"7WIa 7?&7!/@?7"@/]@aIW?+"@7!@/7WIaE - 3 *? T racle 10g + +/01 8 3 358 4 ; 8 342/'2 7 5,- 8 35? 3534 +6 7 35 ' 4 $5 @@@S(+ \%; 35; -%3'E? 8 35 35 II 35 E " ;35 % $!% 35$ % 8E 18

" P\"/ PL" 6 P* @,T P&!K-4 E 7 & $7 "% ; <35 6 < $ % + 5 5 +/01 8;2 9 8 _ ;: 35 34 9 @ 9 8 9 ( 8/,- /;5 :'#'"+--""! =; 86; 7 35' 6!&>B 9=8 <<>B 968 8 5C>B 9 72 :8+,-26 2 4B Lb$4; 3 Lb%?MT, < 8 / 19

# + & 5 5, 7 4 &!7 72 4 9 <, DB 9 6 34 $B 2 35 $> B 35 $>B 2 3434 :4B 6 :> ' 34;5 6 <35 :>B2 34346 20

B35 ;5 > B 34 35!*B 9! B 6B 8 34 D @J?7"@D @J&7+D? 7D @ +?(J+@ 'B 68> B 6 $8B $8>B $8>E B 2 " >$B 35VX$%; 8, D>$B 349 <B /+!$/+9%8 6 ; 8 34 E > BB 2 E >B35 21

+4 B; 48 +,-24B Lb@4 6 >!&@ ++,- 8 4B & 8 5 56(%5'"'%/$"7%/8; 2 =34 74Lb5 5< 7 <35 6 8 ' # 7 J! S7 SJ / & & M &!8. $ + + J S" < L & / 5 :. S. + SJ 7 S ; / S/ " " S J S " D (. S+ 22

5 :. & S J / S ( ( M! 5 : :. M L D 6 6 4B /012; 34 5 < >7 5 72 6 34 2 5 + &4 $!, F &9 8 $ % /,- 7 35./ '=8./35S+ C 34./$9C <;./% (8 4B Lb87 ; < / 8/ ; 8$; C %; 4; 9 974 8MT* 23

# + % & 'G 7= 8 4 MT* ; : 348 5'56(%5'"'%/$"7%/8569-569-"-$7 4 7556(%5'"'%/$"7%/82 =5 D 52 ; 5 3 A @534./4 + 55T, 24

./& $ 5/)./(/7?#7 #L7/D@?D"!@J L7J#7J*$,K% 35./ 35 35 J35 2 35./ $ + 8 8 ) 'G$:'&>!&!!:,">H:!$,I @ 5 34 6 8./7T* 5 $8 5/) 7&&J@ J71 $Tc)% @3 #7 #L7/D@?D"!@J L35./& (/7?#7 #L7/ D@ L7J#7J*$,K% 35./?D"!@J J35 2 357 35 (/7?#7 #L7/D@ 5 5$2 %./MD//@\ /+! + 35./ A35 35 ;5b; @\@D+??D"!@J?C <; 35./ 5 $ + 8 8 ) 'G!-< 25

7L5569-"-$2 3535 35./ @2 2; 35 S+ C 34./7TK 5; < P8 M TK : 4 < $56(%5'"'%/$"7%/8569-569-"-$% V$ACTIVE_SESSIN_HISTRY V$SQL SQL_ID VARCHAR2(13) ADDRESS RAW(4 8) SQL_PLAN_HASH_VALUE NUMBER HASH_VALUE NUMBER etc SQL_ID VARCHAR2(13) PLAN_HASH_VALUE NUMBER etc V$SQL_PLAN ADDRESS HASH_VALUE SQL_ID PLAN_HASH_VALUE RAW(4 8) NUMBER VARCHAR2(13) NUMBER etc # + G 7 26

$8 5/) 7&&J@ J71 $Tc)% @3 #7 #L7/D@?D"!@J L35 77&&J@ #7 #L7/D@ 356 Lb./7J@7./& (/7?#7 #L7/D@?D"!@J +(@J7+? +(+? +!P@?7"@ L7J#7J*$,K%./ J35 2 357 35 (/7?#7 #L7/D@ 5 5$2 % L7J#7J*$K-%? 35 7!/@ 7@ L7J#7J*$K-% D 3535 +(@J7+? MD// L7J#7J*$K,%? 6 &?D"!@J?C 6 35 +?D"!@J 35 < < 7J&?7/_?D"!@J @ C <35 ++?D"!@J S+35 ( 34; 2?D// $ + 8 8 ) 'G!-<><" +.T, 8; 34C +,-L; 56(%5'"'%/$"7%/85 27

!&<&$./7&&J@./#7 #L7/D@././MD//@\./@\@D+? #,ELb././ JH&& &;:!$!$!&<&$7 #./&7 #./(/7?#7 #L7/D@ #,E Lb7L@ @ +?# +J_7 # JH&&7 #./(/7?#7 #L7/D@R./(/7?#7 #L7/D@ "57 #./&R././& % "5././MD//@\",$ <:&admj+"lb././da - + % *? K 4 +.T* 8;8 35C +,-$ %!&<&$./7&&J@./#7 #L7/D@ (+(@J7+? (+(+? (++ (7J&?7/_./@\@D+? (& #,E Lb././Lb./(/7? ( JH&& ((/7?#7 #L7/D@R./(/7?#7 #L7/D@ "5 (./&R././& "5&;:!$!$!&<&$7 #./&7 #./(/7?#7 #L7/D@ #,E Lb7L@ @ +?# +J_7 # JH&&7 #./(/7?#7 #L7/D@R./(/7?#7 #L7/D@ "5 7 #./&R././& % "5././MD//@\",$ <:&admj+"lb././da - + *? 8 4/) K 4 ++ &4 :./( &, F ;8 2 8 34 6 'C $8% 35 6 2 6 6$8! W % ( 34 8 <358? " & < 9' "-' "%$',' 7 35 4 5 28

!! @ 2 35@ ;8<C 34735 U +1?@J $8 "6<< 5/) L7J#7J*$K-%?+?D// (8 7!/@?7"@ L7J#7J*$K-%?+?D//??D" J+1 e?d"!@j?c!/+] e?d"!@j?c! " $ ++ 8 8 ) 5C>$C<&! @ 6 @ 34 6 8! W <35 7K0 ; < P8 M KU 4 "-' "%$',' +1?@J $8 "6<< 5/) L7J#7J*$K-%?+?D// (86?&@\?7"@ L7J#7J*$K-%?+?D//? 6 7!/@+1?@J L7J#7J*$K-%?+?D// (8 7!/@?7"@ L7J#7J*$K-%?+?D//?!/@L@/e?D"!@J?68!W' <= D - ;<5 $ +0 8 8 ) 5C>:"5&;&! 29

DBA_TABLES DBA_INDEXES WNER VARCHAR(30) WNER VARCHAR(30) TABLE_NAME VARCHAR(30) INDEX_NAME VARCHAR(30) etc TABLE_WNER VARCHAR(30) TABLE_NAME VARCHAR(30) etc # ++ 5C>$C<&! 5C>:"5&;&! ( 346 8./;< &!77!/@ &!7?&@\@ $; 2 7!/@+1?@J7!/@?7"@% 9' C C 6 87< 42 @88.TK!&<&$7!/@?7"@?D" J+1 /!/+]!?&@\?7"@!/@L@/7 #,E&!77!/@ &!7?&@\@ J H&&7!/@?7"@Ra a "5+1?@JR7!/@+1?@J$W% "57!/@?7"@R7!/@?7"@$W% - + *? 5 SQL Server 2005 0 7" 6./ *--0 < 6 2 3 ;34''2+4+ ' 30

@34 2f 2 3% f9 < <35@;./ *--0 35 34(./ *--0 <6 35 3 3F*-G? ;./ <4 2 6 8A 5352 64 76./ *--05' @? 5 " 3 @ 7 M! 0!../ 6 34 $ % 5 < ( 94; < 349;8 35= 35 31

' (./, 72 $% * 72L4 $5* K 7234./ T +/@&! 0 +&! 0? +./ 5 < 3 = 7& 5 $2 '-'( % = 4 =8 ' 7 8!"! #$! $ 0 8!-<! 32

+'7 e!&$ %"7 @J 0? '(! + 2 " <35L4 @ @ 4=./ Y-8+ L4 5 4; 3 Lb$ %?./ *--045 34$; %' %5 (5 (5 5 &5 : &./ *--0 5 A27 ; 9< 24 7 4 5*--0 47 42; 8 5 ( 5./ *--0 9 4; @45!?./ *--0 *K-4 ;./ *--0 0-7./ *--04 33

# 0 (!-<! 74 5 ;; 8@ 4 5 ; $34% / ; $4 % :.! ' 74% 348 5./g*@ 348 ; < +8S 34 < 4 >!& ; 5./g* @ 4; $%@45< 6 7 4 ; 4 ; $%% ' 34

# 0 ( 8 :.! ' 7 <354' %$%&'( )*+,-.)+*,'-+./&0%,'$% -- Retorna as informações armazenadas no catálogo de todas as tabelas existentes %$%&'( )*+,-.)+*,'-+./&0%,&+$1,. 20%*%'$%/.,%34,5'4 -- Retorna as informações sobre as colunas da tabela MyTable %$%&'&+$1,./.,%6-/.1$$$%6'/'7% )*+,-.)+*,'-+./&0%,&+$1,. 20%*%'$%/.,%34'%$84 -- Retorna o nome, se a coluna permite null e o tipo de dados de todas as colunas -- da tabela chamada TABELA1 WITH ENCRIPTIN SELECT SPECIFIC_NAME, RUTINE_TYPE, RUTINE_DEFINITIN FRM INFRMATIN_SCHEMA.RUTINES -- Retorna o nome, o tipo de rotina ( Stored Procedure ou função ) e o código fonte da -- rotina, desde que a mesma não tenha sido criada com a opção SELECT TABLE_NAME FRM INFRMATIN_SCHEMA.TABLES WHERE TABLE_TYPE = 'VIEW' -- Retorna todas as tabelas do banco de dados atual, que na verdade são views 35

8 ' 4./ 5 $9- ;11<% 94@45 4 $ % ;5 @ ; < 9- ;111@ 5 6$% 9- ;11< ' +./ *--0<48$ % @4 < $ % 7" 48 ' 56$ %2 48 748 72 455 3 748 ; 4 C + 48 5 0?./(!-<! D 2< 3498./ @34=./ Y- 36

? < 34' =>/?'("%)*;./ 9 35 /?'(/'8)*92 5' '-'(/?'(/'8)/?'("%)@'-0@*+@@* + 35 ;98? h35/?'(/'8$%,9 '-0-5?D// 95 0+,<& 5C! 7 35 +/@&! %; 9; ;: 348+/-' 5 348 +/@&!@5 00,5C # 7 35 +&! 9 34 8; $%;: 348@34 25 348;2 +&!+345 01 E8 $! '(! 7 34 & './ *---4 34./ *--0 37

!!. $8.. sysaltfiles sys.master_files Catalog view syscacheobjects sys.dm_exec_cached_plans sys.dm_exec_plan_attributes sys.dm_exec_sql_text sys.dm_exec_cached_plan_dependent_objects Dynamic management view Dynamic management view Dynamic management view Dynamic management view syscharsets sys.syscharsets Compatibility view sysconfigures sys.configurations Catalog view syscurconfigs sys.configurations Catalog view sysdatabases sys.databases Catalog view sysdevices sys.backup_devices Catalog view syslanguages sys.syslanguages Compatibility view syslockinfo sys.dm_tran_locks Dynamic management view syslocks sys.dm_tran_locks Dynamic management view syslogins sys.server_principals sys.sql_logins Catalog view sysmessages sys.messages Catalog view sysoledbusers sys.linked_logins Catalog view sysopentapes sys.dm_io_backup_tapes Dynamic management view sysperfinfo sys.dm_os_performance_counters Dynamic management view sysprocesses sys.dm_exec_connections sys.dm_exec_sessions sys.dm_exec_requests Dynamic management view Dynamic management view 38

Dynamic management view sysremotelogins sys.remote_logins Catalog view sysservers sys.servers Catalog view $ 0 E8./(!-<! FFF 8!-<! FF0 7 34 ;;$8%./ *--- 4 34./ *--0!.!. $8.. fn_virtualfilestats sys.dm_io_virtual_file_stats Dynamic management view syscolumns sys.columns Catalog view syscomments sys.sql_modules Catalog view sysconstraints sys.check_constraints sys.default_constraints sys.key_constraints sys.foreign_keys Catalog view Catalog view Catalog view Catalog view sysdepends sys.sql_dependencies Catalog view sysfilegroups sys.filegroups Catalog view sysfiles sys.database_files Catalog view sysforeignkeys sys.foreign_key_columns Catalog view sysindexes sys.indexes sys.partitions sys.allocation_units sys.dm_db_partition_stats Catalog view Catalog view Catalog view Dynamic management view sysindexkeys sys.index_columns Catalog view sysmembers sys.database_role_members Catalog view 39

sysobjects sys.objects Catalog view syspermissions sysprotects sys.database_permissions sys.server_permissions sys.database_permissions sys.server_permissions Catalog view Catalog view Catalog view Catalog view sysreferences sys.foreign_keys Catalog view systypes sys.types Catalog view sysusers sys.database_principals Catalog view sysfulltextcatalogs sys.fulltext_catalogs Catalog view $ 0 E8./(!-<! FFF 8!-<! FF0 0 &4 $!!-<! FF0 &9 8 $ %./ *--0 7 35./ '=8./35S+ C 34./$9C <;./%(8 4 2 434A68 ( 8././ < ' A $M 0T% ; 7 7= 8 A 88././.0,2 C././ 9 ; <; 40

$8 5 5/) D8 L+M 9' Compiled Plan Executable Plan Parse Tree Cursor Parse Tree Extended Stored Procedure D8 L1M 9' Stored Procedure Prepared statement Ad hoc query ReplProc (replication procedure) Trigger View Default User table System table Check Rule D & 9 < DN ;9 9 $ %( 9./ D2 &;9?C <;9 35 8?C 8 = 9 * 9@ 9 9,*) 9 * L01M 8./ $ 0+ % 8 8!D @/@D((@J$;%; $% MJ+" 9 1#@J@9Ra(a9Ra@(a;a$%da >J+D(!_D((@J$;% - 0 % 8 K!-< 41

( 35 8./ Vset showplan_all onb89-x7 +./ :8 35 8./700 ' Texto XML Comando Executa a Consulta? Exibe o plano em modo texto? Exibe a quantidade estimada de linhas (tuplas)? set showplan_text on Não Sim Não Não set showplan_all on Não Sim Sim Não set statistics profile on Sim Sim Sim Sim set showplan_xml on Não Sim Sim Não Exibe o número de linhas corrente? set statistics xml on Sim Sim Sim Sim $ 00 % 8 8 4/) K!-< +.0* 35 8././ *--0 @ #+1(/7?7//+?? JDZ[+./@\@D7&7&DJ7?@7+?@\[+&+ >!& @ #+1(/7?7//+MM - 0 %, &4/) (./ \"/ < 5! "2" 9 34! "2""2!"2"" 7 0U 5!"2" 42

-9 :; < 9 -; 9=>?9 ;; 9@!!"# ; 9!A * * $%# - ; B+ A %$%&' -.%*' 1'% %$%'% &C1$+D &C1 && 2-')+* $+&C,+.-'+* &0%&C+-.' $E72*-'%*!&#? #$; 9!&#?9 -B ; ; 9 ' -9:;; < 9 43

'&1 '.>? ; 9 ( '.>? ; 9.! 9:;; 9< < ; < 9 ( '.> @ ; 9 $ 01 % 7 8 8 8 4/) 4 +;0K 35 A ;35 \"/./ *--0 &@/7J@i? @ir0*&* &@/7J@i;L7J!?7J_$UT% &@/7J@iL7J!?7J_$UT% @/@i;r;ir MJ+" ; 1#@J@Ri @/@e MJ+" ;$i;% @/@e MJ+" ;$i% - 0 %, L ;E <M!-< 8 8 4/) 0+ &4 :./( &!-<! FF0 ;8 2 8 34 6 'C $8% 35 44

6 2 6 6$8! W % ( 348<35 &48 5 9 5'A 2735 5 ' 7A 349 >!&$ 4 < % 7 35 0Y 7 2 $ 0)% 34 C 6@ 34 ; $% 6356 ( 34 C C 26 6 8 8./@ 85;0T000U 45

Nome da Coluna Tipo de Dados Descrição name sysname Nome do objeto. Id int Identificador do objeto. xtype char(2) Tipo do objeto. Pode ser um dos seguintes valores: C = CHECK constraint D = Default or DEFAULT constraint F = FREIGN KEY constraint L = Log FN = Scalar function IF = Inlined table-function P = Stored procedure PK = PRIMARY KEY constraint (type is K) RF = Replication filter stored procedure S = System table TF = Table function TR = Trigger U = User table UQ = UNIQUE constraint (type is K) V = View X = Extended stored procedure uid smallint ID do usuário proprietário do objeto. crdate datetime Data em que o objeto foi criado. type char(2) Tipo do objeto. Pode ser um dos seguintes valores: C = CHECK constraint D = Default or DEFAULT constraint F = FREIGN KEY constraint FN = Scalar function IF = Inlined table-function K = PRIMARY KEY or UNIQUE constraint L = Log P = Stored procedure R = Rule RF = Replication filter stored procedure S = System table TF = Table function TR = Trigger U = User table V = View X = Extended stored procedure $ 03 %!D 46

Nome da Tipo de Dados Descrição Coluna id int ID da tabela (para indid = 0 or 255). Caso contrário, ID da tabela ao qual o índice pertence. first binary(6) Ponteiro para a primeira página ou para o nó Raíz. indid smallint ID do índice: 1 = Clustered index >1 = Nonclustered 255 = Entrada para tabelas que tenham dados texto ou imagem. root binary(6) Para indid >= 1 e < 255, root é um ponteiro para o nó raiz do índice. Para indid = 0 or indid = 255, root é um ponteiro para a última página de dados. minlen smallint Tamanho mínimo de uma. keycnt smallint Número de chaves. dpages int Para indid = 0 ou indid = 1, dpages representa o número de páginas de dados. Para indid=255, este campo contém valor 0. Para outros casos, este valor representa o número de páginas de índices. rowmodctr int Total de linhas inseridas, excluídas ou atualizadas desde a última vez que as estatísticas foram atualizadas. xmaxlen smallint Tamanho máximo de uma linha. maxirow smallint Tamanho máximo de uma linha referente a um nó não folha. rigfillfactor tinyint Fillfactor utilizado quando o índice foi criado. Pode ser útil quando se deseja re-criar o índice e não se recorda do fillfactor utilizado quando o índice foi criado. keys varbinary(816) Lista com os IDs das colunas que compõem a chave do índice. name sysname Nome da tabela (para indid = 0 or 255). Caso contrário, nome do índice. rows int Número de linhas da tabela (se indid = 0 and indid = 1). Para indid = 255, rows recebe valor 0. $ 09 8 8!4 @/@J+1 MJ+" _ +!P@ P+? _?&@\@ +?&R& 1#@J@?7"@Ra7!/@,a7?&_(@RaDa7?&?&&jR, - 0+ *? * #$ % 47

@/@&(7>@ MJ+" _ +!P@ P+? _?&@\@ +?&R& 1#@J@?7"@Ra7!/@,a7?&_(@RaDa7?&?&&jR, - 00 *? * @8 A @/@?7"@]@_ MJ+" _ +!P@ P+? _?&@\@ +?&R& 1#@J@?7"@Ra7!/@,a7?&_(@RaDa7?&?&&kR, - 01 *? 6 Conclusões + 2 34 56(34 =7 88 ; 3 6 < :+&!758 5 &8 >!&&!7 35( 34&!75 = >!&? $./ 35 % 346$C 8 6% B 48

(2 $% >!&& &!7C 8./ +,-2 352 2./ *--0? < >!& '(+,-./ *--072 2 < 34 6 < $% 8 35 & 35<35 68 3535 6 Bibliografia [1] MNTEIR, J. M.: An Architecture for Automated Index Tuning. V Workshop de Teses e Dissertações em Banco de Dados (WTBD), realizado em conjunto com o XXI Simpósio Brasileiro d Banco de Dados (SBBD). 2006. [2] CHAUDHURI, S., DATAR, M., AND NARASAYYA, V.: Index Selection for Databases: A Hardness Study and a Principled Heuristic Solution. IEEE Transactions on Knowledge and Data Engineering, 16 (11):1313 1323, 2004. [3] CSTA, R. L. C., LIFSCHITZ, S., NRNHA, M., SALLES, M. V.: Implementation of an Agent Architecture for Automated Index Tuning. ICDE Workshops 2005. [4] SALLES, M. V.: Criação Autônoma de Índices em Bancos de Dados. Dissertação de Mestrado, Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro (PUCRio), 2004. [5] MRELLI, E. M. T.: Recriação Automática de Índices em um SGBD Relacional. Dissertação de Mestrado, Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro (PUCRio), 2006. [6] LIFSCHITZ, S.; MILANÉS, A. Y. ; SALLES, M. A. V.. Estado da arte em auto-sintonia de sistemas de bancos de dados relacionais. Relatório técnico, Departamento de Informática, Pontifícia Universidade Católica do Rio de Janeiro (PUC-Rio), 2004. 49

[7] WEIKUM, G.; M NKEBERG, A.; HASSE, C. ; ZABBACK, P.. Self-tuning database technology and information services: from wishful thinking to viable engineering. In: Proceedings of the International Conference on Very Large Databases (VLDB), p. 20 31, 2002. [8] VIEIRA, M.; DURÃES, J.; MADEIRA, H. Especificação e Validação de Benchmarks de Confiabilidade para Sistemas Transacionais. IEEE Latin America Transactions, Jun. 2005. [9] KENDALL, E.A. KRISHNA, P.V.M. PATHAK, C.V. AND SURESH, C.B., An Application Framework for Intelligent and Mobile Agent Systems, capítulo em Implementing Applications Frameworks: bject riented Frameworks, Work, ed. M. Fayad, D. C. Schmidt, R. Johnson, Wiley & Sons, 1999. [10] SALLES, M. V., AND LIFSCHITZ, S.: Autonomic Index Management. In Proceedings of the International Conference on Autonomic Computing (ICAC), 2005. [11] CHAUDHURI, S., AND NARASAYYA, V.: Autoadmin what-if Index Analysis Utility. In Proceedings of the ACM SIGMD International Conference on Management of Data, pages 367 377, 1998. [12] CHAUDHURI, S., AND WEIKUM, G.: Rethinking Database System Architecture: Towards a Self-tuning Risc-Style Database System. In Proceedings of the International Conference on Very Large Databases (VLDB), pages 1 10, 2000. [13] CSTA, R. L. C., LIFSCHITZ, S. AND SALLES, M. V.: Index Self-Tuning with Agent-Based Databases. CLEI Electronic Journal, 6(1):22 PAGES, 2003. [14] TPC: TPC Benchmark Revision 2.1.0. Disponível em: < http://www.tpc.org>. Acesso em 05 de junho de 2007. [15] MMJIAM, B.: Postgresql Introduction and Concepts. Addison-Wesley. New York, 2001. [16] STINSN, B.: Postgresql Essential Reference. New Riders Publishing, Primeira Edição, 2001. [17] GESCHWINDE, E. AND JUNGERSCHNING, H.: Postgresql Developer s Handbook. Sams Publishing, Segunda Edição, 2002. [18] Coletor de Estatísticas do Postgresql. Disponível em: <http://www.javalinux.com.br/javalinux/pg74/monitoring-stats.html>. Visitado em 01/07/2007. [19] RACLE V$ View List. Disponível em: <http://www.dbaoracle.com/menu_v$_views_list.htm>. Acesso em 05 de junho de 2007. 50

F*-G!-<! FF0 C,< &6 ' j'ss Sk7 ',,9*--Y F*,G?7L7#@ E@/" 7 JJ! T 5( '71 *--0 F**G /!@J #7^7E]+J##ME D&7J #7?! 0 5(' *--U 51