Você está na página 1de 42

Workshop IBM DB2 UDB 8.

2
Boas prticas e dicas de performance

Instrutor: Ivan Alves Tavares Jr


DB2 UDB 8.2 Database Certified Administrator (LUW) Recife, Dezembro de 2006

Roteiro

Ambiente DB2 Ferramentas de acesso ao banco de dados Dicas comandos SQL

Workshop DB2 UDB

Ambiente DB2

Workshop DB2 UDB

Ambiente DB2

Workshop DB2 UDB

Ambiente DB2

Workshop DB2 UDB

Ambiente DB2 Ferramentas disponveis

Workshop DB2 UDB

Janela de comandos

Workshop DB2 UDB

Processador de Linha de Comandos

Workshop DB2 UDB

Assistente de Configurao do Cliente

Ambiente DB2

Workshop DB2 UDB

Ambiente DB2
Centro de Controle

Workshop DB2 UDB

Ambiente DB2
Centro de Controle

Workshop DB2 UDB

Ambiente DB2
Centro de Controle

Workshop DB2 UDB

Instncias / Databases / Schemas

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:

Instncias / Databases / Schemas

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

Select UserID, UserNM From ADMRH.vw_Colaboradores

Workshop DB2 UDB

Instncias / Databases / Schemas

Ambiente DB2

Workshop DB2 UDB

Dicas Comandos SQL


SELECT The price for ' || SUBSTR(title, 1, 40) ||' is $' || CAST(price AS VARCHAR(10)) FROM titles

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)

is $19.99 is $11.95 is $ 2.99 is $19.99 . . . is $20.95 is $11.95 is $14.99

Workshop DB2 UDB

Dicas Comandos SQL

Simple CASE Expression:


CASE expression WHEN expression1 THEN expression1 [[WHEN expression2 THEN expression2] [...]] [ELSE expressionN] END

Searched CASE Expression:

CASE WHEN Boolean_expression1 THEN expression1 [[WHEN Boolean_ expression2 THEN expression2] [...]] [ELSE expressionN] END
Workshop DB2 UDB

Dicas Comandos SQL


SELECT (CASE LANCTB.IN_SINAL_LANC WHEN 'D' THEN (LANCTB.VL_LANC_DET) ELSE 0.00 END) AS MOVIMENTO_DEBITO , (CASE LANCTB.IN_SINAL_LANC WHEN 'C' THEN (LANCTB.VL_LANC_DET) ELSE 0.00 END) AS MOVIMENTO_CREDITO FROM LANCAMENTO_CONTABIL AS LANCTB INNER JOIN LANCAMENTO AS LANCMT ON LANCMT.DT_ANO_EXERC = LANCTB.DT_ANO_EXERC AND LANCMT.CD_UG_EMITENTE = LANCTB.CD_UG_EMITENTE AND LANCMT.CD_TIPO_DOC = LANCTB.CD_TIPO_DOC INNER JOIN CONTA_CONTABIL AS CTACTB ON CTACTB.CD_CONTA_CONTABIL = LANCTB.CD_CONTA_CONTABIL WHERE AND AND AND AND LANCTB.DT_ANO_EXERC = 2006 LANCTB.CD_UG_DESTINO = 560100 LANCTB.CD_CONTA_CONTABIL BETWEEN 999920101 AND 999920101 LANCMT.DT_LANCAMENTO BETWEEN '2006-01-01' AND '2006-04-13' LANCTB.CD_CONTA_CORRENTE = 9#056010#9999010123600#08025#XX12
Workshop DB2 UDB

Dicas Comandos SQL

COALESCE Avalia uma srie de valores e retorna o primeiro valor No NULL

COALESCE (expression1, expression2, ... expressionN)

Select coalesce (salario, comissao * venda) as proventos from vendas

Workshop DB2 UDB

Dicas Comandos SQL

SELECT * FROM authors WHERE zip > '90000'


authors
au_id au_lname au_fname phone address city state zip contract

172-32-1176 213-46-8915 238-95-7766 267-41-2394 . . . 846-92-7186 893-72-1158

White Green Carson OLeary . . . Hunter McBadden

Johnson Marjorie Cheryl Michael . . . Sheryl Heather

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

Menlo Park Oakland Berkeley San Jose . . . Palo Alto Vacaville

CA CA CA CA . . . CA CA

94025 94618 94705 95128 . . . 94301 95688

1 1 1 1 . . . 1 0

(16 row(s) affected)

Workshop DB2 UDB

Dicas Comandos SQL


SELECT au_lname, city FROM authors WHERE state = 'CA'
Evitem o uso de * na lista de atributos do comando Select

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

Workshop DB2 UDB

Dicas Comandos SQL


SELECT stor_name FROM stores WHERE stor_name = 'Book' SELECT stor_name FROM stores WHERE stor_name LIKE 'Book'
Se o atributo for CHAR, ele ser preenchido com brancos a direita: Ex: CHAR(30) - Tereza Lira.................... Se o atributo for VARCHAR, ele no ser completado por brancos a direita O uso do operador =, despreza a existncia de brancos a direita O operador LIKE influenciado pela existncia de brancos a direita
Workshop DB2 UDB

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 .

(17 row(s) affected) Workshop DB2 UDB

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

Left / Right Outer Join


SELECT titles.title_id, title, qty FROM titles LEFT OUTER JOIN sales ON titles.title_id = sales.title_id

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

qty 5 10 25 35 . . (null) . . (null)

sales
stor_id qty title_id

6380 6380 7066 7066

5 3 50 75

BU1032 PS2091 PC8888 PS2091


Workshop DB2 UDB

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;

Select Count(*) as Qtde from tab;


Workshop DB2 UDB

Dicas Comandos SQL


SELECT UF_SG, COUNT(PESSOA_CD) from t_end GROUP BY UF_SG
UF_SG PB PE COUNT(PESSOA_CD) 2 6

PESSOA_CD 18 1243 1098 123 3012 2345 500 456

LOGR_ID PB PB PE PE PE PE PE PE

UF_SG

MUNC_ID 2570 2570 2437 2437 4066 4066 4066 4066

Workshop DB2 UDB

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

MUNC_ID 2570 2570 2437 2437 4066 4066 4066 4066

Having
SELECT UF_SG, MUNC_ID, COUNT(PESSOA_CD) from t_end

GROUP BY UF_SG, MUNC_ID HAVING COUNT(PESSOA_CD) > 2


UF_SG PE MUNC_ID 4066 COUNT(PESSOA_CD) 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

MUNC_ID 2570 2570 2437 2437 4066 4066 4066 4066

Uso correto do Group By

SELECT UF_NM, MUNC_NM, Calculo.Qtde FROM t_Local INNER JOIN


(SELECT UF_SG, MUNC_ID , COUNT(PESSOA_CD) as Qtde From t_end GROUP BY UF_SG, MUNC_ID) as Calculo ON t_Local.MUNC_ID = Calculo.MUNC_ID INNER JOIN t_UF ON t_UF.UF_SG = Calculo.UF_SG

Workshop DB2 UDB

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

Workshop DB2 UDB

Uso do Distinct

A clusula DISTINCT retira linhas em duplicidade, como resultado de um comando SELECT

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

Workshop DB2 UDB

ndice

Para que utilizar ndices ?


Garantir valores nicos (PK e Unique index) Pode ordenar os registros da tabela fisicamente (parmetro cluster) Agilizar acesso aos dados

Qual a diferena entre PK, FK e ndices ?


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.

Workshop DB2 UDB

ndice

Workshop DB2 UDB

ndice

Workshop DB2 UDB

ndice Simulao de uma Incluso


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

Workshop DB2 UDB

ndice

Utilizem sempre que possvel filtros nas consultas


Montem a ordem do filtro (WHERE), baseado na ordem do ndice existente para a tabela Exemplo: Where DT_ANO = 2006 And CD_UG = 905602 And SQ_GESTAO = 4

Workshop DB2 UDB

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

Insert into Tabela06


Update Tabela03 Update Tabela05 Delete Tabela10

...
Commit Transaction
Workshop DB2 UDB

Monitorar Transaes

db2 update monitor switches using LOCK ON

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

Workshop DB2 UDB

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

Workshop DB2 UDB

Melhoria de Performance

Analisem as necessidades de consultas e criem tantas consultas quanto necessrio.

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

Workshop DB2 UDB

Você também pode gostar