Postgresql database locked

E vako,

imam Postgresql 9.1 te na njemu lijepu bazu koja se vrlo cesto updateuje, recimo cetiri puta dnevno. Update je poveci, cca. 80MB. Problem je slijedeci:

  • tokom ovog update-a nemoguce je ostvariti novu konekciju na bazu
  • nakon update-a, izvrsava se pl_sql skripta koja vrsi pairing, egzekucija skripte je oko pola sata, takodjer tokom tog vremena je nemoguce ostvariti novu konekciju
  • prilikom nekog duzeg query-ja, takodjer je nemoguce ostvariti novu konekciju na bazu
  • postojece konekcije koje su napravljene prije ovih koraka gore su ok

Pretpostavljam da je u pitanju neki locking, ali nisam uspio naci gdje je to definisano.

Opletite :slight_smile:

Haj’ ti nama fino reci sta se to populise, imas li kakvu redudanciju (guzis li sta) i zasto ne :smiley:

@Bo, nema redundancije, radi se klasicni update baze, dakle dobijemo novu verziju, rucno se pobrisu podaci, ali ne i struktura baze i importuje se nova.

Mislio sam na dva pg servera. Najcesce se za ovakve stvari radi sa replikacijom, gdje jedan server stoji u standby dok se obavlja ovo cudo na drugom…

Replikacija je planirana i upravo takav scenarij je planiran za kasnije. Trenutno postoji jedna baza.

Evo malo detaljnije sta se desava i u cemu je problem:

datid	datname	procpid	usesysid	usename	application_name	client_addr	client_hostname	client_port	backend_start	xact_start	query_start	waiting	current_query
110604	yorxs	32053	16384	openerp				-1	2012-01-30 19:19:20.196794+01		2012-01-30 20:21:51.373593+01	f	<IDLE>
137959	yorxs_test	517	16384	openerp				-1	2012-01-30 19:20:36.675793+01		2012-01-30 20:21:52.37493+01	f	<IDLE>
137959	yorxs_test	14997	10	postgres	pgAdmin III- Abfragewerkzeug	192.168.3.20		47512	2012-01-30 20:21:22.434934+01	2012-01-30 20:22:12.243237+01	2012-01-30 20:22:12.243237+01	f	select * from pg_stat_activity;

Malo je ovo teze predstaviti, evo i screenshot:

Dakle, recimo da je ovo:

select * from pg_stat_activity;

neki uzasno dug query.

Ako za vrijeme dok se ovaj query izvrsava, pokusam ostvariti novu konekciju na bazu ili pokusam izvrsiti neki novi query, pojavljuje se nova linija, sa novim dataid oid i sve sto ide uz to, gdje je vrijednost pod waiting boolean “t”, ili TRUE i client iz kojeg pokusavam da izvrsim taj novi query bi smrznuo jer ne bi dobio povratnu informaciju od baze.

Eto, to je otprilike najbolje sto mogu objasniti.

AFAIK, pg_stat_activity je ko mysql-ov show processes, ako sam dobro skontao… a uzeo si ga samo za primjer…
Trebala bi mi konkretan info koje se operacije obavljaju u tom procesu…

ma nije bitno koji je query u pitanju, poenta je da query dugo traje. Ovo je samo primjer, moze biti bilo koji query.