Detailed example of innodb_autoinc_lock_mode method
May 24, 2017 pm 01:47 PMThe following editor will bring you an introduction to MySQL innodb_autoinc_lock_mode. The editor thinks it’s pretty good, so I’ll share it with you now and give it as a reference. Let’s follow the editor to take a look.
innodb_autoinc_lock_mode This parameter controls the behavior of related locks when inserting data into a table with an auto_increment column;
By setting it, you can achieve performance and Balance of security (master-slave data consistency)
[0] Let’s classify insert first
First of all, insert can generally Divided into three categories:
1. Simple insert such as insert into t(name) values('test')
2. Bulk insert such as load data | insert into. .. select .... from ....
3. mixed insert such as insert into t(id,name) values(1,'a'),(null,'b'),(5,'c');
【1】Description of innodb_autoinc_lock_mode
innodb_auto_lockmode has three values :
1. 0 means tradition.
2. 1 means coherent.
3. 2 means interleaved.
##【1.1】tradition(innodb_autoinc_lock_mode=0) mode:
1. It provides a backward compatibility capability【1.2】consecutive(innodb_autoinc_lock_mode=1) Mode:
1. In this mode, simple insert has been optimized. Since simple insert The number of values inserted at one time can be determined immediately, so MySQL can generate several consecutive values at a time for this insert statement; in general, this is also safe for replication (it ensures the safety of statement-based replication)
【1.3】interleaved(innodb_autoinc_lock_mode=2) mode
[2] If your binary file format is mixed | row, then any of these three values is copy-safe for you.
Since mysql now recommends setting the binary format to row, it is best to use innodb_autoinc_lock_mode=2 when binlog_format is not a statement. This may be known. Better performance.
Finally end with an example about auto_incrementExample:Don’t worry about itUpdateThe value of an auto_increment column
Step 1: Reproduce the scene
create table t(x int auto_increment not null primary key); insert into t(x) values(0),(null),(3); select * from t; +---+ | x | +---+ | 1 | | 2 | | 3 | +---+
Step 2: Reproduce the SQL that caused the problem
update t set x=4 where x=1; select * from t; +---+ | x | +---+ | 2 | | 3 | | 4 | +---+
The third step: Reproduce the usual expression
insert into t(x) values(0); ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'
Step 4: Summary of the problem
After executing the first step, mysql knows that the next auto_increment value is 4. After executing the second step, mysql did not know that 4 had been artificially occupied, so an error occurred when executing the third step. [Related recommendations]1. 2.Detailed explanation of the error of table primary key conflict when innodb_index_stats imports data
3.Detailed example of innodb_autoinc_lock_mode in mysql
4.Detailed example of adding new user permissions in MySQL
5.Detailed example of init_connect method in mysql
The above is the detailed content of Detailed example of innodb_autoinc_lock_mode method. For more information, please follow other related articles on the PHP Chinese website!

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

How MySQL sees InnoDB row format from binary content

How to solve phantom reading in innoDB in Mysql

MySQL storage engine selection comparison: InnoDB, MyISAM and Memory performance index evaluation

How to use MyISAM and InnoDB storage engines to optimize MySQL performance

Tips and Strategies to Improve MySQL Storage Engine Read Performance: Comparative Analysis of MyISAM and InnoDB

MySQL storage engine supporting GIS data: spatial index optimization in InnoDB
