historie a jedinecnost [Re: Platnost zaznamu v ciselniku jeste jednou]

Radek Kanovsky rk na dat.cz
Pátek Červenec 25 10:36:54 CEST 2003


On Fri, Jul 25, 2003 at 08:32:24AM +0200, Karel Zak wrote:

> > Zatim se nejschudnejsi jevi zamykani tabulky. Mezi kontrolou a insertem
> > muzu ovsem jeste spoustet "aplikacni triggery", ktere mohou vyvolat
> > dalsi SQL dotazy a neni dopredu uplne jasne, jestli takovy zamek nebude
> > zpusobovat nejake nepekne deadlocky.
> 
>  To zalezi jen na vasi aplikaci.

Komponentu pro praci s historickymi tabulkami budou pouzivat dalsi
programatori v ruznych aplikacich a ja bych jim chtel dat co nejvetsi
svobodu. Pokud pouziju explicitni LOCK, nakazim timto zamykanim cely
system, protoze nezadoucim vedlejsim efektem vyvolani metody historicke
komponenty bude to, ze po jejim skonceni zustanou nektere tabulky
explicitne zamknuty. Pokud takovou metodu vyvolam v ramci vetsi
deletrvajici transakce, muzu skoncit ve stavu, kdy jedna transakce
zamyka kompletne celou databazi a ostatni cekaji.

Explicitni LOCKy jsou z tohoto hlediska velke zlo. Musim drzet ten
zamek az do konce transakce, protoze pokud bych explicitne zamek odemkl
po editaci historicke tabulky, ostatni by se pusitili do editace, ale
nevideli by moje necommitnuta data, tudiz by to nefungovalo a dochazelo
by k nekonzistencim. A to predpokladam, ze postgres odemkne ty zamky az
potom, co commitne data (nikde jsem to nenasel), protoze jinak by to
nefungovalo vubec.

A pokud nastavim "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;",
tak snad nebudou ty explicitni LOCKy fungovat vubec. Po skonceni
jedne transakce se odemkne explicitni lock, ale v druhe transakci
neuvidim ani ta commitnuta data, takze opet budu dostavat
nekonzistence :-(

>   Mam na mysli dokazat vytvorit takovy UNIQUE index, aby hlidal tu
>   unikatnost v ramci tech casovych intervalu sam.
> 
>   CREATE [ UNIQUE ] INDEX index_name ON table
>       [ USING acc_method ] ( column [ ops_name ] [, ...] )
>       [ WHERE predicate ]
> 
>  zajimave je to WHERE, ktere definuje za jakych okolnosti maji byt
>  data indexovana do toho tvoreneho indexu. Jdu si s tim hrat...

To by bylo skvele reseni. Mozna by pomohla nejaka pomocna tabulka.
Nejvetsi problem pusobi prekryvajici se intervaly od-do.

Zdravi

RadekK


Další informace o konferenci Test