最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于MySQL innodb_autoinc_lock_mode介紹

 更新時(shí)間:2017年03月18日 11:14:51   投稿:jingxian  
下面小編就為大家?guī)?lái)一篇關(guān)于MySQL innodb_autoinc_lock_mode介紹。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來(lái)看看吧

innodb_autoinc_lock_mode這個(gè)參數(shù)控制著在向有auto_increment 列的表插入數(shù)據(jù)時(shí),相關(guān)鎖的行為;

通過對(duì)它的設(shè)置可以達(dá)到性能與安全(主從的數(shù)據(jù)一致性)的平衡

【0】我們先對(duì)insert做一下分類

首先insert大致上可以分成三類:

1、simple insert 如insert into t(name) values('test')

2、bulk insert 如load data | insert into ... select .... from ....

3、mixed insert 如insert into t(id,name) values(1,'a'),(null,'b'),(5,'c');

【1】innodb_autoinc_lock_mode 的說明

innodb_auto_lockmode有三個(gè)取值:

1、0 這個(gè)表示tradition 傳統(tǒng)

2、1 這個(gè)表示consecutive 連續(xù)

3、2 這個(gè)表示interleaved 交錯(cuò)

【1.1】tradition(innodb_autoinc_lock_mode=0) 模式:

1、它提供了一個(gè)向后兼容的能力

2、在這一模式下,所有的insert語(yǔ)句("insert like") 都要在語(yǔ)句開始的時(shí)候得到一個(gè)表級(jí)的auto_inc鎖,在語(yǔ)句結(jié)束的時(shí)候才釋放這把鎖,注意呀,這里說的是語(yǔ)句級(jí)而不是事務(wù)級(jí)的,一個(gè)事務(wù)可能包涵有一個(gè)或多個(gè)語(yǔ)句。

3、它能保證值分配的可預(yù)見性,與連續(xù)性,可重復(fù)性,這個(gè)也就保證了insert語(yǔ)句在復(fù)制到slave的時(shí)候還能生成和master那邊一樣的值(它保證了基于語(yǔ)句復(fù)制的安全)。

4、由于在這種模式下auto_inc鎖一直要保持到語(yǔ)句的結(jié)束,所以這個(gè)就影響到了并發(fā)的插入。

 【1.2】consecutive(innodb_autoinc_lock_mode=1) 模式:

1、這一模式下去simple insert 做了優(yōu)化,由于simple insert一次性插入值的個(gè)數(shù)可以立馬得到 確定,所以mysql可以一次生成幾個(gè)連續(xù)的值,用于這個(gè)insert語(yǔ)句;總的來(lái)說這個(gè)對(duì)復(fù)制也是安全的(它保證了基于語(yǔ)句復(fù)制的安全)

2、這一模式也是mysql的默認(rèn)模式,這個(gè)模式的好處是auto_inc鎖不要一直保持到語(yǔ)句的結(jié)束,只要語(yǔ)句得到了相應(yīng)的值后就可以提前釋放鎖

【1.3】interleaved(innodb_autoinc_lock_mode=2) 模式

1、由于這個(gè)模式下已經(jīng)沒有了auto_inc鎖,所以這個(gè)模式下的性能是最好的;但是它也有一個(gè)問題,就是對(duì)于同一個(gè)語(yǔ)句來(lái)說它所得到的auto_incremant值可能不是連續(xù)的。

【2】如果你的二進(jìn)制文件格式是mixed | row 那么這三個(gè)值中的任何一個(gè)對(duì)于你來(lái)說都是復(fù)制安全的。

由于現(xiàn)在mysql已經(jīng)推薦把二進(jìn)制的格式設(shè)置成row,所以在binlog_format不是statement的情況下最好是innodb_autoinc_lock_mode=2 這樣可能知道更好的性能。

最后以一個(gè)關(guān)于auto_increment 的例子來(lái)結(jié)束

例子:不要沒事去更新一個(gè)auto_increment 列的值

第一步:重現(xiàn)一下場(chǎng)景

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

第二步:重現(xiàn)一下引發(fā)問題的SQL

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

第三步:重現(xiàn)一下總是的表現(xiàn)形式

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

第四步:對(duì)問題的總結(jié)

執(zhí)行完第一步的時(shí)候mysql知道下一個(gè)auto_increment值是4。

執(zhí)行完第二步的時(shí)候mysql并不知道4已經(jīng)被人為的占用了,所以執(zhí)行第三步的時(shí)候就出錯(cuò)了。

以上這篇關(guān)于MySQL innodb_autoinc_lock_mode介紹就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文帶你學(xué)會(huì)MySQL的select語(yǔ)句

    一文帶你學(xué)會(huì)MySQL的select語(yǔ)句

    在MySQL中可以使用SELECT語(yǔ)句來(lái)查詢數(shù)據(jù),查詢數(shù)據(jù)是指從數(shù)據(jù)庫(kù)中根據(jù)需求,使用不同的查詢方式來(lái)獲取不同的數(shù)據(jù),是使用頻率最高、最重要的操作,下面這篇文章主要給大家介紹了關(guān)于MySQL中select語(yǔ)句的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • mysql 8.0.12 解壓版安裝教程 個(gè)人親測(cè)!

    mysql 8.0.12 解壓版安裝教程 個(gè)人親測(cè)!

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.12 解壓版安裝教程,步驟簡(jiǎn)單,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • MYSQL8 通過ibd文件恢復(fù)表數(shù)據(jù)的方法

    MYSQL8 通過ibd文件恢復(fù)表數(shù)據(jù)的方法

    這篇文章主要介紹了MYSQL8 通過ibd文件恢復(fù)表數(shù)據(jù)的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-01-01
  • 淺談MySQL為什么會(huì)選錯(cuò)索引

    淺談MySQL為什么會(huì)選錯(cuò)索引

    本文主要介紹了淺談MySQL為什么會(huì)選錯(cuò)索引,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • MySQL中distinct語(yǔ)句的基本原理及其與group by的比較

    MySQL中distinct語(yǔ)句的基本原理及其與group by的比較

    這篇文章主要介紹了MySQL中distinct語(yǔ)句的基本原理及其與group by的比較,一般情況下來(lái)說group by和distinct的實(shí)現(xiàn)原理相近且性能稍好,需要的朋友可以參考下
    2016-01-01
  • MySQL之高可用架構(gòu)詳解

    MySQL之高可用架構(gòu)詳解

    大家好,本篇文章主要講的是MySQL之高可用架構(gòu)詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • MySQL delete刪除數(shù)據(jù)后釋放磁盤空間的操作方法

    MySQL delete刪除數(shù)據(jù)后釋放磁盤空間的操作方法

    這篇文章主要介紹了MySQL delete刪除數(shù)據(jù)后,釋放磁盤空間,文中給大家介紹了優(yōu)化表空間的多種方法,每種方法給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05
  • 詳解MySQL中InnoDB的存儲(chǔ)文件

    詳解MySQL中InnoDB的存儲(chǔ)文件

    本篇是一篇關(guān)于MySQL專題知識(shí)點(diǎn)的內(nèi)容,詳細(xì)講述了InnoDB的存儲(chǔ)文件的相關(guān)內(nèi)容,感興趣的朋友學(xué)習(xí)下。
    2018-02-02
  • MySQL入門(三) 數(shù)據(jù)庫(kù)表的查詢操作【重要】

    MySQL入門(三) 數(shù)據(jù)庫(kù)表的查詢操作【重要】

    本節(jié)比較重要,對(duì)數(shù)據(jù)表數(shù)據(jù)進(jìn)行查詢操作,其中可能大家不熟悉的就對(duì)于INNER JOIN(內(nèi)連接)、LEFT JOIN(左連接)、RIGHT JOIN(右連接)等一些復(fù)雜查詢。 通過本節(jié)的學(xué)習(xí),可以讓你知道這些基本的復(fù)雜查詢是怎么實(shí)現(xiàn)的,,需要的朋友可以參考下
    2018-07-07
  • MySQL使用B+Tree當(dāng)索引的優(yōu)勢(shì)有哪些

    MySQL使用B+Tree當(dāng)索引的優(yōu)勢(shì)有哪些

    這篇文章主要介紹了MySQL使用B+Tree當(dāng)索引有哪些優(yōu)勢(shì),幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下
    2021-03-03

最新評(píng)論

阿拉善左旗| 岐山县| 城固县| 桐乡市| 栖霞市| 革吉县| 岫岩| 东港市| 密云县| 东源县| 惠来县| 东明县| 盐山县| 北海市| 容城县| 兴山县| 云林县| 永康市| 四会市| 通道| 正宁县| 勃利县| 会宁县| 肃宁县| 民丰县| 乌兰县| 富阳市| 定日县| 乐都县| 咸丰县| 通化市| 迁西县| 大城县| 莲花县| 灌云县| 大名县| 桓台县| 杂多县| 邯郸县| 古交市| 全椒县|