Sunteți pe pagina 1din 27

Livros

GerenciadeBancoSudarshanSilbershart
ElmasriNavathe
SQLmagazine

InstalandooFirebirdnoUbuntu
http://www.novasdodia.com/saibacomoconfigurareinstalarofirebirdnoubuntu/
http://www.evandrosiqueira.com.br/2011/03/instalandoofirebird25finalno.html
http://montebugnoli.blogspot.com.br/2012/01/firebirdconhecendoassubqueriesno.html
http://www.l9web.com.br/blog/?p=22
http://www.devmedia.com.br/subqueriespartei/2835
http://www.devmedia.com.br/subquerydemultiplascolunas/17377

1.

Flamerobin: O Flamerobin, para quem no conhece, uma ferramenta open source para
administrao de bancos de dados Firebird em ambiente Linux, disponvel nos repositrios do
Ubuntu. Voc pode installa atravs do synaptic, central de programas do Ubuntu, ou mesmo
atravsdoaptget.Nestaltimaopo,bastaentrarnoterminaledigitar:

sudoaptgetinstallflamerobin

http://www.evandrosiqueira.com.br/2011/03/instalandoofirebird25finalno.html

Comparaes

eletemquepercorreratabeladequalquermaneira,quandoooremcimadomesmoatributo,podeusar
ele2vezes

sointeressantesecolocaIndexnos2atributo,temqueterindexnasduas

quantotemORemvariosatributos,setiverIndexnos2,tantofazotempodeexecuoquaseomesmo
comousodeIndexnos2atributo

ComparaoentreUNIONeORdaparaperceberquesemIndexounionbemmaislento,esemindexo
ORvarreumavez,pqaplicaas2condies,ecom2IndexsemelhantedeumIndexsobre1atributo

Postgree
Instalandoopostgreenolinux
http://www.ifnottruethenfalse.com/2012/installpostgresqlonfedoracentosredhatrhel/

http://susviela.wordpress.com/2013/04/11/instalandopostgresqlnoubuntu1210/

postgree9.2
mysqlworkbench

tabelaacossiativa
1tabelas1flagcomostatus

Atividadesaula(SQL)

1Criarumaconsultaparamostrarasatividadesqueconstamemprojetos
cujadatadeinicioprevistoestentre010213e300413mostraronomedoclientedoprojeto,
nomeedatadeinicioprevistodoprojetoeonomedaatividade,ordenarpeladatadeinicioprev

nomecliente
nomeprojeto
nomeatividade
orderbyprojeto.datainiprev
cliente.codcli=projeto.codcli
atividade.idproj
projeto.id

2Criarumaconsultaparamostrarasatividadeseosparticipantesdestas,mostraras
atividadeseosparticipantesdestas,mostraronomedaatividadeadescrio,dafaseda
atividade,nomedoparticipante,elaborarduasversesnaprimeirasomenteatividadesque
possuemparticipantesdevemaparecer,hsegundatodasasatividadesdevemconstar

nomeatividade
participantenome
participanteativ.codpess
pessoa.codpess
pessoa.nome
atividade.codfase
fase.codfase

3Criarumaconsultaparatotalizarocustorealdasatividadesparacadaprojeto,mostraroide
onomedoprojeto,asomaeamdiadocustorealdasatividades

atividade.custoreal,
projeto.id,projeto.nome

4Mostraralistadepessoasqueparciparamdealgumaatividadequetemdatadeiniciopresta
nomsdeabrilde2013etambenparticiparamdealgumaatividadeemagostode2013,exibiro
nome,endereodapessoa.

participanteativ.idproj=projeto.idproj
participanteativ.codpess=pessoa.codpess

ExercicioElaboraroplanonootimizadoeaversocomotimizao
dasconsultas

SELECTa.nome,f.nome,o.datacor,o.descricao
FROMatividadea,fasef,ocorrenciaativo
WHEREa.codfase=f.codfaseANDa.idproj=
o.idprojANDa.sequencia=o.sequencia
ANDo.dataocorBETWEEN'01/08/13'AND'30/08/13'

SELECTc.nome,COUNT(p.id),AVG(p.custoest)
FROMclientec,projetop
WHEREc.codcli=p.codcliANDc.codcid=10
ANDp.datainiprev<='31/12/12'
GROUPBYc.nome

TriggerPostGreeSQL
http://tas.eti.br/blog/2011/12/manipulandotriggersnopPGBDostgresql/

Criarindiceemcamposboleanosmelhoraaotimizao

consulta
SELECTo.idproj,o.sequencia,o.dataocor
FROMocorrenciaativo
WHEREo.dataocorBETWEEN'01/01/13'
AND'31/12/13'

criandoindex
CREATEINDEXidataocor_ocorON
ocorrenciaativ(dataocor)

SELECTo.idproj,o.sequencia,o.dataocor,a.nome,a.datainiprev,o.descricao
FROMocorrenciaativo,atividadea
WHEREo.dataocorBETWEEN'01/01/13'

AND'31/12/13'ANDa.idproj=o.idprojAND
a.sequencia=o.sequencia

emqueordementraosdadosdaoperaodejoinparaocorrencia
porDataporqueestalendooindicepeladata

SELECTo.idproj,o.sequencia,o.dataocor,a.nome,a.datainiprev
FROMocorrenciaativo,atividadea
WHEREo.dataocorBETWEEN'01/01/13'
AND'31/12/13'ANDa.idproj=o.idprojAND
a.sequencia=o.sequencia
anda.datainiprevBETWEEN'01/12/12'
AND'31/08/14'
CREATEINDEXidatainiprev_ativON
atividade(datainiprev)

CREATEINDEXididprojseq_ocorON
ocorrenciaativ(idproj,sequencia)

SELECTo.idproj,o.sequencia,o.dataocor,a.nome,a.datainiprev
FROMocorrenciaativo,atividadea
WHEREo.dataocorBETWEEN'01/01/13'
AND'31/12/13'ANDa.idproj=o.idprojAND
a.sequencia=o.sequencia
anda.datainiprevBETWEEN'01/12/12'
AND'31/01/14'

Maisconsultasetestes

SELECTid,nome,datainiprev,datainireal
FROMprojeto
WHEREdatainiprevBETWEEN'01/01/13'AND'30/06/13'
OR
datainiprevBETWEEN'01/01/12'AND'30/06/12'

CREATEINDEXidatainiprev_projONprojeto(datainiprev)


DROPINDEXidatainiprev_proj

SELECTid,nome,datainiprev,datainireal
FROMprojeto
WHEREdatainiprevBETWEEN'01/01/13'AND'30/06/13'
UNION
SELECTid,nome,datainiprev,datainireal
FROMprojeto
WHEREdatainiprevBETWEEN'01/01/12'AND'30/06/12'

ConsultacomIndexeUNIONficammaisrapida

SELECTid,nome,datainiprev,datainireal
FROMprojeto
WHEREdatainiprevBETWEEN'01/01/13'AND'30/06/13'
OR
datainirealBETWEEN'01/01/13'AND'30/06/13'

Estudoprova

ndices

OqueumndiceCluster?eparaquesousados?
oquedefineaordemdatabela,Usamosndicedemodogeral
paraacelerarconsultas,ondiceclusterdevesercriadosobreachavenica,define
aestruturadearmazenamentodedados

oqueHeapfile?
aorganizaomaissimplesdeumatabelaouarquivo

Oqueumndiceprimario?
Quandoumndicetemcomochavedebuscaachaveprimariadoarquivo
chamadodeindiceprimrio

Oqueumindicesecundrio?
soosdemaisndices,ndicesmultiniveissocomunsemindicessecundarios


Indicemultinveis
noscasosemqueumindicedensotornasemuitograndeinteressantecriarumindicemenor
queesparso

Oqueumindicedenso?
Umregistrodeindiceapareceparacadavalordachavedebusca
ouregistronoarquivo,contemumvalornachavedebuscaeumponteiro
paraoarquivoouestruturaauxiliar

Comofeitoopreenchimentodoindice?
ndicesprecisamseratualizadospossueminformaorelevamente
processodeinseroeremoo

Oqueumindiceesparso?
Registrosdendicesocriadosapenasparaalgunsvalores,paralocalizar
umregistroencontrasseumvalormenorouigualachavequeestasendoprocurada
aleiturainiciadaapartirdesteregistroeosponteirossoseguidosatqueoregistroseje
encontrado

Filfactor
Defineoespaodisponivelparaainsersoderegistros

Tabelahash
Hashing(espalhamento)otermoempregadoparadesignar
algumafunoquetransformaumachaveemendereodoarquivo

tecnicadehashpermiteoacessomuitomaisrapidodoqueosequencial
eemdiversoscasospodesercomparadoaousodeindice,atecnicaqueoarquivodividido
emseesmenoreschamadadebuckets(depositos)

ParaqueusadoaestruturadearquivosemarvoresB+ouB?
Soaformacomercialmaislargamenteutlizadaparamanteraeficincia
independentedaremooeinserodedados

ArvoreB+
Mantemautomaticamentetantosniveisdeindicequantosejamapriopriados
paraotamanhodoarquivoqueestasendoindexado

ArvoreB+
Gerenciaroespaodosblocosqueutilizamdemodoquecadablocofique
entremeiocheioecompletamentecheio


Views

Oqueumaview?
umaconsultasqlgravadanabasededados,gravadoosqldaconsulta,
reunedadosdediversastabelasouatmesmodeviews,osdadosnoexistemfisicamenteda
mesmaformaqueumatabelasemprequeumavisoabertaouacessada
ocodigosqlcorrespondenteexecutado,visosotambemchamadasdetabelaslogicas

possuemasseguintesrestriesparaacriao:
noincluiremclausulasORDERBY,noreferenciaroutratabelatemporaria
maximode250colunas,possibilidadedecriarcolunasqueresultamdealgumafuno(Ex:
SUM)
referenciartabelasdeummesmobancodedados

Provabasesobreveiwseaspectostemporais

Conceitueavisoviewemumbancodedadosrelacional,quaisosprincipaisobjetivos
decriarumaview?comoaescritadeumaview?,quantastabelaspodemserusadas
emumaview?deumexemplodeview,sobreastabelastemporarias,descrevaseus
conceitosbasicos?eumcasoquesepodeusarumatabelatemporaria

Aviewapscriadapodereceberconsultascomoqualqueroutratabelanobancodedadosa
diferenaqueosdadosnumaviewnoexistemfisicamente,osdadosdaviewesto
armazenadosemoutrastabelasdobancodedadosdasquaisaviewdepende,porissoas
viewssodenominadastabelaslogicas
acriaodaviewpossuisuasvantagensseguranaquandosecombinaousodeviewcomo
controledeacesso
ousodeviewspodetornasasconsultasmaissimples,poisvocpodelimitaroacessodos
atributosdastabelasfisicasaocriar
umaviewpodeserresultadodejoinouconsultasmaiscomplexasfacilitandoasconsultas
queusamascondiesdaview(menosSqlnecessario)umaviewpodeconterdadodeuma
oumaistabelassimplificandoconsultasporoutroladoviewsqueusammaisdeumatabela
nosoatualizaveisnecessarioquecadacolunadaview(registroeatributo)correspondama
umalinhaeumacolunanatabeladeorigem,respectivamente

Tabelastemporaissooqueonomedizsocriadasemtempodeexecuoedescartadas

assimqueaexecusotermina

Exemplo:selecionaronomedosfuncionarioseseusgerentes(apenasfuncionarioscom
gerentes)

temp=select*fromfuncionarios
selectfuncionario.nomeasnomefunc,temp.nome
asnomegerentefromfuncionario,tempwherefuncionario.id_gerente=tempo.id_func

Esteumexemploquesepodeusarumatabelatemporaria,vaifuncionarmaistambem
poderiaseusaraliasepararesolveroproblema

Oquesoaspectostemporais?
Representaascaracteristicasdinamicasdasaplicaeseainteraotemporalentrediferentes
processosassimamodelagemtemporalseconcentrapropriedadesestaticamantidoemtoda
aexistencia,propriedadesdinamicasvaloresquemudamnodecorrerdotempo

noodetempo?
Anooconsisteemdatas,periodos,duraodevalidadedeinformaoeintervalotemporal
trabalhacomumalinhadotempoondeamedidadotempodefinidapelosistema(minuto,dia,
ano)

Representaotemporalinformaestemporais:
valorestemporais,restriestemporais,
caracteristicadeevoluotemporal

aimportanciadaespecificaodeterminadastarefaspodemapresentarprcondies
asuaexecuoatravesdasrestriestemporais

exemplo:
datadeadmisso
conformaatabelaufircalculartalimpostosepassar
dodia25processarjurosdemora,funcionarionopodeterhoraextraduranteasferias

Relaestemporais

Relaoinstantaneanoincorporatempodevalidadeedetransao

Relaodetempodetransaoincorporasomenteotempodetransao

Relaodetempodevalidadeincorporasomenteotempodevalidade

Relaobitemporalincorporaotempodevalidadeetambemodetransao

Conceitosparaaespecificaodeaspectostemporais?
Fixaduraotemporalindependendedocontextodadefinicao
ex:hora=60minutos

Variavelocontextodefinesuaequivalencia
Ex:mspodeser28,29,30,31dias

Armazenamentodedados

Componentes:
gerenciadordedadosarmazenados,gerenciadordebuffer,analisadorecompiladordeconsultas

Organizaofisica:
arquivodedados:bancodedadoseregistros
estruturadedadosquefazempartedaimplementaodosistemafisico
dicionariodedados,armazenainformaosobreaestruturadobanco,restries
indicepermitemoacessorapidoaitemdedadossegundovaloresparticulares
dadosestaticosinformaosobreosdadosarmazenadosnoBD,aestrategiapara
armazenarerecuperarosdadosdeveconsideraraorganizaodoarquivo(tamanhofixo,
variavel,eaformadeacessoaosregistros(sequencial,direta,indexada)

MetadadosDescriodedados,dadosestaticostabelataltemxregistros,campotal,tantos
registros

Buscanumatabeladehash?

Otimizaodeconsultasregrasgeraisdaotimizao
Executaroperaodeseleoomaiscedopossivel
combinarseleescomprodutocartesiano,deformaaproduzirumajunonatural
aplicaroperaesdeprojeodeformaantecipada,osunicosatributosquedevemaparecer
soaquelesqueaparecemnoresultadoounecessariosparaoprocessamentodeconsultas
subsequentes

VR(a)numerodevaloresdistintosdoatributoaideR

Otimizaodeconsultaajudanoque?Oque?paraqueserve?queindicedevousar?
oprocessodeselecionaroplanodeavaliaodeconsultamaiseficienteparaumaconsulta
comoonomedizserveparaotimizarotempodeexecusodeumaconsulta,tornandoelamais

rapidaeeficiente

oquecardinalidade?
omaximodetuplasnoresultado

http://imasters.com.br/artigo/14624/mysql/otimizacaodeconsultasmysqlparte01/

Algoritmosparajoinasdiferenas?

Lopsaninhadosnestedloopsjoins
Eficientesquandooutertablepequena
indiceclusterizadosparaacessarinnertable
poucaspaginasacessadas

Ordenao/intercalaomergejoin
Eficientequandosoacessadasmuitaslinhasdeumatabela
noexistemindexadequados
atributosdejunocommuitosvaloresrepetidos
ordenaporumatributocomum

HashingHashjoin
Hashtablepequenacabendoemmemoria
oatributodejunodamenortabelaunico
noexistemindices

http://blog.newtonpaiva.br/pos/wpcontent/uploads/2013/02/E4SI33.pdf

Acanalizao(pipeline)umaoperaonaqual
oresultadodeumoperadorconstrudona
memriaprincipalerepassadoaoutrooperador


Canalizaoumasequenciadeoperaesalgebricasexecutadanumunicopasso

Materializao
cadaoperaoalgebricamaterializadaemumarelaotemporaria,situaomaiscomum
emprocessamentodeconsultas,podegerarumvolumegrandededadosemdisco

Materializaooucanalizaosoformadasdeestabeleceraligaooucomunicaoentreas
operaes

http://www.inf.pucrio.br/~rogcosta/inf1341/bd3ConsultasDistribuidas.pdf

Recomendoparaentenderondeequandocriarndices
http://imasters.com.br/artigo/14624/mysql/otimizacaodeconsultasmysqlparte01/
http://imasters.com.br/artigo/14684/mysql/otimizacaodeconsultasmysqlparte02/
http://imasters.com.br/artigo/14768/mysql/otimizacaodeconsultasmysqlparte03/

http://www.devmedia.com.br/artigosqlmagazine1otimizacaodecomandossql/6926

http://www.webgoal.com.br/comootimizarconsultasnomysql/

Processamentodeconsultas(planodeexecuso)
existemdoistiposbasicosdeoperao:
Metodosdeacesso(varredurasequenciaiseindexadas)
Outraoperaes(joins,union,eliminaodeduplicatas

LeiturasequencialLeituraseqencialdetodasaslinhade
umatabela
Varreduraindexadaleituradosdadosatravsdeumoumaisindices

Arvores
Umaarvorebinariatemquepercorreinteira

Arvoreb+maiorvantagemnoprecisapercorreiinteira,consegueacessaumindicemaisrapido
desvantagemmanteraintegridadequeobalanceamento

Materializaonootimizado
Canalisootimizado

29/10correoecomparao

b:aobuscarvaloresnaarvorecomparasevaloresdosn,menosresaesquerdaemaioresda
direita,tempodebuscamuitobom
b+:buscasequencial,semprecisarpercorreraarvore,nobnosepodefazerisso

indicesprimariossocontruidosdosatributosdachaveprimaria,noindicesrepetidos
indicessecundariossoosindisescriadosnosdemaiscamposoudemaischaves
clusterrepresentaaordemdosdadosdatabela,podeounoserchaveprimaria

Laoaninhado
laoaninhadoindexado
ordenaofuso
junsohash

2
createviewvtotset(codconta,somavalor)as
selectl.codconta,sum(l.valor)
fromlanamentol,contacontabilc
wherel.codconta=c.codconta
andl.datalancbetween'01/09/13'
and'30/09/13'andc.natureza='D'
groupbyl.codconta

createviewvtotago

selectc.descricao,va.somavabr,vs.somavalor
fromcontacontabilc,vtotsetvs,vtotago
wherec.codconta=vs.codconta
andva.codconta=c.codconta

3
createviewvlancmaior(codconta,codbem,datal,valor,descl)as
selectcodconta,codbem,datalanc,valor,descricao
fromlancamento
wherevalor=
(selectmax(valor)
fromlancamento)

wherevalor>=all

(selectvalor
fromlancamento)

selectv.valor,c.descricao,b.descricao
fromvlancmaiorv,bemb,contacontabilc
wherev.codconta=c.codconta
andv.codbem=b.codbem

CorreoAnotaoThiago

Prazo:2910
Manuscritocorreodasquestes
teoricaresumoelaborarumaresposta

correo/Reviso
at1,50
Comparao/Correo
TeoricaElaorararesposta
Ponteirosparavaloresintermediarios
1
Arvoresb+nosfolhatemvalorescompletosdoindice,nosniveisalterioresaparecemna
folha,vantagembuscasequencial,leiturasequencial
ArvoreBnoseconsegue,temquedesmembraaarvore,indicesprimariossoconstruidosa
partirdosatributosqueformamachaveprimaria,indicesquenohduplicaopoisserem
feitossobreachaveprimaria,indicessecundariossoindicesdesenvolvidospordemais
campos,nosopelachavecompleta,soconstruidospelachavedebusca,podehaverindice
secundariounico,emgeralnoelestemvaloresduplicados,exetoquandonumachave

indiceclusterrepresentaaordemdosdadosdatabela,podeounoserachaveprimaria,
feitopelachaveprimariamaisnonecessariamente

6referenteapartebancodedadosrelacional
Intervalodetempodeumadataatoutra,cadaatividadetemumaatividadexemhoras,
minutos,criarcamposnumericos,data,datahoraquerepresentemumtempoentreumadata
ououtra
podearmazenanotempoqueocorre,quandoatransaoocorreu,valoresquemudaram

Aspectossemoitemporalizaoaoinvezdearmazenaointervalo,desdetaldata,quanto
tempoapessoaestranaempresa,outraformaderepresentadadotemporal,desdequando
comeo,outraestrategia

temporalizaocompeltadetaldataattaldata


Lanamento10/10
sequenciaexisteparapoderlanarnumamesmadataemesmaconta,sepedeparaaltera
daformaquetaatabelaperde,porquenotemhistorico,podetrabalharcombancodedados
temporais,oucriarumatabelahistorico,fazendorelacionamento

Algoritmodejoins
Operadoresdejuno
laoalinhado
5
Algoritmosparaconsultas
junodetipohashprocessodeparticionamentoebusca,aplicaamesmasequencia

Viso
quandosefalaremtotal
2
CREATEVIEWvtotset(codconta,somavalor)AS
SELECTl.codconta,SUM(l.valor)
FROMlancamentol,contacontabilc
WHEREl.codconta=c.codconta
ANDl.datalancBETWEEN'01/09/13'
AND'30/09/13'ANDc.natureza='D'
GROUPBYl.codconta

CREATEVIEWvtotago(codconta,somavalor)AS
SELECTl.codconta,SUM(l.valor)
FROMlancamentol,contacontabilc
WHEREl.codconta=c.codconta
ANDl.datalancBETWEEN'01/08/13'
AND'31/08/13'ANDc.natureza='D'
GROUPBYl.codconta

SELECTc.descricao,va.somavalor,vs.somavalor
FROMcontacontabilc,vtotsetvs
vtotagova
WHEREc.codconta=vs.codconta
ANDva.codconta=c.codconta
ORDERBYc.descricao

3
CEATEVIEWvlancmaior(codconta,codbem,datal,valorl,desc)
ASSELECTcodconta,codbem,datalanc,valor,descricao
FROMlancamento

WHEREvalor=
(selectMAX(valor)
FROMlancamento)

WHEREvalor>=ALL
(SELECTVALORFROMlancamento)

SELECTv.valor,c.descricao,b.descricao
FROMvlancmaiorv,bemb,
contabilc
WHEREv.codconta=c.codconta
ANDv.codbem=b.codbem

TRIGGER

OLD(record)Permitequeacesseosvaloresdeumregistrovelho

NEW(record)osvaloresdoinsert,enoupdateosdois

triggers

//====================================================================
==============================================
criarumatriggerpararegistrarumhistoricodealteraesnasdatasdeinicioefimprevistopar
cadaprojeto.
Atriggerdeveverificarseumadestasfoialteradae,emcasopositivo,gerarumregistrocomos
valores
anterioresemumatabelachamadahist_datas_proj.Atabeladeveraterosseguintescampos:
id,datainiprev,datafimprev,
dataalt,horaalt.Gravarnadataehoradaalteraoedataehoraatualdosistema.
//====================================================================
==============================================

createtablehist_datas_proj(
idintnotnull,
datainiprevdate,
datafimprevdate,
dataaltdate,
horaalttime,
primarykey(id,dataalt,horaalt)
)

TrabalhoFirebirdInformaes

IndicesnoFirebird
http://blog.tecsystem.com.br/index.php/indicesperformancebancosdadosfirebird/

ForumFirebaseFirebird
http://www.firebase.com.br/fb/artigo.php?id=1292

EntendendooLixonoBD
http://www.firebase.com.br/fb/artigo.php?id=2047

http://www.firebase.com.br/fb/artigo.php?id=2388(ApresentaoMGA)

MGA(MultiGenerationalArchitecture).

ArquiteturaMultiGeracional(MGA)
8out.2011...NoexistemdocumentossobrecomoaMGA(MultigenerationalArchitecture)
funciona.Nestedocumentotentaremosdescreveladaforma...
www.firebase.com.br/fb/artigo.php?id=2388

Isolamentostransacionaiseseusefeitos
24abr.2012...graasarquiteturaMGA(MultiGenerationalArchitecture),quedispensaoslogs
detransaes.Infelizmente,muitosdesenvolvedoresno...
www.firebase.com.br/fb/artigo.php?id=2461

Entendendoostiposeconfiguraesdastransaes
27nov.2002...Entreosbancosdedadosrelacionais,somenteoDB2eoInformixsuportam
essemodo.MesmoqueemteoriaoIBpossausarsuaMGA(Multi...
www.firebase.com.br/fb/artigo.php?id=232

EntendendoseuBDcomIBAnalyst

Comondicesruinspodemarruinaraperformancede
pesquisas

http://www.firebase.com.br/fb/artigo.php?id=2366
Planodeotimizao
http://www.firebase.com.br/fb/artigo.php?id=148

Trigger,Procedure
http://www.firebase.com.br/fb/artigo.php?id=1292

Relatorio(Controledetransao)Entendosostiposdetransao

TcnicasdeControledeConcorrncia
SETISOLATIONLEVELTecnicadecontroledeconcorrencia,podeconfiguradentroda
transaoumreaduncomitted

Firebird3
http://www.firebase.com.br/fb/artigo.php?id=2376

Controledetransao
http://www.devmedia.com.br/artigosqlmagazine15firebirdessaeminhaescolhaeasua/570
8

DiferenasentreoPOSTGREEeofirebird
http://www.zemoleza.com.br/carreiras/42188principaiscaracteristicaspostgresqlfirebirdmysq
lsqliteemssql.html#gsc.tab=0

ReservandoEspao(Apresentao)pagina286

TESTETrabalho
Rodar2transaessimultaneas
ExecutaumprocessodaumBgintransactioneumcommit
enquantoaprimeiranoacabaasegundanopodelr
Estaalterandoumregistrodeuupdate,insert,aoutratransaotentadaselectouupdateela
nopodeconseguir,elatemqueficaparada
Commitexecutarvaiterminaaeentraaoutra

CAINAPROVA
interpretaralinhadetransaodotempo
Transaopostegrada
AlgoritmoCheckPoint

Controledeconcorrncia
Atualizaperdidamuitoimportante

ApresentaoTrabalho

(Problemas)3a4minutos525minutos

SIMULATEMPOCronometraotempo

DescrioSGBDFirebird

Resultadodeconsulta(algumasquerysnossaetambemaotimizaodasmesmas)

FaladalinguagememostraosexemploscomparaalinguagemcomoPostGree,
ProcedureseTriggers

Transao
Controledeconcorrencia

Concluso

Resultadodeconsultasfizemosessaconsultacomesseobjetivo
oplanodeexecusotaaquiobeservamososseguintestempos,
levabastantetempocriamosumindicetal,melhoro,piorointerpretaoeresultados10
minutos

26ProvaGBD

Assuntos:

colocaqualobancoouPLSQLPOSTGREEVariosexemplosemaula
Procedures2a3
Triggers

2
Transaesinterpretagrafico,modificaoimediataepostegrada,dizeroquefazerem
cadacaso
Concorrencia
XML/ETL1explica,compara,eteroxigadade

EscreverprocedureeTrigger,dizeroqueelafaz,resolvercomatividadetalcoisa
seforparadesenvolvernoseragrande,partedeumcodigo,exemplosmenores

Sintaxe

Cursoresoqueso,dentrodatriggernew,old

IsolamentosTransacionaiis

Qualqueroperaofeitanofirebirdprecisarestarassociada
aumatransao,diferentedealgunsbancodedadosnofirebird
mesmoumsimplesselectprecisaterumatransaoassociada,graas
aarquiteturaMGA(MultiGenerationArchitecture)quedispensa
oslogdetransaes.
Nofirebirdummesmoregistropodetervariasversesexistindo
aomesmotempo,sendoassimtransaesconcorrentespodemenxergar
diferentesversesdeummesmoregistro,essasversespermanecemativas,enquanto
houvertransaesinteressadasnelas,sendoqueoespaoqueocupadopodeseraproveitado
apsa"coletadelixo".

TiposdeisolamentostransacionaisdoFirebird:

isc_Tpb_Consistency
Isolamentoquepodegerardeadlocksemumaaplicao,eledeveser
usadocomextremocuidado,eleraramenteusado

isc_tpb_Concurrency
Isolamentousadonageraoderelatrios,ouemoperaes
demanipulaodedadosqueexigamconsistnciadasinformaes
(porexemploumaatualizaodesaldodeestoque)

isc_tpb_Read_Commited:
Isolamentousadoparaediodedados

Obs:ReadCommited+ReadOnlypodemserumaboaopopara
"lookups"emtabelasquenosofremmuitasalteraes,essacombinao
nobloqueiaacoletadelixodoservidorpoisatransaojiniciadaemumestadopr
commitado
Diferentedosoutrosmodosdeisolamentoquegarantemumavisoconsistentedas
informaesexistentenomomentoemqueatransaofoiinciada,sevocrodaraquery
diversasvezesmantendoamesmatransaoabertaosresultadosobtidospodemserdiferente

Selrumaversoderegistrodeincluiumblob,ealguem
alteraessaversoecommitaratransao,vocpodeobteraumerrodevidoacoletadelixo

isc_tpb_consistency:podecausarproblemasdeperformance,poistravatodasastabelas
acessadas,possivelmenteimpedindoqualqueracessoconcorrente.Esseisolamentodeveser
usadocomextremacautela,casocontrrio,podehaverumainundaodedeadlocksem
suasaplicaes.Eleraramenteutilizado.
isc_tpb_concurrency:ocentrododesigndoFirebird.Leiturasnobloqueiamescritas,escritas
nobloqueiamleituras,eambosmantmumavisoconsistentedobancodedados.Noteque
oFirebirdgaranteautomaticamentequeummesmoregistronosejaalteradoportransaes
concorrentes.Nocaso,quemalterouprimeirotemaprefernciaeoautordoconflitoreceber
umerrodedeadlock.
isc_tpb_read_committed+isc_tpb_rec_version+isc_tbp_read_only:geraresultados
inconsistenteseocasionalmentepodegerarumerronatentativadeleituradeblobs(*),mas
diferentedosoutrosmodos,nobloqueiaacoletadelixo,sendomaisapropriadapara
transaesquepermanecemabertasporlongosperodosdetempoequenoprecisam
manterumavisoconsistentedasinformaes.
isc_tpb_read_committeed+isc_tpb_rec_version:temamesmaperformanceda
isc_tpb_concurrency,masobtmresultadosinconsistentesamesmaquery,quando
executadaduasoumaisvezes,namesmatransao,podetrazerresultadosdiferentes(caso

essasinformaestenhamsidoalteradas/apagadasporoutrastransaescommitadasnesse
meiotempo).
isc_tpb_read_committed+isc_tpb_no_rec_version+isc_tpb_wait:maislentaqueosoutros
modos,poisesperaqueumaalteraosejacommitadaparaqueainformaopossaserlida,
aoinvsdeleraversocommitadamaisrecentedainformao.Comotodasasoutras
variantesdoisc_tpb_read_committed,noproduzresultadosconsistentes.Devesetercuidado
comousodessaconfigurao,poisseatransaoconcorrentequeestivergerandoaespera
demorarparaserencerrada(apessoafoialmoaredeixouatransaoaberta),ousurioque
gerouoconflitoterasensaoqueosistemaesttravado,quandonaverdadeeleest
esperandopelaoutratransaoserfinalizada.
isc_tpb_read_committed+isc_tpb_no_rec_version+isc_tpb_no_wait:podeproduzirinmeros
deadlocks,poissemprequealeituraencontrarumregistroqueestsendoalteradoporoutra
transaoaindanofinalizada,irretornarumerroimediatamente.

ArquiteturaMultiGeracional(MGA)
Aarquiturasignificaquepodeexistirmuitasversesdecadaregistronabasededados

Existemquatroestadosparaumatransao(doisbits=quatroestados)

1Active(Ativa)transaesaindaemexecuo
2Committedtransaofinalizadae"comitada"
3Rolledbacktransaofinalizadamaisdesfeita(rollback)
4InLimbo(Nolimbo)preparadas,maisaguardandoumCommit

Oservidorpossuimecanismosparaeliminarversesderegistrosdesnecessarias.este
mecanismochamadode"Cooperagegarbagecollection"(coletadelixocooperativa)

Controledeconcorncia

GarbageCollectioneSweep

Ofirebirdutilizaumsistemaotimistadecontroledeconcorrnciachamado
MGA(MultiGenerationalArchitecture)ouVersioning,essesistematrabalhacommultplas
versesderegistroparamanterumavisocorreta
dasinformaesnasdiferentestransaesquepodemestarativasaomesmotempo,epara
controlarasinformaesresultantesdeumcommit
ourollbackdetransaes

Quandoumaatualizao(update)ouremoo(delete)realizadanosregistrosdeumatabela,o
firebirdcriaumacopiatemporriadosregistros
(doregistrotodo

IsolamentosTransacionaiis

Qualqueroperaofeitanofirebirdprecisarestarassociada
aumatransao,diferentedealgunsbancodedadosnofirebird
mesmoumsimplesselectprecisaterumatransaoassociada,graas
aarquiteturaMGA(MultiGenerationArchitecture)quedispensa
oslogdetransaes.
Nofirebirdummesmoregistropodetervariasversesexistindo
aomesmotempo,sendoassimtransaesconcorrentespodemenxergar
diferentesversesdeummesmoregistro,essasversespermanecemativas,enquanto
houvertransaesinteressadasnelas,sendoqueoespaoqueocupadopodeseraproveitado
apsa"coletadelixo".

TiposdeisolamentostransacionaisdoFirebird:

isc_Tpb_Consistency
Isolamentoquepodegerardeadlocksemumaaplicao,eledeveser
usadocomextremocuidado,eleraramenteusado

isc_tpb_Concurrency
Isolamentousadonageraoderelatrios,ouemoperaes
demanipulaodedadosqueexigamconsistnciadasinformaes
(porexemploumaatualizaodesaldodeestoque)

isc_tpb_Read_Commited:
Isolamentousadoparaediodedados

Obs:ReadCommited+ReadOnlypodemserumaboaopopara
"lookups"emtabelasquenosofremmuitasalteraes,essacombinao
nobloqueiaacoletadelixodoservidorpoisatransaojiniciadaemumestadopr
commitado
Diferentedosoutrosmodosdeisolamentoquegarantemumavisoconsistentedas
informaesexistentenomomentoemqueatransaofoiinciada,sevocrodaraquery
diversasvezesmantendoamesmatransaoabertaosresultadosobtidospodemserdiferente

Selrumaversoderegistrodeincluiumblob,ealguem
alteraessaversoecommitaratransao,vocpodeobteraumerrodevidoacoletadelixo


isc_tpb_consistency:podecausarproblemasdeperformance,poistravatodasastabelas
acessadas,possivelmenteimpedindoqualqueracessoconcorrente.Esseisolamentodeveser
usadocomextremacautela,casocontrrio,podehaverumainundaodedeadlocksem
suasaplicaes.Eleraramenteutilizado.
isc_tpb_concurrency:ocentrododesigndoFirebird.Leiturasnobloqueiamescritas,escritas
nobloqueiamleituras,eambosmantmumavisoconsistentedobancodedados.Noteque
oFirebirdgaranteautomaticamentequeummesmoregistronosejaalteradoportransaes
concorrentes.Nocaso,quemalterouprimeirotemaprefernciaeoautordoconflitoreceber
umerrodedeadlock.
isc_tpb_read_committed+isc_tpb_rec_version+isc_tbp_read_only:geraresultados
inconsistenteseocasionalmentepodegerarumerronatentativadeleituradeblobs(*),mas
diferentedosoutrosmodos,nobloqueiaacoletadelixo,sendomaisapropriadapara
transaesquepermanecemabertasporlongosperodosdetempoequenoprecisam
manterumavisoconsistentedasinformaes.
isc_tpb_read_committeed+isc_tpb_rec_version:temamesmaperformanceda
isc_tpb_concurrency,masobtmresultadosinconsistentesamesmaquery,quando
executadaduasoumaisvezes,namesmatransao,podetrazerresultadosdiferentes(caso
essasinformaestenhamsidoalteradas/apagadasporoutrastransaescommitadasnesse
meiotempo).
isc_tpb_read_committed+isc_tpb_no_rec_version+isc_tpb_wait:maislentaqueosoutros
modos,poisesperaqueumaalteraosejacommitadaparaqueainformaopossaserlida,
aoinvsdeleraversocommitadamaisrecentedainformao.Comotodasasoutras
variantesdoisc_tpb_read_committed,noproduzresultadosconsistentes.Devesetercuidado
comousodessaconfigurao,poisseatransaoconcorrentequeestivergerandoaespera
demorarparaserencerrada(apessoafoialmoaredeixouatransaoaberta),ousurioque
gerouoconflitoterasensaoqueosistemaesttravado,quandonaverdadeeleest
esperandopelaoutratransaoserfinalizada.
isc_tpb_read_committed+isc_tpb_no_rec_version+isc_tpb_no_wait:podeproduzirinmeros
deadlocks,poissemprequealeituraencontrarumregistroqueestsendoalteradoporoutra
transaoaindanofinalizada,irretornarumerroimediatamente.

ArquiteturaMultiGeracional(MGA)
Aarquiturasignificaquepodeexistirmuitasversesdecadaregistronabasededados

Existemquatroestadosparaumatransao(doisbits=quatroestados)

1Active(Ativa)transaesaindaemexecuo
2Committedtransaofinalizadae"comitada"
3Rolledbacktransaofinalizadamaisdesfeita(rollback)
4InLimbo(Nolimbo)preparadas,maisaguardandoumCommit

Controledeconcorncia

GarbageCollectioneSweep

Ofirebirdutilizaumsistemaotimistadecontroledeconcorrnciachamado
MGA(MultiGenerationalArchitecture)ouVersioning,essesistematrabalhacommultplas
versesderegistroparamanterumavisocorreta
dasinformaesnasdiferentestransaesquepodemestarativasaomesmotempo,epara
controlarasinformaesresultantesdeumcommit
ourollbackdetransaes

Oservidorpossuimecanismosparaeliminarversesderegistrosdesnecessarias.este
mecanismochamadode"Cooperagegarbagecollection"(coletadelixocooperativa)

Osweepumalimpezadediscogeneralizadaexecutadanobancodedados

o Firebird mantm verses temporrias dos dados. A partir de um determinado


momento, esses registros temporrios no so mais necessrios. Mas eles
existem e ocupam espao dentro do arquivo do banco de dados. Dependendo do
nmero de acessos e operaes concorrentes sendo realizadas no BD, a
quantidade de lixo gerada pode fazer com que o arquivo do banco de dados
cresa rapidamente. O processo de Garbage Collection existe justamente para
identificar esses espaos que foram usados e que no so mais necessrios, e
marc-los como reaproveitveis
Exemplo - Registros apagados

MGApassos
Multi-Geracional significa que podem existir muitas verses de cada registro na base de dados. As verses
so criadas pelo engine da seguinte maneira:
Arquitetura
Fig. 1- Imagine que exista uma tabela com vrios registros, e que existe uma transao TR1 lendo um
registro.
Fig. 2 - Neste momento entra em jogo uma outra transao TR2. Ela pode (e vai) ler o mesmo registro.
Mas, se a TR2 modificar este registro com uma sentena de UPDATE,
Fig. 3 - o engine criar uma nova verso deste registro e o armazenar prximo ao registro original.
Fig. 4 - Uma vez que o cabealho de todos os registros e de suas verses possuem informao sobre a
transao que o criou, a visibilidade das verses so determinadas comparando os nmeros das transaes
(a que l com a que criou o registro)

Depois que o cabecalho l todos os registros comparado os numero das transaes que criou ou leu o
registro

Quandoumaatualizao(update)ouremoo(delete)realizadanosregistrosdeumatabela,o
firebirdcriaumacopiatemporriadosregistros

IsolamentosTransacionais
Qualqueroperaofeitanofirebirdprecisarestarassociada
aumatransao

IsolamentoConsistency
Isolamentoquepodegerardeadlocksemumaaplicao,eledeveser
usadocomextremocuidado,eleraramenteusado

isolamentoConcurrency
Isolamentousadonageraoderelatrios,ouemoperaes
demanipulaodedadosqueexigamconsistnciadasinformaes
(porexemploumaatualizaodesaldodeestoque)

IsolamentoReadCommited
Isolamentousadoparaediodedados

ACID
Atomicidade
Significaquetransaessoexecutadascomoumaunidade.oSGBDgarantequetodas
astransaessoexecutadasoudesfeitas

Consistencia
Obancoestaconsistente(integro)antesedepoisdatransao
porexemploapenasdadosvlidosforamgravados

Isolamento
Mltiplastransaessimultneasnoafetamumaasoutras

Durabilidade
Seumatransaoconfirmada(COMMIT)elaserapersistente

Exemplo:
Apsconcludaatransferenciaaenergiafalhaaoretornarosdadoscontinuamintegros
iguaisaomomentoanteriorafalha

Prova2

Questo1

Undo:DesfazerumaatualizaonoBD
Redo:RefazerumaatualizaonoBD

Imediata
Fazasgravaesdiretonobanco,casodefalhaaimediatatemquerefazerousenotivero
finaltemquedesfazer

Postegarda
Primeirogravanologdepoisdeautenticadogravanobanco,emcasodefalhatemquerefazer
squesenotiverofinalnofaznadaporquenuncafoigravadanobancoporqueafalha
constanolog

Imediata
T1Redoporqueeuseioinicioeofinalmaistemquereescreveporqueofinalestaapso
checkpoint

2
AtualizaoPerdidaUmatransaoT1gravaemumdadoatualizadoporumatransaoT0

LeiturasujaT0atualizaumdadoXoutrastransaesposteriormenteLemX,edepoisT0
falha

AnaliseinconsistenteT0atualizaumdadoXeoutratransaoconsultaovalorparaexecutar
umclculo(consulta)

LeiturafantasmaT0executaamesmaconsultamaisdeumavezemumatransao
resultandoemvaloresdiferentes

3
ACID
Atomicidade
Significaquetransaessoexecutadascomoumaunidade.oSGBDgarantequetodas
astransaessoexecutadasoudesfeitas
Consistncia
Obancoestaconsistente(integro)antesedepoisdatransao
porexemploapenasdadosvlidosforamgravados
Isolamento

Mltiplastransaessimultneasnoafetamumaasoutras
Durabilidade
Seumatransaoconfirmada(COMMIT)elaserapersistente

51.selecionanatabelaNFVenda,ProdNfasnotasemitidasnoperiodo
deemissaoquerecebidoporparametrodataIedataF.
AposefeitoumselectnamovEstondeocodprodenumerodanotasejamiguaisaos
retornadospeloprimeiroselect,casooretornosejaverdadeiro
eatualizadoaqtdecustoUni,valor,ondeocodprodenumerodanota,casosejafalso
realizadouminsertnamovEstinserirdoosdadosretornadonoselectdocursor.

b)declareforcursor:declaradoocursorNFPeriodoeassociadoao
selectqueretornaaNumNF,codProd,dtEmis,qtde,valor.
opencursor:ocursorNFPeriodoeabertoeoloopeiniciado.
fetchnextfromNFPeriodo:ofetchgeradonocursorafimde
recuperarosdadosretornadodoprimeiroselect.

c)
begintransation:iniciaumblocodetransaes,astransaescolocadasdentrodestebloco,
podemserrealizadasoudesfeitas
committransation:efetuaatransaocomsucesso(confirmaatransao).
rollbacktransation:desfazatransaodesdequeatransaofoi
iniciadacombegintransation.

XMLumalinguagemdemarcaorecomendadapelaW3Cparaacriaodedocumentos
comdadosorganizadosatravsdeumareferenciamaisdetalhada,usadosatualmenteem
bancodedadosNOSQL,situaseentreosSGBDearearecuperaodeinformaes

ETLOprocessodenominadoETLconsistenaexecusodetresatividades
ExtractObtenodosdadosarmazenadosnasdiferentesfontesqueabstecerooDW

TransformConversodosdadosoriginaisconformeomodelodoDWouemumformato
comumquepermitautilizaromesmoprocessodeincluso

LoadInclusodosdadosnabasedoDW,existemdiversasferramentas.

CREATETRIGGERNOMEFORFUNCIONARIO
ACTIVEBEFOREUPDATEORDELETE

S-ar putea să vă placă și