posledni automaticky generovany id a prenositelnost

Karel Zak zakkr na zf.jcu.cz
Úterý Srpen 10 12:01:50 CEST 2004


On Tue, Aug 10, 2004 at 11:19:12AM +0200, Pavel Janoušek wrote:
> 	Kdyz uz jste s tim zacali...
> 
> > -----Original Message-----
> > From: Jan Serak [mailto:sherry na pikebo.cz] 
> > p := nextval(seq); 	-- v p je 14	
> > p := currval(seq);	-- v p je 14
> > 
> > 					x := nextval(seq); -- x=15
> > 					x := currval(seq); -- x=15
> 
>  Jelikoz  neco  o soubezich  vim,  chci  se  optat, zda-li  je  reseno
>  (predpokladam, ze ano  a to zrejme zamkem a  mozna jeste robustnejsim
>  mechanismem  aby nedochazelo  ani ke  starnuti (starving))  to, ze  p
>  :=  nextval(seq)  v  jednom  okamziku  vyvolaji  dve  a  vice  vlaken
>  aplikace/serveru  - jde  mi  o  to, ze  mame  neco  jako CPU  quantum
>  a  serializaci   a  v   prubehu  interniho  zpracovani   je  procesor
>  odejmut. Takze je tato operace  opravdu definovana jako atomicka nebo
>  se  tak definuje  (napr.  proto, ze  je to  logicke)  a pripadne,  co
>  viceprocesorovy stroj?
>
>  Ptam se  na to  prave s  ohledem na  to, ze  sequence jsou  VYJMUTY z
>  transakci, nemaji isolation level (pokud  ano, jaky?) a vubec prace s
>  nimi vyzaduje trochu jiny pristup/znalosti...

 Sequence  je  tabulka   a  naprosto  stejne  jako  s   tabulkou  s  tim
 zachazi  jen ten  kod je  trosku samostatny  a "hubenejsi"  a nepouziva
 vsechnu  infrastrukturu  jako  u  beznych  tabulek. Zjednodusene  se  v
 "AccessShareLock"  otevre  tabulka  sequence a  nasledne  zamkne  prvni
 buffer  (block)  tabulky  jako  BUFFER_LOCK_EXCLUSIVE,  precte  zaznam,
 modifikuje  a  pak zase  odemkne  (+  jeste  nejake veci  ohledne  logu
 apod). To  je  vse. Pokdu  nekomu  vykonostne  prekazi  ten  lock  muze
 pouzivat cached  sequence, kdy  si session  "alokuje" pro  sebe nekolik
 cisel najednou a pak je nextval() postupne pouziva.

    Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/


Další informace o konferenci Test