Jump to content
php.lv forumi
Sign in to follow this  
Wuu

PostgreSQL lock

Recommended Posts

Wuu   

PostgreSQL 9.4

Ir updeits, kurš ir ļoti svarīgs. Servera puse ir uzrakstīta, tā ka skeilojas horizontāli. Problēmu nesen atklāju, ka brīžiem, vairāki serveri cenšas updeitot vienu ierakstu, kurš ir ļoti strikti aprakstīts. Gandrīz nereāli, bet toties saskrienas.

Pirms paša updeita ir 3 pārbaudes, un pašā updeitā ir pārbaude, vai tiešām var veikt updeitu. Tik un tā saskrienas. Kā panākt, un aizlokot vienu rindu tabulā. Lai citas transakcijas gaida? Lūgums ar koda piemēru. No https://www.postgresql.org/docs/9.1/static/explicit-locking.html  šī es neko nesaprotu, vai tiešām ir grūti ielikt pāris piemērus? PG manuālus ir vienkārši drausmīgs. 

Edited by Wuu

Share this post


Link to post
Share on other sites
Wuu   
select * from users where id = 5395 for update;
update users set email = 'cooolmail@mailinator.com' where id = 5395;

Šādi? Kā lai notestē, ka tiešām strādā?

Share this post


Link to post
Share on other sites
Sasa   

https://www.postgresql.org/docs/9.1/static/sql-begin.html

begin;
select * from users where id = 5395 for update;
update users set email = 'cooolmail@mailinator.com' where id = 5395;
commit;

Ja pareizi saprotu begin; commit; visu saliek vienā transakcijā, un ja nebūs nostrādājis commit's ieraksts ID = 5395 nebūs pieejams citām darbībām un tās gaidīs kamēr ieraksts būs atkal pieejams.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×