>  기사  >  데이터 베이스  >  innodb_autoinc_lock_mode 메소드의 자세한 예

innodb_autoinc_lock_mode 메소드의 자세한 예

Y2J
Y2J원래의
2017-05-24 13:47:362537검색

다음 편집기에서는 MySQL innodb_autoinc_lock_mode를 소개합니다. 에디터가 꽤 좋다고 생각해서 지금 공유해서 참고용으로 올려보겠습니다. 편집기를 따라 살펴보겠습니다.

innodb_autoinc_lock_mode 매개변수는 auto_increment 열이 있는 테이블에 데이터를 삽입할 때 관련 잠금의 동작을 제어합니다.

이를 설정하면 성능과 성능이 향상될 수 있습니다. 보안 균형(마스터-슬레이브 데이터 일관성) 달성

[0] 먼저 insert를 분류해 보겠습니다

우선 insert는 일반적으로 나누어집니다. 세 가지 범주로 분류:

1. t(이름) 값에 삽입('test')

데이터 로드와 같은 대량 삽입 | into..select .... from ....

3. t(id,name) 값(1,'a'),(에 삽입하는 것과 같은 혼합 삽입 null,'b'),(5,'c');

[1] innodb_autoinc_lock_mode 설명

innodb_auto_lockmode에는 세 가지 값 :

1.0 전통을 의미

2.1 일관성을 의미

3. >

【1.1】tradition(innodb_autoinc_lock_mode=0) 모드:

1. 이전 버전과의 호환성을 제공합니다


2. 이 모드에서 모든 삽입 문("insert like")은 문 시작 부분에서 테이블 수준 auto_inc 잠금을 획득하고 문 끝에서 잠금을 해제해야 합니다. 여기서는 트랜잭션 수준이 아닌 명령문 수준입니다. 트랜잭션에는 하나 이상의 명령문이 포함될 수 있습니다.


3. 값 분배의 예측성, 연속성 및 반복성을 보장할 수 있습니다. 이는 또한 슬레이브 값에 복사될 때 삽입 문이 마스터와 동일하게 생성될 수 있음을 보장합니다. 명령문 기반 복제의 안전성).


4. 이 모드에서는 구문이 끝날 때까지 auto_inc 잠금이 유지되므로 동시 삽입에 영향을 줍니다.

[1.2] 연속(innodb_autoinc_lock_mode=1) 모드:

1. 이 모드에서는 단순 삽입이 최적화되었습니다. 한 번에 삽입되는 값의 수는 즉시 결정될 수 있으므로 MySQL은 일반적으로 이 삽입 문에 대해 한 번에 여러 개의 연속된 값을 생성할 수 있으며 이는 복제에도 안전합니다(문 기반의 안전성을 보장합니다). 복제)


2. 이 모드는 mysql의 기본 모드이기도 합니다. 이 모드의 장점은 명령문이 끝날 때까지 auto_inc 잠금이 유지되지 않는다는 것입니다. 해당 값을 미리 잠금 해제할 수 있습니다

【1.3】interleaved(innodb_autoinc_lock_mode=2) 모드

1. 이 모드에는 auto_inc 잠금이 없으므로 이 모드에서는 성능이 가장 좋지만 문제도 있습니다. 즉, 동일한 명령문에 대해 얻은 auto_incremant 값이 연속적이지 않을 수 있습니다.

【2】바이너리 파일 형식이 혼합 행인 경우 이 세 가지 값 중 하나가 복사 안전합니다.

mysql은 이제 바이너리 형식을 행으로 설정할 것을 권장하므로 binlog_

format가 명령문이 아닌 경우 innodb_autoinc_lock_mode=2를 사용하는 것이 가장 좋습니다. . 더 나은 성능.

마지막으로 auto_increment에 대한 예시로 마무리합니다

예:

걱정하지 마세요업데이트auto_increment 열의 값

1단계: 장면 재현


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 |
+---+

2단계: 문제가 발생한 SQL 재현


update t set x=4 where x=1;
select * from t;
+---+
| x |
+---+
| 2 |
| 3 |
| 4 |
+---+

3단계: 평소 표현 재현


insert into t(x) values(0);
ERROR 1062 (23000): Duplicate entry '4' for key 'PRIMARY'

4단계: 요약 문제

첫 번째 단계를 실행한 후 mysql은 다음 auto_increment 값이 4라는 것을 알게 됩니다.

두 번째 단계를 실행한 후, mysql은 4가 인위적으로 점유된 것을 알지 못하여 세 번째 단계 실행 시 오류가 발생하였다.

[관련 추천]

1.

Mysql 무료 동영상 튜토리얼

테이블 기본 키 충돌 시 오류에 대한 자세한 설명 innodb_index_stats는 데이터를 가져옵니다

3.

mysql에서 innodb_autoinc_lock_mode의 자세한 예

MySQL에서 새 사용자 권한을 추가하는 자세한 예

5.

mysql의 init_connect 메소드 상세 예시

위 내용은 innodb_autoinc_lock_mode 메소드의 자세한 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.