站長資訊網
最全最豐富的資訊網站

你知道MySQL innodb自增ID BUG有多大影響嗎?

這些年的 MySQL 都白用了。。。你知道MySQL innodb 自增ID BUG 影響現有 99% 的系統嗎。。。

你知道MySQL innodb自增ID BUG有多大影響嗎?

程序員必備接口測試調試工具:立即使用
Apipost = Postman + Swagger + Mock + Jmeter
Api設計、調試、文檔、自動化測試工具
后端、前端、測試,同時在線協作,內容實時同步

首先我們來復現一下這個神奇的問題:

創建一個測試表,有個自增ID,然后插入 3 條數據,刪除 id = 3 的那條。

DROP TABLE IF EXISTS `test`; CREATE TABLE `test`  (   `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,   PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci ROW_FORMAT = Dynamic;   insert into test values (); select LAST_INSERT_ID(); insert into test values (); select LAST_INSERT_ID(); insert into test values (); select LAST_INSERT_ID(); delete from test where id = 3;
登錄后復制

然后,我們重啟一下 MySQL 服務。

再來插入一條記錄,看一下最后插入ID。。。

insert into test values (); select LAST_INSERT_ID(); select * from test;
登錄后復制

結果就是,重啟后,再插入記錄,ID依然還是3!!!

原來 innodb 的自增ID,會在服務重啟后,自動設置為記錄中最大ID + 1。

這個問題,只要是做物理刪除的系統里,100%可以復現。

假設某個表的自增ID,還會和其它記錄相關聯。

極端情況下,重啟服務前刪除了最大ID的記錄,服務恢復后插入記錄再去關聯。。。

數據混亂問題不敢想象!

好在,這個問題在 MySQL 8.0 中已經修復!

如果你是 MySQL 5.7 或更舊的版本用戶,也不用擔心,多種解決方案如下:

* 系統中的物理刪除,全部改為軟刪除。一般框架內置此功能,修改重構很方便。

* 啟用 innodb_autoinc_persistent 設置,性能有 1% 損耗,可以忽略不計。

innodb_autoinc_persistent=on innodb_autoinc_persistent_interval=1
登錄后復制

推薦學習:《MySQL視頻教程》

贊(0)
分享到: 更多 (0)
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
国产福利精品一区二区| 精品视频在线免费观看| 日韩精品视频免费在线观看| 久久久午夜精品福利内容| 色综合91久久精品中文字幕 | 国产精品久久免费| 日韩精品无码一区二区中文字幕| 国产精品对白刺激久久久| 在线精品自偷自拍无码中文 | 亚洲第一区精品观看| 国产精品成久久久久三级| 亚洲性日韩精品国产一区二区| 四虎成人精品永久免费AV| 精品视频一区二区三三区四区| 91久久精品国产免费一区 | 日韩在线不卡视频| 91精品国产高清久久久久久91| 亚洲一区日韩高清中文字幕亚洲| 麻豆精品不卡国产免费看| 国产精品福利在线| 久久亚洲国产成人精品无码区| 久久九九AV免费精品| 国产精品久久久久久久久久久搜索| 国产亚洲精品福利在线无卡一| 亚洲精品电影天堂网| 亚洲精品无码日韩国产不卡?V| 成人国产精品一区二区网站| 国产精品熟女一区二区| 国产产在线精品亚洲AAVV| 中文字幕一区二区三区日韩精品| 老司机精品视频在线| 欧美日韩精品一区二区在线视频| 久久国产免费观看精品| 精品97国产免费人成视频 | 国产AV国片精品| 久9re热视频这里只有精品| 久久精品免费观看| 日韩一级在线视频| 免费无码精品黄AV电影| 国产成人精品午夜福利| 亚洲А∨精品天堂在线|