Eager / lazy refer to implementation detail. (What structures do we use to implement commit/abort?)
Pessimistic / optimistic refer to conflict detection policy. (When do we check if we need to commit/abort?)
apk
Why is eager+optimistic not practical?
anonymous
@apk Recall the negative for eager versioning is that slower aborts and fault issues. And optimistic will forward progress. So, if there are a bunch of writes, the one that does commit will restart others that cause a lot of slow aborts. So, the whole performance will be bad. Not sure if it's true, just a guess.
yulunt
Eager versioning writes to memory directly. Optimistic detection only checks before commit. To prevent from violating isolation property, additional checking mechanism must be included. The hardware may be complex and costly, which makes it impractical.
Recall:
Eager / lazy refer to implementation detail. (What structures do we use to implement commit/abort?)
Pessimistic / optimistic refer to conflict detection policy. (When do we check if we need to commit/abort?)
Why is eager+optimistic not practical?
@apk Recall the negative for eager versioning is that slower aborts and fault issues. And optimistic will forward progress. So, if there are a bunch of writes, the one that does commit will restart others that cause a lot of slow aborts. So, the whole performance will be bad. Not sure if it's true, just a guess.
Eager versioning writes to memory directly. Optimistic detection only checks before commit. To prevent from violating isolation property, additional checking mechanism must be included. The hardware may be complex and costly, which makes it impractical.
GCC seems to have support for transactional memory. https://gcc.gnu.org/wiki/TransactionalMemory