Zpomalujici se Pg

Karel Zak zakkr na zf.jcu.cz
Úterý Listopad 5 11:27:29 CET 2002


On Tue, Nov 05, 2002 at 10:19:42AM +0100, Honza Pazdziora wrote:
> On Tue, Nov 05, 2002 at 10:15:21AM +0100, Karel Zak wrote:
> > 
> >  rychlejsi a hlavne to nevyzaduje vubec zadny zamek). Je treba neustale 
> >  myslet na to, ze tech transakci tam muze byt nekolik najednou, takze 
> >  prepisovani starych dat neni tak jednoduche.
> 
> Ale ty verze jsou vzdycky jenom dve, ne? Commitnuta data, ktera tam

 Nemusi tam byt dve :-)

> byla predtim, nez transakce zacaly, a pak zmenena data od te jedne
> transakce. Ta druha transakce nemuze ta data zmenit, dokud ta prvni
> neudela commit nebo rollback.

 Menit nemuze, ale muze videt. 
 
 Co treba TRANSACTION ISOLATION LEVEL SERIALIZABLE? 

 Tri klienti (A, B a C): 

--- A ---:
BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT * FROM tr;
 id | data 
----+------
  1 | aaa

--- B ---:
UPDATE tr SET data = 'AAA';
SELECT * FROM tr;
 id | data 
----+------
  1 | AAA

--- C ---:
BEGIN;
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
SELECT * FROM tr;
 id | data 
----+------
  1 | AAA

--- B ---:
UPDATE tr SET data = 'abc';
SELECT * FROM tr;
 id | data 
----+------
  1 | abc

--- A ---:
SELECT * FROM tr;
 id | data 
----+------
  1 | aaa

--- C --:
 SELECT * FROM tr;
 id | data 
----+------
  1 | AAA

 A mam tri verze tehoz radku.

> Znamena to, ze bez ohledu na to fflushovaci nastaveni, se ten WAL
> fflushuje vzdy (ocekaval bych)?

 Ano. Jde o to, ze WAL _garantuje_ pri libovolnem padu systemu, ze 
 DB bude konzistentni a commitnuta data budou v tabulkach (treba za
 cenu toho, ze po startu systemu bude obnoveni tabulek chvilku trvat).

 Driv byvala moznost zakazat fsync() a tise verit v Linux a UPS, ted
 je toto zakazani fsync() zbytecne protoze, PostgreSQL si to managuje
 sam.

    Karel

-- 
 Karel Zak  <zakkr na zf.jcu.cz>
 http://home.zf.jcu.cz/~zakkr/
 
 C, PostgreSQL, PHP, WWW, http://docs.linux.cz, http://mape.jcu.cz


Další informace o konferenci Test