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