вижу море крови.
гляди, она не кончилась!
Про тарантул всё просто: memtx: - фиксирует данные в памяти, отправляет транзакцию записываться на диск - файбер, который транзакцию спровоцировал засыпает в ожидании ответа от wal - в это время другие файберы уже видят данные в памяти - в success-кейсе транзакция коммитится (в зависимости от wal_mode раньше или позже, можно хоть с fsync'ом: это влияет только на лтенси модифицирующих операций) и управление возвращается коммитящему файберу с результатом - после успешного коммита данные из WAL отправляются на реплику - в неуспешном кейсе (диск кончился, например), транзакция откатывается в памяти и тарантул переходит в read-only. т.е. существовал интервал времени с чтением другими файберамим uncommited данных
Обсуждают сегодня