Of hoe dat dan ook heet...
Ik wil in PostgreSQL een transactie beginnen en dan met bijvoorbeeld een SELECT statement een row locken zodat die row niet meer gelezen kan worden door anderen totdat de transactie afgelopen is. Ik geloof dat dat progressive locking wordt genoemd.
Ik zou echter niet weten hoe ik dat moet doen.
Ik kan bij het SELECT statement de optie 'FOR UPDATE' meegeven, maar dan wordt het record alleen voor update's gelocked, terwijl ik er voor wil zorgen dat het record niet eens meer gelezen kan worden.
Iemand een idee?
Hmz, het probleem is wel veel ingewikkelder dan het hier lijkt, het gaat namelijk om caching van resultaten in verschillende threads, waardoor er concurrency problemen kunnen ontstaan. Ik heb namelijk een class die de resultaten cached, en die class wordt in verschillende threads gebruikt.
Ik zou het misschien op kunnen lossen door een globale semafoor/mutex te gebruiken in die class. Maar ik had het liever opgelost in de database zelf.
Ik wil in PostgreSQL een transactie beginnen en dan met bijvoorbeeld een SELECT statement een row locken zodat die row niet meer gelezen kan worden door anderen totdat de transactie afgelopen is. Ik geloof dat dat progressive locking wordt genoemd.
Ik zou echter niet weten hoe ik dat moet doen.
Ik kan bij het SELECT statement de optie 'FOR UPDATE' meegeven, maar dan wordt het record alleen voor update's gelocked, terwijl ik er voor wil zorgen dat het record niet eens meer gelezen kan worden.
Iemand een idee?
Hmz, het probleem is wel veel ingewikkelder dan het hier lijkt, het gaat namelijk om caching van resultaten in verschillende threads, waardoor er concurrency problemen kunnen ontstaan. Ik heb namelijk een class die de resultaten cached, en die class wordt in verschillende threads gebruikt.
Ik zou het misschien op kunnen lossen door een globale semafoor/mutex te gebruiken in die class. Maar ik had het liever opgelost in de database zelf.
Macbook Pro