Pg+dSpam: zvyseni vykonu

Jan Kasprzak kas na fi.muni.cz
Středa Prosinec 14 14:57:48 CET 2011


Pavel Kankovsky wrote:
: On Wed, 14 Dec 2011, Jan Kasprzak wrote:
: 
: > 	Ano, premyslel jsem o tom co by se stalo, kdybych to cele obalil
: > do jedne transakce - nemel by to byt slozity patch.
: > 	 Stalo by se to, ze by velmi pravdepodobne velmi brzo
: > a casto dochazelo k deadlockum v pripade, kdy dve instance dspamu budou
: > aktualizovat hit county u tech stejnych tokenu, ale sahnou na ne
: > v opacnem poradi.
: 
: Zdá se, že PostgreSQL nemá nic jako "MERGE" nebo "ON DUPLICATE KEY", co by
: dovolilo v jednom kroku záznam buď vložit nebo aktualizovat.

	Tak hlavne Pg nema (donedavna nemel?) subtransakce, coz je muj hlavni
problem co mi na Pg proti Oraclu vadi. Takze kdyz spadne INSERT (nebo obecne
libovolny SQL prikaz), tak je cela transakce v haji a musi se odrolovat zpet.
V Oraclu bych normalne otevrel transakci, udelal insert, pokud spadne
tak update, a jel bych dal. Na konci bych commitnul. Samozrejme bych musel
tokeny mit nejak setridene kvuli deadlocku, ale zase bych porad
vykonaval ten stejny insert a ten stejny select s bindovanymi parametry,
takze by byl v SQL cache, a bylo by to cele rychle.

: Ale možná by
: šla použít tato finta
: 
: INSERT INTO table SELECT values... WHERE
: 	(SELECT COUNT(key) FROM table WHERE key = keyval) = 0
: 
: a tím podmíněně vytvořit nový záznam s nulovými hodnotami a za něj
: přidat normální UPDATE.
: 
: Alternativně by možná šlo heuristicky zkusit nejdřív všechny INSERT-y
: zkusit dávkově v jedné transakci a teprve v případě neúspěchu je provádět
: individuálně. Hádám, že by pravděpodobnost výskytu situace, kdy se dva
: procesy pokoušejí nově zaevidovat ten samý token, měla v čase velmi rychle
: klesat.

	Jo. Nebo to v pripade neuspechu rozdelit na poloviny, pak na ctvrtiny,
atd. :-).

-Y.

-- 
| Jan "Yenya" Kasprzak  <kas at {fi.muni.cz - work | yenya.net - private}> |
| GPG: ID 1024/D3498839      Fingerprint 0D99A7FB206605D7 8B35FCDE05B18A5E |
| http://www.fi.muni.cz/~kas/    Journal: http://www.fi.muni.cz/~kas/blog/ |
Please don't top post and in particular don't attach entire digests to your
mail or we'll all soon be using bittorrent to read the list.     --Alan Cox


Další informace o konferenci Linux