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

MySQL?8.0自增變量的持久化問題小結

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

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

在MySQL 8.0之前,自增主鍵AUTO_INCREMENT的值如果大于max(primary key)+1,在MySQL重啟后,會重置AUTO_INCREMENT=max(primary key)+1,這種現(xiàn)象在某些情況下會導致業(yè)務主鍵沖突或者其他難以發(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ù),結果如下:
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ù),結果如下:
mysql> SELECT * FROM test1;
+----+
| id |
+----+
| 1 |
| 2 |
| 3 |
| 5 |
+----+
4 rows in set (0.00 sec)
-- 從結果可以看出,雖然刪除了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ù),結果如下:

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)

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

MySQL 8.0測試

上述測試步驟最后一步的結果如下:

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

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

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

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

相關文章

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

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

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

    一文帶你學會Mysql表批量添加字段

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

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

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

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

    寶塔面板是一款流行的服務器管理工具,其中集成的 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請求阻塞問題解析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-10-10
  • Mysql日志文件和日志類型介紹

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

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

    MySQL約束條件及設置方式

    文章主要介紹了數(shù)據(jù)庫中約束條件的設置,包括主鍵約束、自增約束、非空約束、唯一性約束、無符合約束、默認約束和外鍵約束,以及如何在數(shù)據(jù)庫中設置這些約束條件
    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

最新評論

宁远县| 邹城市| 公主岭市| 奈曼旗| 普兰店市| 通榆县| 汽车| 日照市| 永嘉县| 东港市| 张家界市| 上栗县| 上栗县| 兰坪| 松潘县| 饶河县| 临洮县| 北碚区| 元氏县| 石首市| 榆中县| 宁海县| 韶山市| 淳化县| 汉沽区| 溧水县| 呼伦贝尔市| 海伦市| 涡阳县| 伊川县| 苍山县| 抚州市| 叙永县| 井研县| 民权县| 大连市| 三原县| 河池市| 泉州市| 祥云县| 安溪县|