On Wed, Oct 11, 2017 at 1:08 PM, Robert Haas <robertmh...@gmail.com> wrote: > On Mon, Oct 9, 2017 at 10:22 AM, Alexander Korotkov > <a.korot...@postgrespro.ru> wrote: >> For me, it's crucial point that pluggable storages should be able to have >> different MVCC implementation, and correspondingly have full control over >> its interactions with indexes. >> Thus, it would be good if we would get consensus on that point. I'd like >> other discussion participants to comment whether they agree/disagree and >> why. >> Any comments? > > I think it's good for new storage managers to have full control over > interactions with indexes. I'm not sure about the MVCC part. I think > it would be legitimate to want a storage manager to ignore MVCC > altogether - e.g. to build a non-transactional table.
I agree with Alexander -- if you're going to have a new MVCC implementation, you have to do significant work within index access methods. Adding "retail index tuple deletion" is probably just the beginning. ISTM that you need something like InnoDB's purge thread when index values change, since two versions of the same index tuple (each with distinct attribute values) have to physically co-exist for a time. > I don't know > that it would be a very good idea to have two different full-fledged > MVCC implementations, though. Like Tom says, that would be > replicating a lot of the awfulness of the MySQL model. It's not just the MySQL model, FWIW. SQL-on-Hadoop systems like Impala, certain NoSQL systems, and AFAIK any database system that claims to have pluggable storage all do it this way. That is, core transaction management functions (e.g. MVCC snapshot acquisition) is outsourced to the storage engine. It *is* very cumbersome, but that's what they do. -- Peter Geoghegan -- Sent via pgsql-hackers mailing list (email@example.com) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers