Documente Academic
Documente Profesional
Documente Cultură
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
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