A transaction from sysbench oltp_write_only looks like this:
BEGIN;
|
UPDATE sbtest1 SET k=k+1 WHERE id=559022;
|
UPDATE sbtest1 SET c='string_const5' WHERE id=503909;
|
DELETE FROM sbtest1 WHERE id=498658;
|
INSERT INTO sbtest1 (id, k, c, pad)
|
VALUES (498658, 500692, 'string-const', 'string-const');
|
COMMIT;
|
(note that the INSERT inserts the record with the same pk that DELETE has removed).
Number of locks taken:
With point locking, it acquires 3 locks (the INSERT doesn't acquire a lock because the DELETE has already taken it)
With range locking, it acquires 8 locks:
-- 3 locks (pk lock, old sk lock. new sk lock)
|
UPDATE sbtest1 SET k=k+1 WHERE id=559022;
|
-- 1 lock on pk (no locks on because it is not changed)
|
UPDATE sbtest1 SET c='string_const7' WHERE id=503909;
|
-- 2 locks: pk lock + sk lock
|
DELETE FROM sbtest1 WHERE id=498658;
|
-- 2 locks: pk lock + sk lock
|
INSERT INTO sbtest1 (id, k, c, pad)
|
VALUES (498658, 500692, 'string-const', 'string-const');
|
Start with re-running the benchmark from
MDEV-18856.