จากการแบ่งปันความรู้ของ PostgreSQL database นั้น
มีคำถามเกี่ยวกับการใช้งาน SKIP LOCKED ที่เพิ่มเข้ามาตั้งแต่ version 9.5 นั้น (2016)
ว่าทำงานอย่างไร และ มี use case อะไรบ้าง ?
โดยพื้นฐานในการแก้ไขข้อมูลใน table หนึ่ง ๆ นั้น
database จะทำการ lock row นั้น ๆ ไว้ก่อนเสมอ
เพื่อไม่ให้แก้ไขข้อมูลพร้อม ๆ กันนั่นเอง
ดังนั้น request ที่มาช้าก่อนก็ต้องรอใน queue ต่อไป
จนกว่าจะปลด lock หรือทำงานเสร็จ (begin-commit)
ดังนั้นใน PostgreSQL จึงได้เพิ่ม SKIP LOCKED เข้ามา
เพื่อทำการข้ามไปยัง row ต่อไปที่ไม่ถูก lock เลยทันที
นั่นคือ ถ้ามีการใช้งานข้อมูลใน table นั้น ๆ พร้อม ๆ กับ (high-concurrency)
จะไม่ block กันเลย และอ่านไปเรื่อย ๆ สำหรับ row ที่ไม่ถูก lock
ดังนั้นหนึ่งใน Use case คือ Queue หรือ Task นั่นเอง
เช่นถ้ามางานให้ทำงานจำนวนมาก ๆ
จากนั้นให้ worker จำนวนมากมาช่วยกันทำงานจาก task ต่าง ๆ
โดย worker ต้องไม่หยิบ task ซ้ำกัน
สามารถใช้งานได้ดังนี้
ใน PostgreSQL จะใช้งานผ่าน SELECT for UPDATE with SKIP LOCKED + LIMIT 1 นั่นเอง

ตัวอย่างการใช้งาน
เป็นอีกหนึ่งแนวทางในการแก้ไขปัญหา
ลองศึกษาและใช้งานกันดู
เรื่องของ performance ก็อีกเรื่องนึงนะครับ
และยังสามารถใช้งานผ่าน NOWAIT ก็ได้เช่นกัน
รวมทั้งถ้า table มีขนาดมหญ่ อย่าลืมใส่ index ด้วยเสมอ