innodb_autoinc_lock_mode
innodb_autoinc_lock_mode 有三种值0 1 2 一般默认的为1
innodb_autoinc_lock_mode=0
这种为传统模式,所有的insert-like语句都会持有 table-level AUTO-INC lock也就是加锁,一直到语句执行完成,分配的自增列值也是连续的,可预知的。同时, 在statement-based的复制模式下,可以保证主从自增列一致。
innodb_autoinc_lock_mode=1
连续模式,这种模式下 简单插入是不会使用 table-level AUTO-INC lock,要插入的行数会提前知道。但是“mixed-mode inserts”这种插入下就和traditional方式有区别了,这种模式下可能用户会精确提供部分自增列的行数,但是不是所有的都会明确知道,这个时候,innodb会分配比已知要插入的行数更大的自增值给后面的insert,这样分配的值也是连续的,但是可能就和前面的自增值有gap了,这个时候gap value会lost。
innodb_autoinc_lock_mode = 2
交互模式,这种模式下,所有的insert-like语句都不会持有table-level AUTO-INC lock,但是statement-based的复制模式下,不是很安全。
具体的验证后期补上!
文章名称:innodb_autoinc_lock_mode
文章出自:http://scyanting.com/article/ggdjhe.html
innodb_autoinc_lock_mode=0
这种为传统模式,所有的insert-like语句都会持有 table-level AUTO-INC lock也就是加锁,一直到语句执行完成,分配的自增列值也是连续的,可预知的。同时, 在statement-based的复制模式下,可以保证主从自增列一致。
innodb_autoinc_lock_mode=1
连续模式,这种模式下 简单插入是不会使用 table-level AUTO-INC lock,要插入的行数会提前知道。但是“mixed-mode inserts”这种插入下就和traditional方式有区别了,这种模式下可能用户会精确提供部分自增列的行数,但是不是所有的都会明确知道,这个时候,innodb会分配比已知要插入的行数更大的自增值给后面的insert,这样分配的值也是连续的,但是可能就和前面的自增值有gap了,这个时候gap value会lost。
innodb_autoinc_lock_mode = 2
交互模式,这种模式下,所有的insert-like语句都不会持有table-level AUTO-INC lock,但是statement-based的复制模式下,不是很安全。
具体的验证后期补上!
文章名称:innodb_autoinc_lock_mode
文章出自:http://scyanting.com/article/ggdjhe.html