Professional Documents
Culture Documents
PostgreSQL Essencial
Luciano Mittmann mittmann@gmail.com
3.Gerenciando tabelas 4.Selecionando dados 5.Funes e operadores 6.Alterando dados 7.Controle de transaes 8.Outros objetos de banco de dados 9.Mdulos adicionais do diretrio contrib
2
O que o PostgreSQL?
PostgreSQL um
Introduo ao PostgreSQL
sistema gerenciador de banco de dados relacional (SGBDR) avanado extensvel dentro dos padres multiplataforma (Unix, Linux, Windows, Mac) de cdigo aberto com a licena mais liberal possvel (BSD)
4
chaves estrangeiras (FKs) disparadores (triggers) vises (views) controle de concorrncia (MVCC)
Michael Stonebraker, prof. da UC - Berkeley 77: desenvolveu o INGRES fundou o SGBDR! 86: continuou a pesquisa com o POSTGRES (cdigo do POSTGRES no partiu do INGRES) 94: adicionado suporte a SQL 95: liberado como Postgres95 96: reliberado como PostgreSQL 6.0 consolidao do Grupo de Desenvolvimento
6
Thomas Lockhart Jolly Chen Vadim Mikheev Jan Wieck Andrew Yu Tom Lane Bruce Momjian Marc Fournier
Sem Crash
Funcionamento do PostgreSQL
instncia catlogo de dados objetos do SGBD table spaces usurios do SGBD banco esquema objeto banco esquema objeto 1. conexo ocorre em um nico banco de dados e para um usurio 2. no existem sinnimos! 3. acesso a objetos de outro esquema com o recurso de search path 4. nativamente, no h como acessar objetos de outro banco
9
Download do driver
Biblioteca JAR
Classe de acesso
URL de conexo
Natureza
$psqlhelp
terminal interativo, como SQL*Plus ou sqlcmd acompanha o cliente do PostgreSQL #aptgetinstallpostgresqlclient cliente padro do PostgreSQL, acesso nativo, console, no requer servidor grfico (ie: X), rpido, pode ser usado na criao de scripts
Multiplataforma
Opesgerais: dNOMEBDespecificaonomedobancodedadosaoqualquerseconectar(padro:$USER) cCOMANDOexecutasomenteumcomando(SQLouinterno)esai fARQUIVOexecutacomandosdeumarquivoesai llistaosbancosdedadosdisponveisesai helpmostraestaajudaesai versionmostrainformaosobreaversoesai Opesdeentradaesada: Emostraconsultasqueoscomandosinternosgeram qexecutasilenciosamente(semmensagens,somentesadadaconsulta) oARQUIVOenviaresultadosdaconsultaparaumarquivo(ou|pipe) smodopassoapasso(confirmacadaconsulta) LARQUIVOenvialogdasessoparaarquivo Opesparaformatodesada: Amododesadaemtabeladesalinhada(Pformat=unaligned) HmododesadaemtabelaHTML(Pformat=html) texibesomenteosregistros(Ptuples_only) TTEXTOdefineatributosdomarcadortabledoHTML(width,border)(Ptableattr=) xhabilitasadaemtabelaexpandida(Pexpanded) FSEPARADORdefineseparadordecampos(padro:"|")(Pfieldsep=) RSEPARADORdefineseparadorderegistros(padro:nova_linha)(Precordsep=) Opesdeconexo: hMQUINAservidordebancodedadosoudiretriodosoquete(padro:"/var/run/postgresql") PPORTAportadoservidordebancodedados(padro:"5432") UUSURIOnomedeusuriodobancodedados(padro:$USER) Wperguntasenha(podeocorrerautomaticamente)
Instalao no Debian
Caractersticas
13
14
conectar-se ao servidor scelepar05480, porta 5432, banco de dados cursopg, usurio sa_cursopg, senha stranger
$psqlhscelepar05480p5432\ cursopgsa_cursopg
exibir a listagem dos bancos de dados existentes localmente, sem formatao e com os campos separados por :
$psqllAtF:
15
16
ponto e vrgula!
22
o que isso?
um poderoso til recurso semelhante ao que possui o bash, acionado com a tecla [Tab] aps a digitao de iniciais dos comandos
busca comando na lista de instrues possveis
sair do programa
db=#\q [Ctrl]+D
25
28
http://www.pgadmin.org/ Linux, FreeBSD, Windows, Mac OSX #aptgetinstallpgadmin3* fcil de usar, fornece dicas, faz acesso nativo, cdigo aberto, compilado (C++)
Multiplataforma
Instalao no Debian
Caractersticas
30
servidores
bancos
esquemas
Manuteno do DB
objetos
31
selecione o banco de dados desejado e acesse o menu Ferramentas -> Query tool
na jenela do Query tool, acesse o menu Query -> Execute to file Row separator
tabela de resultados
Filename
33
Ferramenta: phpPgAdmin
na jenela do Query tool, acesse o menu Query -> Explain ou pressione [F7]
http://phppgadmin.sourceforge.net/ requer Apache e PHP #aptgetinstallphppgadmin requer apenas browser no cliente, scripts em PHP, cdigo aberto, diversas funcionalidades especficas do PostgreSQL, intuitivo
Multiplataforma
Instalao no Debian
Caractersticas
35
36
Ferramenta: TOra
http://tora.sourceforge.net/
http://www.aquafold.com/ requer apenas Java VM (>= 1.5) #aptgetinstalldatastudio fcil instalao, intuitivo, acompanha drivers para diversos SGBDs, extrao de DDLs, IDE para criao e execuo de scripts
Plataformas
Multiplataforma
Instalao no Debian
Instalao no Debian
Caractersticas
Caractersticas
interface desktop (compilado), licena GPL, til para criao de stored procedures, navegao de schemas e execuo de SQLs
37
38
Introduo tabela
Gerenciando tabelas
uma estrutura de dados formada por linhas (registros, tuplas) e colunas (campos, atributos) nmero e ordem das colunas so fixos, e cada coluna possui um nome nico nmero de linhas varivel, em geral no garantindo a ordem destas e podendo ser no-nicas cada coluna possui um tipo de dado, que limita o conjunto de possveis valores
principais caractersticas
40
Introduo tabela
41
Tabelas: exemplos #1
Tabelas: exemplos #2
outra maneira
configurao de constraints adiveis alocao fsica da tabela em outra partio alocao fsica do ndice em outra partio especificao de parmetros adicionais para o armazenamento fsico da tabela (ex: fillfactor)
46
TABLESPACE tablespace
herana e polimorfismo de tabelas (como em Orientao a Objetos) cpia das colunas e restries, sem o mesmo vnculo da herana identificador nico para as linhas (ie: ROWID)
45
via psql
db=#\dfilmes Tabela"public.filmes" Coluna|Tipo|Modificadores ++ codigo|character(5)|notnull titulo|charactervarying(40)| did|integer|notnull data_prod|date|default('now'::text)::date genero|charactervarying(10)| duracao|intervalhourtominute| ndices: instrues "filmes_pk"PRIMARYKEY,btree(codigo) "filmes_titulo_key"UNIQUE,btree(titulo)
DDL
via pgAdmin
48
50
renomear a tabela
ALTERTABLEdistribuidores2 RENAMETOdist2;
IF EXISTS
caso a tabela no exista, no ocorre erro automaticamente exclui os objetos que dependem da tabela o oposto da opo acima, e o default
CASCADE
RESTRICT
54
Comentrios em objetos
Selecionando dados
remover o comentrio
COMMENTONTABLEfilmesISNULL;
55
o processo ou o comando para obter dados de um banco de dados chamado de query (ie: consulta ou consulta SQL) o SELECT uma instruo de DML (Data Manipulation Language) da SQL um exemplo de consulta simples
SELECT*FROMtabela;
serve para definir a lista de tabelas (uma ou mais) a serem lidas para a consulta a table_reference pode ser o nome de uma tabela (com ou sem esquema), uma subconsulta, uma juno ou combinao destas se mais de uma tabela for especificada, elas sero cruzadas numa tabela virtual
58
57
exemplos de utilizao
SELECT* FROMTB_UmaTabelaComNomeCompridonc JOINTB_OutraTabelaComNomePeculiarnp ONnc.id=np.num WHEREnp.campo>5;
o AS opcional!
serve para filtrar os registros obtidos da clusula FROM, mantendo apenas os que atinjam determinada condio search_condition uma expresso de valor qualquer que retorne um tipo de dados lgico (booleano)
SELECT*FROMfdtWHEREc1>5; SELECT*FROMfdtWHEREc1IN(1,2);
63
os campos da lista de seleo podem ser rotulados, para evitar problemas de interpretao ou redundncia
SELECTaASvalor,b+cASsomaFROM... SELECTversion()ASversao_atual;
64
query1INTERSECT[ALL]query2
MINUS em outros SGBDs
serve para definir a ordem em que as linhas, j processadas, sejam retornadas sort_expression pode ser qualquer expresso que seria vlida na lista de seleo (podem ser usados nmeros)
SELECTa,bFROMtab1ORDERBYa+b,c; SELECTa+bASsmFROMtablORDERBYsm;
UNION
INTERSECT
EXCEPT
65
SELECTa,bFROMtab1ORDERBY2DESC,1;
66
Funes e operadores
OFFSETnumber
Funes matemticas
Operadores matemticos
arredondar, truncar
SELECTround(3.5),round(3.55,1), trunc(3.5),trunc(3.55,1);
70
Funes de texto - I
concatenao de strings
SELECT'Post'||'greSQL','a'||null;
converso de codificao
SELECTconvert_from('codificao','LATIN1');
minsculo, maisculo
SELECTlower('PARAN'),upper('PontaGrossa');
iniciais maisculas
SELECTinitcap('DIRIO'),initcap('ol');
DICA: ln (a . b . c) = ln a + ln b + ln c
71
72
Funes de texto - II
localizao de substring
SELECTposition('gre'in'PostgreSQL');
comprimento do texto
SELECTlength('Oitocentos');
extrair substring
SELECTsubstring('PRAIA'from2for3); SELECTsubstring('PRAIA'from3); SELECTsubstring('PRAIA'for3); SELECTsubstring('PRAIA'from'^..');
Funes de texto - IV
clculo de MD5
SELECTmd5('senhasecreta'),md5('aaa');
75
76
curingas: % e _
operadores
ATENO: cuidado com o uso do LIKE pode provocar leituras do tipo full scan na tabela!
expresses regulares
78
valor
padro
79
exemplo de utilizao
exemplo de utilizao
SELECTnum, CASEnum%2 WHEN0THEN'par' ELSE'mpar' END FROMt1;
83
84
Funes de agregao
retorna o primeiro argumento no-nulo similar s funes NVL e IFNULL presentes em outros SGBDs
SELECTcoalesce(rg,cpf)asdocumento, age(coalesce(datnasc,now()))ASidade FROMTB_Cliente;
retornam um nico valor atravs de um conjunto de entradas podem ser criadas pelo usurio (UDAs) ex: contagem, mnimo e mximo
SELECTcount(1),count(*),count(num), min(num),max(num)FROMt1;
86
exemplo de utilizao
SELECTnum FROMt1 WHEREEXISTS( SELECT1 FROMt2 WHEREt2.num=t1.num );
no precisa especificar campos ou *
SELECT*FROMt2 WHEREnumIN(SELECTnumFROMt1);
Funes Exerccio 3a
criar a seqncia seq_boletos_id alterar a numerao inicial dela para 1001 verificar sua numerao atual criar e testar a funo rand():
CREATEFUNCTIONrand()RETURNSintAS$$ SELECTtrunc(random()*100)::int $$LANGUAGEsql; SELECTrand();
90
Funes Exerccio 3b
Funes Exerccio 3c
id: inteiro, PK, default = valor da seqncia cliente: inteiro, obrigatrio, default = rand() linha: caracter(24), default =
to_char(current_date - rand() + current_time + (rand()::text || 'sec')::interval, 'YYYYMMDDHH12MISS') || trim(to_char((random() * 1e5)::numeric(10,2), repeat('0', 10)))
200701031212450000068484
ano ms dia hora min seg valor (2 decimais)
exemplo de linha
91
extrair os valores do campo linha e copi-los para dthr e valor, utilizando as funes de converso de tipos de dados92
Funes Exerccio 3d
listar os 10 maiores clientes, exibindo os valores totais e ordenados de modo decrescente exibir a mdia e o desvio padro dos valores dos boletos do ms de setembro exibir o menor e o maior valor de boleto do dia 01 de outubro de 2010 exibir os boletos cujo cdigo do cliente esteja na tabela t1 (campo num), ordenando pelo id e desconsiderando os 10 primeiros registros 93
Alterando dados
as formas a seguir so extenses do PostgreSQL (fora do padro ANSI SQL) preenchendo com valores padres
INSERTINTOprodutos VALUES(5,'Mortadela',DEFAULT); INSERTINTOprodutos DEFAULTVALUES;
possvel incluir linhas com base em uma consulta SQL! criando novos produtos
INSERTINTOprodutos SELECTid+10,initcap(des), (random()*10)::numeric(10,2) FROMtabela;
dica: execute antes somente o SELECT
aumentando a populao
INSERTINTObio SELECTgenerate_series(1,10);
a tabela duplicada a cada execuo
97
INSERTINTObioSELECT*FROMbio;
98
possvel criar uma tabela j populada com base em uma consulta SQL! criando uma tabela com parte dos boletos
SELECTid,cliente,dthr,valor INTObol_min a tabela de FROMboletos destino pode ser temporria WHEREdummy<10;
os campos da nova tabela tm o mesmo tipo de dados dos que vm da consulta ateno: chaves primrias e ndices no so criados com essa sintaxe!
99
100
til para a exportao rpida de todas as linhas de uma determinada tabela copiando para o terminal
COPYprodutosTOstdout;
101
$psqlhscelepar05480p5432\ cursopgsa_cursopg<impcsv.sql
102
103
para remover todas as linhas da tabela de uma forma mais rpida, use o TRUNCATE
TRUNCATEfilmes; TRUNCATEfilmes,distribuidores; TRUNCATEfilmesCASCADE;
esvaziar em cascata
105
aumente em 5% o saldo das contas cuja identificao seja um nmero mpar exclua, com um s comando, as contas cujo nmero esteja presente na tabela t2 (campo num)
106
aumente o nmero de linhas da tabela bio para cerca de 1 milho execute a instruo a seguir
SELECTcount(1)asqtd,val FROMbioGROUPBYvalORDERBY2;
Controle de transaes
exclua somente os registros cujo campo val seja igual a 2, da maneira mais rpida possvel dica: use os comandos SELECT..INTO, TRUNCATE e INSERT INTO..SELECT
107
Atomicidade
transao inseparvel - tudo ou nada a transao garante estado final consistente transaes no so afetadas por mudanas ocorridas em transaes concorrentes ao finalizar uma transao com o COMMIT, as alteraes so permanentes
Consistncia
Isolamento
mltiplas verses para cada linha minimiza conteno por lock para permitir desempenho razovel em ambientes com muitos usurios simultneos
110
Durabilidade
109
cada transao v uma foto do banco de dados (uma verso) como era quando ele iniciou, independente do que as transaes concorrentes estejam fazendo leitura no bloqueia escrita escrita no bloqueia leitura o MVCC torna possvel o backup a quente com consistncia
111
uma transao agrupa diversas operaes em uma nica operao atmica o resultado da transao tudo ou nada
BEGIN; UPDATEcontas SETsaldo=saldo+100.00 WHEREid=2588; UPDATEcontas SETsaldo=saldo100.00 WHEREid=7534; COMMIT;
112
uma transao
um savepoint uma marca especial dentro de uma transao que permite com que as instrues possam ser desfeitas (rollback) parcialmente na transao
BEGIN; UPDATEcontasSETsaldo=saldo+100.00WHEREid=2588; SAVEPOINToperacao_credito; UPDATEcontasSETsaldo=saldo100.00WHEREid=7534; ROLLBACKTOoperacao_credito;
ops, conta errada!
o padro SQL define quatro nveis de isolamento transacional em termos de trs fenmenos que devem ser prevenidos entre transaes concorrentes:
uma transao
dirty read: a transao l dados escritos por uma transao concorrente no-finalizada nonrepeatable read: a transao rel dados que previamente j obteve e percebe que estes foram modificados por outra transao phantom read: a transao reexecuta uma consulta SQL e as linhas resultantes mudam por causa de alteraes de outra transao
UPDATEcontasSETsaldo=saldo100.00WHEREid=7584; COMMIT;
113
114
no PostgreSQL pode ser requerido um dos 4 tipos de isolamento padro SQL, sendo que internamente existem apenas 2 nveis
Nvel de Isolamento Read uncommitted Read committed Repeatable read Serializable
115
o nvel default do PostgreSQL cada comando inicia com um snapshot com todas as modificaes feitas at o instante, e subseqentes comandos na mesma transao vero os efeitos das transaes concorrentes que finalizaram modo adequado para a maioria das aplicaes, sendo rpido e simples de usar para aplicaes com consultas e atualizaes complexas preciso utilizar um nvel de isolamento mais rigoroso
116
O nvel serializable
o nvel de isolamento mais restritivo emula execuo de transaes de modo serial, como se estas tivessem sido rodadas uma aps a outra, no de modo concorrente a transao nunca v dados no efetivados ou alteraes efetuadas por outras transaes concorrentes durante a execuo da transao sucessivas consultas dentro de uma transao vem o mesmo resultado
117
existem diversos modos de bloqueio (lock) para controlar o acesso concorrente dos dados nas tabelas as instrues SQL automaticamente adquirem nveis de bloqueio adequados para garantir a integridade dos objetos nveis de bloqueio incluem: de tabela, de linha, deadlocks e consultivo (advisory) para visualizar os bloqueios ocorrendo no servidor, utilize a viso pg_locks
118
Transaes Exerccio
para proteger de transaes concorrentes uma linha ou uma tabela inteira, podem ser usadas as clusulas SELECT FOR UPDATE SHARE, ou LOCK TABLE
BEGIN; SELECTsaldoFROMcontas WHEREid=2588FORUPDATE; ... UPDATEcontas SETsaldo=novo_valorWHEREid=2588; COMMIT;
119
terminal 1
BEGIN; SELECT*FROMcontas WHEREid=10; UPDATEcontas SETsaldo=0.0 WHEREid=10; COMMIT; UPDATEcontas SETsaldo=5.0 WHEREid=10;
tempo
terminal 2
SHOWdefault_ transaction_isolation; BEGIN; SELECT*FROMcontas WHEREid=10; SELECT*FROMcontas WHEREid=10 FORUPDATE; DELETEFROMcontas; ROLLBACK;
120
lock?
lock?
Os esquemas (schemas)
fornecem meios de separar os objetos dentro do banco de dados, tal como diretrios em uma hierarquia de arquivos (mas com apenas um nvel) esquemas so usados basicamente para:
agrupar de modo lgico os objetos de um banco de dados implantar a segurana dos objetos de acordo com os usurios ou papis (roles) evitar colises de nomes em bancos de dados grandes
122
Manipulando esquemas
criando um esquema
CREATESCHEMAhistorico;
BD-1
BD-2
BD-3
BD-4
vantagens:
disco a
disco b
disco c
granularidade a nvel de objeto aumenta o desempenho e controle sobre a utilizao de cada disco rgido maior flexibilidade para gerenciar espao
124
Os ndices (indexes)
ndices so estruturas de dados que visam aumentar o desempenho do banco de dados um ndice garante eficincia na recuperao de registros especficos de uma tabela em operaes de consulta analogia: ndices de um livro-texto em contrapartida, ndices podem causar um overhead no sistema como um todo, e por isso devem ser criados com cautela
125
126
Manipulando ndices
As vises (views)
uma viso encapsula uma consulta SQL atravs de uma tabela virtual tem como objetivos:
esconder detalhes das tabelas reduzir complexidade das consultas aumentar a segurana atravs de acesso seletivo aos dados
127
Manipulando vises
As seqncias (sequences)
as seqncias so objetos geradores de nmero inteiro estruturalmente so tabelas que possuem apenas uma linha e diversos campos de controle podem ser temporrias ou materializadas para consultar ou atualizar o nmero atual so usadas funes especficas usar seqncia em tabelas pode fazer com que buracos sejam criados nelas
130
As restries (constraints)
enquanto o tipo de uma coluna define o formato de dado aceitvel nela; as restries permitem maior flexibilidade na verificao dos dados tipos de restries suportadas:
as restries de chave estrangeira podem ser adiveis (deferred), o que faz com que a verificao de integridade referencial seja somente no final da transao isso resolve o problema clssico da referncia cclica entre duas tabelas (ex: funcionrios e departamento) PostgreSQL e Oracle so um dos poucos SGBDs que suportam deferred constraints em outros SGBDs, usam-se triggers
132
check: verificao de acordo com expresso not null: obrigatoriedade de preenchimento unique: exclusividade do valor na tabela primary key: chave primria (unique+not null) foreign key: chave estrangeira
131
Os disparadores (triggers)
Blobs no PostgreSQL
um disparador (trigger) faz com que uma funo seja executada quando determinado evento (ie: instruo DML) ocorre em uma tabela pode ser definido para ser executado antes ou depois de um INSERT, UPDATE ou DELETE, pela instruo (statement) ou por linha alterada a funo de trigger deve ser definida em uma das disponveis linguagens procedurais instaladas no banco
o padro SQL define o tipo BLOB (binary large object) a fim de armazenar dados binrios como imagens, sons e arquivos em geral o PostgreSQL fornece o tipo de dados bytea (byte array) para esse tipo de aplicao internamente, o tipo bytea tratado como uma cadeia de octetos (binary string), e tem comprimento varivel
134
133
funes de agregao
COUNT(), SUM(), MAX() e MIN() +-*/<>=~!@#%^&|`? reutilizao de restries de verificao converso entre codificaes (ex: UTF-8)
135
operadores
domnios
converses
136
inclua algumas linhas nas duas tabelas, atentando integridade referencial entre departamentos e funcionrios
137
138
inclua, usando o programa GravarBlob, alguns arquivos no campo foto da tabela funcionarios use o programa LerBlob e o psql para verificar se os arquivos foram gravados
140
privateConnectionconn; privatestaticConexaoinstancia; publicConnectiongetConnection()throwsSQLException{ DriverManager.registerDriver(neworg.postgresql.Driver()); Connectionconn=DriverManager.getConnection( "jdbc:postgresql://scelepar05480:5432/cursopg", "sa_cursopg","********"); returnconn; } publicstaticConexaogetInstance(){ if(instancia==null) instancia=newConexao(); returninstancia; } ... }
... publicvoidgravar(intid,Stringarq)throwsException{ Filefile=newFile(arq); InputStreamfis=newFileInputStream(file); PreparedStatementps=conexao.prepareStatement( "UPDATEfuncionariosSETfoto=?WHEREid=?"); ps.setBinaryStream(1,fis,(int)file.length()); ps.setInt(2,id); ps.executeUpdate(); ps.close(); fis.close(); } }
classe de uso comum que registra o driver JDBC do PostgreSQL e efetua a conexo com o banco de dados
141
classe que recebe como argumentos a identificao do funcionrio e o caminho absoluto de um arquivo, gravando-o no banco de dados
142
143
o PostgreSQL foi projetado para ser facilmente extensvel, o que faz com que seus add-ons funcionem tal como se fossem features incorporadas no core do sistema o diretrio contrib, que acompanha o cdigo-fonte do PostgreSQL, contm um grande nmero de extenses para o SGBD no contrib esto as extenses de grande interesse aos usurios, mas no a ponto de serem incorporadas ao core do PostgreSQL 145
ferramentas de converso
dbf2pg, ora2pg ltree, isbn_issn, chkpass tsearch2, btree_gist, pg_trgm pgbench, dblink, xml2, earthdistance, fuzzystrmatch, pgcrypto, spi, oid2name, admin81, reindexdb
outras extenses
146
O mdulo pg_bench
Usando o pg_bench
pgbench um programa que executa testes de benchmark no padro TPC-B uma aplicao cliente do PostgreSQL e roda apenas com este SGBD ele efetua diversas transaes pequenas e simples incluindo operaes SELECT, UPDATE e INSERT, e ao final calcula o nmero de transaes completadas com sucesso por unidade de tempo as transaes por segundo (tps)
147
O mdulo dblink
dblink um mdulo que permite consultas em bancos de dados distintos (mesmo em outro servidor) utilizando chamadas de funes as consultas limitam-se a servidores de banco de dados PostgreSQL prov funes para conexo, retorno de linhas, cursores e execuo de instrues para acessar dados de outros SGBDs existem outros add-ons, como o DBI-Link
149
de conexo
de cursores
de execuo
miscelneas
de consulta
150
Instalando o dblink
Usando o dblink
152
Exerccio 1 - pgbench
Exerccio 2 - dblink
ateno: execute as instrues a seguir no seu servidor PostgreSQL local! mude para o usurio postgres crie um banco de dados para o teste no banco de dados, inicialize a base do pgbench com escala 10 (100 mil linhas) execute os seguintes testes no pgbench:
crie uma viso no seu banco de dados e esquema que consulte a tabela de pases em outro banco de dados PostgreSQL informaes para conexo:
servidor: scelepar05480.celepar.parana porta: 5432 banco: cursopg usurio: sa_cursopg senha: ***** esquema: cep
154
a) 10 usurios com 10 transaes cada b) 10 usurios com 100 transaes cada c) 100 usurios com 10 transaes cada
153
Bibliografia
PostgreSQL 8.4 Documentation www.postgresql.org/docs www.pgadmin.org Luciano Mittmann mittmann@gmail.com