Escolar Documentos
Profissional Documentos
Cultura Documentos
Workshop DB2 Desempenho e Boas Práticas em Comandos SQL v00 01
Workshop DB2 Desempenho e Boas Práticas em Comandos SQL v00 01
2
Boas prticas e dicas de performance
Roteiro
Ambiente DB2
Ambiente DB2
Ambiente DB2
Janela de comandos
Ambiente DB2
Ambiente DB2
Centro de Controle
Ambiente DB2
Centro de Controle
Ambiente DB2
Centro de Controle
Ambiente DB2
Schemas
So qualificadores de alto nvel que agrupam objetos num banco de dados DB2. Schemas podem ser de usurio ou de sistema.
System Schemas
SYSIBM:
O catlogo bsico de metadados dos objetos de um database; Catlogo com vises (read-only) dos metadados dos objetos de um database forma recomendada de se obter informaes de um objeto de banco de dados; Funes definidas por usurios.
Workshop DB2 UDB
SYSCAT:
SYSFUN:
Ambiente DB2
Os Schemas de usurios so atrelados a um login de acesso ao DB2. Um login pode definir vrios Schemas. Os schemas agrupam tabelas, vises, triggers e procedures, bem como definem os nomes destes objetos:
SISWEB.tab_Usuarios ADMRH.vw_Colaboradores
Ambiente DB2
titles
The price for The Busy Executives Database Guide The price for Cooking with Computers: Surreptitious The price for You Can Combat Computer Stress! The price for Straight Talk About Computers . . . . . . The price for Onions, Leeks, and Garlic: Cooking Sec The price for Fifty Years in Buckingham Palace Kitch The price for Sushi, Anyone?
(18 row(s) affected)
CASE WHEN Boolean_expression1 THEN expression1 [[WHEN Boolean_ expression2 THEN expression2] [...]] [ELSE expressionN] END
Workshop DB2 UDB
408 496-7223 415 986-7020 415 548-7723 408 286-2428 . . . 415 836-7128 707 448-4982
10932 Bigge Rd. 309 63rd St. #411 589 Darwin Ln. 22 Cleveland Av. #14 . . . 3410 Blonde St. 301 Putnam
CA CA CA CA . . . CA CA
1 1 1 1 . . . 1 0
authors
au_lname White Green Carson OLeary . . . MacFeather Karsen Hunter McBadden
(15 row(s) affected)
city Menlo Park Oakland Berkeley San Jose . . . Oakland Oakland Palo Alto Vacaville
Junes
Juntar Informao de duas ou mais tabelas, atravs de algum atributo em comum Uso da sintaxe ANSI SQL ou sintaxe proprietria
ANSI SQL
SELECT table_name.column_name, tabela_name.column_name [,table_name.column_name ...] FROM {table_name [join_type] JOIN tabela ON search_conditions} WHERE [search condition ...]
Outra Sintaxe
SELECT table_name.column_name, table_name.column_name [,table_name.column_name ...] FROM {table_name, table_name } WHERE table_name.column_name join_operator table_name.column_name
Workshop DB2 UDB
Inner Join
SELECT pub_name, title FROM titles INNER JOIN publishers ON titles.pub_id = publishers.pub_id
publishers
pub_id
1389 0736 0877
titles
city title_id BU 1032 PC 1035 BU 2075 PS 2091 PS 2106 . . . title The Busy Executives But Is It User Friendly? You Can Combat Co... Is Anger the Enemy? Life Without Fear pub_id 1389 1389 0736 0736 0736 . . .
pub_name
Algodata Infosystems Berkley New Moon Books Boston Binnet & Hardley Washington
results
pub_name Algodata Infosystems Algodata Infosystems New Moon Books New Moon Books New Moon Books .
title
The Busy Executives.. But is It User Friendly? You Can Combat Co... Is Anger the Enemy? Life Without Fear .
Inner Join
sales
stor_id 7066 7067 7896 8042 date 09/13/85 09/14/85 09/14/85 09/14/85 title_id PS2091 PS2091 BU2075 BU1111 qty 75 10 35 25
SELECT stor_name, qty, title FROM titles INNER JOIN sales ON titles.title_id = sales.title_id INNER JOIN stores ON stores.stor_id = sales.stor_id
titles
stor_name Barnums News & Brews Bookbeat Fricative Boo.. stor_address 567 Pasadena 577 First St 679 Carson St. 89 Madison St. city Tustin Los Gatos Portland Fremont title_id BU1032 PC1035 BU2075 BU1111 title The Busy Executives Databa... But Is It User Friendly? You Can Combat Computer ... Cooking with Computers: Surreptitious Balance Sheets type business popular_comp business business stor_id 1389 1389 0736 1389
stores
stor_id 7066 7067 8042 7896
results
stor_name
Bookbeat Fricative Bookshop . .
qty
25 35 . .
title
Cooking with Computers: Surreptitious Balance Sheets You Can Combat Computer Stress! . . Workshop DB2 UDB
titles
title_id BU1032 BU1111 BU2075 BU7832 MC2222 MC3021 title The Busy Executives Database Guide Cooking with Computers: Surreptitious Balance You Can Combat Computer Stress! Straight Talk About Computers Silicon Valley Gastronomic Treats The Gourmet Microwave
results
title_id BU1032 BU1032 BU1111 BU2075 . . MC3026 . . PC9999
(23 row(s) affected)
title The Busy Executive The Busy Executive Cooking with Comp You Can Combat . . The Psychology of . . Net Etiquette
sales
stor_id qty title_id
5 3 50 75
Funes Agregadas
Funes AVG COUNT SUM MAX MIN Uso Mdia Contabilizar Somatrio Valor Mximo Valor Mnimo
Podem ser utilizadas sem Group By Select Max(Valor) as Maior from tab;
LOGR_ID PB PB PE PE PE PE PE PE
UF_SG
Group By
SELECT UF_SG, MUNC_ID, COUNT(PESSOA_CD) from t_end GROUP BY UF_SG, MUNC_ID
UF_SG PB PE PE MUNC_ID 2570 2437 4066 COUNT(PESSOA_CD) 2 2 4
PESSOA_CD LOGR_ID 18 1243 1098 123 3012 2345 500 456 Workshop DB2 UDB
UF_SG PB PB PE PE PE PE PE PE
Having
SELECT UF_SG, MUNC_ID, COUNT(PESSOA_CD) from t_end
PESSOA_CD LOGR_ID 18 1243 1098 123 3012 2345 500 456 Workshop DB2 UDB
UF_SG PB PB PE PE PE PE PE PE
Index
Quando um comando SQL compilado, o otimizador de consultas estima o custo de execuo de diferentes formas de satisfazer uma consulta. Existem duas formas de acesso aos dados: Relational (Table) Scan Leitura sequencial dos resgistros da tabela Index Scan Leitura da estrutura de ndice, agilizando o acesso aos dados
Uso do Distinct
A clusula DISTINCT cria tabelas temporrias para poder eliminar as linhas em duplicidade Usar o DISTINCT num SELECT que retorne campos string grandes desaconselhvel do ponto de vista de performance Se for imprescindvel usar o DISTINCT, optar por faze-lo em cima de campos numricos
Muitas vezes o uso do DISTINCT esta mascarando um comando SQL mal construdo
ndice
Garantir valores nicos (PK e Unique index) Pode ordenar os registros da tabela fisicamente (parmetro cluster) Agilizar acesso aos dados
PK: ndice principal (campos obrigatrios) ndice: estruturas auxiliares para agilizar acesso aos registros (aceita ausncia de valor: NULL) FK: Garante a integridade referencial do dado, verificando se o mesmo existe numa tabela principal. No gera ndice.
ndice
ndice
Localizar a folha onde a chave deve ser Inserida Se houver espao, insere Seno quebrar pgina em duas e promover chave do meio para o nvel acima. Executar passo anterior para inserir chave promovida no n pai. http://slady.net/java/bt/view.php?w=800&h=600
ndice
Transaes
Garantir atualizaes atmicas em duas os mais tabelas O usurio que iniciar as transaes ter que ter autorizao em todas as tabelas envolvidas
Begin Transaction
Insert into Tabela01 Insert into Tabela02
...
Commit Transaction
Workshop DB2 UDB
Monitorar Transaes
db2 update monitor switches using STATEMENT ON db2 update monitor switches using UOW ON db2 get snapshot for locks on <database name>
Begin Transaction Insert into Tabela01 Insert into Tabela02 Insert into Tabela06 Update Tabela03 Update Tabela05 Delete Tabela10 ... Commit Transaction
Melhoria de Performance
Conheam profundamente o modelo de dados Evitem reutilizar consultas de forma indiscriminada Consultas mgicas no existem Evitem o uso de DISTINCT Cuidado ao utilizar a clusula GROUP By Eliminar acessos desnecessrios a tabelas e views S incluir nos Joins tabelas de onde se retornaro dados, usando a clusula Where para os filtros necessrios
Melhoria de Performance
Verifiquem junto a equipe de banco de dados como foi montado o plano de execuo da consulta.
Estudar junto a equipe de banco de dados a criao de ndices para agilizar o retorno dos dados consultados e minimizando as Tables Scans. Se tiverem dvidas quanto ao uso de comandos SQL procurem a equipe de banco de dados