3 ms·
In the example code I gave, by default in Rails with Postgres (which supports MVCC) you'll still get the error. So it's not as simple as using a transactional d
by EvilTrout 14y ago
In the example code I gave, by default in Rails with Postgres (which supports MVCC) you'll still get the error. So it's not as simple as using a transactional database: you either use a trick like this one, an row-based version column, or you need to change your isolation levels which has other performance issues.
- delano 14y agoYou could wrap the transaction in a lock based on the player ID which you could do with Redis or Memcached with near-zero impact on performance. A good reference: http://www.nateware.com/an-atomic-rant.html http://www.nateware.com/an-atomic-rant.html
- EvilTrout 14y agoThat introduces external dependencies though. Also, since the update has to occur anyway, I'd bet that my solution is faster than also making a call to another database for a lock.