PostgreSQL SKIP LOCKED Özelliği Nedir?
PostgreSql 9.5 sürümü ile gelen bu Skip Locked özelliğinin ne olduğunu açıklamaya çalışacağım.
Veritabanımızdaki kayıtlarımızın üzerinde yapılacak işlem süresi boyunca “kitlemek” ihtiyacı olduğunda kullanılacak olan bir özelliktir.
Yazılımımız bir veri üzerinde işlem yapması gerekiyor ve bu yazılımımız birden fazla thread olduğunu düşünelim. Bu thread’lerin aynı veriler üzerinde birden fazla işlem yapmaması için veritabanında işlem yapılmaması için SKIP LOCKED özelliğinden faydalanarak select sorgusunda o kaydın gözükmesini engellemiş olmaktayız.
Örnek olarak “student” tablosu üzerinde 1 id’li kaydı kitleme işlemine sokalım.
//session 1
begin;
select * from student where id=1 for update;
Code language: JavaScript (javascript)
Ayrı bir session üzerinden veritabanına tekrar bağlanalım ve aşağıdaki komutu yazalım. “student” tablosunu sorgulayalım. Bu sorgu Skip Locked olanları göstermeyecektir.
//session 2
SELECT * FROM student FOR UPDATE SKIP LOCKED;
Code language: JavaScript (javascript)
Biz session 1’den “commit” edene kadar kitlediğimiz veriler diğer sessionlardan görüntülenemeyecektir ve işlem sonuna kadar verileri kararlı şekilde tutacağız. 1 id’li veri select sorgusunda gözükmeyecektir.
commit yaptıktan sonra ise tüm kitleme özellikleri biter ve aynı kayda erişebiliriz.
commit;
İşlem yapmaya çalıştığımız verileri işlem süresi boyunca kitleyerek aynı veri üzerinde tekrar işlem yapılmasını engelleme yöntemini öğrenmiş olduk.
No Comment! Be the first one.