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

MySQL?8.0自增變量的持久化問題小結(jié)

 更新時間:2024年11月13日 08:59:00   作者:kahnyao  
MySQL5.7中自增主鍵在重啟后會重置,而MySQL8.0中通過重做日志持久化自增變量,避免重啟后主鍵沖突,本文介紹MySQL?8.0自增變量的持久化問題小結(jié),感興趣的朋友一起看看吧

MySQL 8.0特性-自增變量的持久化

在MySQL 8.0之前,自增主鍵AUTO_INCREMENT的值如果大于max(primary key)+1,在MySQL重啟后,會重置AUTO_INCREMENT=max(primary key)+1,這種現(xiàn)象在某些情況下會導(dǎo)致業(yè)務(wù)主鍵沖突或者其他難以發(fā)現(xiàn)的問題。 下面通過案例來對比不同的版本中自增變量是否持久化。

MySQL5.7測試

在MySQL 5.7版本中,測試步驟如下: 創(chuàng)建的數(shù)據(jù)表中包含自增主鍵的id字段,語句如下:

CREATE TABLE test1(
id INT PRIMARY KEY AUTO_INCREMENT
);
-- 插入4個空值,執(zhí)行如下:
INSERT INTO test1
VALUES(0),(0),(0),(0);
-- 查詢數(shù)據(jù)表test1中的數(shù)據(jù),結(jié)果如下:
mysql> SELECT * FROM test1;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 4 |
+----+
4 rows in set (0.00 sec)
-- 刪除id為4的記錄,語句如下:
DELETE FROM test1 WHERE id = 4;
-- 再次插入一個空值,語句如下:
INSERT INTO test1 VALUES(0);
-- 查詢此時數(shù)據(jù)表test1中的數(shù)據(jù),結(jié)果如下:
mysql> SELECT * FROM test1;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 5 |
+----+
4 rows in set (0.00 sec)
-- 從結(jié)果可以看出,雖然刪除了id為4的記錄,但是再次插入空值時,并沒有重用被刪除的4,而是分配了5。
-- 刪除id為5的記錄
DELETE FROM test1 where id=5;

重啟數(shù)據(jù)庫

service mysql stop
service mysql start

繼續(xù)插入空值,然后再次查詢數(shù)據(jù)表test1中的數(shù)據(jù),結(jié)果如下:

mysql> INSERT INTO test1 values(0);
Query OK, 1 row affected (0.00 sec)
mysql> select * from test1;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  4 |
+----+
4 rows in set (0.00 sec)

從結(jié)果可以看出,新插入的0值分配的是4,按照重啟前的操作邏輯,此處應(yīng)該分配6。出現(xiàn)上述結(jié)果的主要原因是自增主鍵沒有持久化。 在MySQL 5.7系統(tǒng)中,對于自增主鍵的分配規(guī)則,是由InnoDB數(shù)據(jù)字典內(nèi)部一個 計數(shù)器 來決定的,而該計數(shù)器只在 內(nèi)存中維護 ,并不會持久化到磁盤中。當數(shù)據(jù)庫重啟時,該計數(shù)器會被初始化。

MySQL 8.0測試

上述測試步驟最后一步的結(jié)果如下:

mysql> select * from test1;
+----+
| id |
+----+
|  1 |
|  2 |
|  3 |
|  6 |
+----+
4 rows in set (0.00 sec)

從結(jié)果可以看出,自增變量已經(jīng)持久化了。

MySQL 8.0將自增主鍵的計數(shù)器持久化到 重做日志中。每次計數(shù)器發(fā)生改變,都會將其寫入重做日志中。如果數(shù)據(jù)庫重啟,InnoDB會根據(jù)重做日志中的信息來初始化計數(shù)器的內(nèi)存值。

到此這篇關(guān)于MySQL 8.0自增變量的持久化的文章就介紹到這了,更多相關(guān)mysql自增變量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 理解MySQL存儲過程和函數(shù)

    理解MySQL存儲過程和函數(shù)

    這篇文章主要幫助大家學(xué)習(xí)理解MySQL存儲過程和函數(shù),感興趣的小伙伴們可以參考一下
    2016-03-03
  • 一文帶你學(xué)會Mysql表批量添加字段

    一文帶你學(xué)會Mysql表批量添加字段

    本文主要介紹了MySQL表如何批量添加字段的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 深度解析MySQL 鎖機制:間隙鎖、Next-Key Lock 與幻讀防御

    深度解析MySQL 鎖機制:間隙鎖、Next-Key Lock 與幻讀防御

    本文深入探討了MySQL的鎖機制,特別是間隙鎖(GapLock)和臨鍵鎖(Next-KeyLock),本文將從"為什么要鎖間隙"出發(fā),一路追到"為什么是左開右閉",把這套機制徹底講透,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • 寶塔安裝的MySQL無法連接的情況及解決方案

    寶塔安裝的MySQL無法連接的情況及解決方案

    寶塔面板是一款流行的服務(wù)器管理工具,其中集成的 MySQL 數(shù)據(jù)庫有時會出現(xiàn)連接問題,本文詳細介紹兩種最常見的 MySQL 連接錯誤:“1130 - Host is not allowed to connect” 和 “1045 - Access denied”,以及它們的解決方案,需要的朋友可以參考下
    2025-05-05
  • mysql select緩存機制使用詳解

    mysql select緩存機制使用詳解

    這篇文章主要介紹了mysql select緩存機制使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • mysql請求阻塞問題解析

    mysql請求阻塞問題解析

    這篇文章主要介紹了mysql請求阻塞問題解析,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-10-10
  • Mysql日志文件和日志類型介紹

    Mysql日志文件和日志類型介紹

    這篇文章主要介紹了Mysql日志文件和日志類型介紹,本文講解了日志文件類型、錯誤日志、通用查詢?nèi)罩?、慢速查詢?nèi)罩?、二進制日志等內(nèi)容,需要的朋友可以參考下
    2014-12-12
  • MySQL約束條件及設(shè)置方式

    MySQL約束條件及設(shè)置方式

    文章主要介紹了數(shù)據(jù)庫中約束條件的設(shè)置,包括主鍵約束、自增約束、非空約束、唯一性約束、無符合約束、默認約束和外鍵約束,以及如何在數(shù)據(jù)庫中設(shè)置這些約束條件
    2025-01-01
  • mysql limit分頁優(yōu)化詳細介紹

    mysql limit分頁優(yōu)化詳細介紹

    MySQL最常用也最需要優(yōu)化的就是limit,MySQL的limit給分頁帶來了極大的方便,但數(shù)據(jù)量一大的時候,limit的性能就急劇下降,需要的朋友可以參考下
    2016-12-12
  • Centos6.4編譯安裝mysql 8.0.0 詳細教程

    Centos6.4編譯安裝mysql 8.0.0 詳細教程

    這篇文章主要為大家分享了Centos6.4編譯安裝mysql 8.0.0 詳細教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11

最新評論

文登市| 佛学| 东乌| 喀什市| 西安市| 远安县| 于都县| 香港| 馆陶县| 海南省| 怀集县| 马公市| 家居| 旬邑县| 白山市| 启东市| 诸城市| 湟中县| 子洲县| 临汾市| 丰县| 全南县| 靖州| 哈尔滨市| 太保市| 双鸭山市| 饶河县| 伊金霍洛旗| 东丰县| 平陆县| 共和县| 安乡县| 清流县| 龙游县| 玉田县| 宜君县| 宁国市| 英吉沙县| 嘉定区| 永德县| 襄樊市|