MySQL自增ID突然超級大(Copilot的回答)與重置方法
結論:關係型資料庫事務被截斷或回滾,id不會被釋放 重置語法:
ALTER TABLE 表名 AUTO_INCREMENT = 初始值;
延伸閱讀:一個表只能有一個自增列
原本的回答
提交事務不會直接占用ID,但在事務過程中,如果有新的數據插入,會生成新的ID。這是因為數據庫的自增ID是為了保證每條記錄的唯一性。當你在一個事務中插入一條新的記錄時,數據庫會自動為這條新記錄分配一個新的ID¹。
在事務提交的過程中,如果事務成功,那麽這個新的ID就會被正式分配給這條新記錄。如果事務失敗並回滾,那麽這個新的ID雖然不會被使用,但是也不會被回收,會造成ID的浪費¹。
此外,如果你在事務中多次插入新的記錄,那麽每插入一次,就會生成一個新的ID。即使這些操作最後因為事務失敗而被回滾,這些生成的ID也都會被浪費¹。
因此,頻繁的插入和回滾操作可能會導致ID的快速增長,從而使ID看起來“超大”。如果你發現ID比預期的大很多,可能就是這個原因¹。
希望這個解答能幫到你!如果還有其他問題,歡迎繼續提問。¹²³
來源: 與 Copilot 的交談, 2024/7/3 (1) MySQL 核心模塊揭祕 | 11 期 | InnoDB 提交事務,提交了什麼?. https://www.twblogs.net/a/6604ef41f57b61b1f7af21c5. (2) 實作練習 : 交易 (事務) 操作 commit 以及 rollback - MySQL Taiwan : 台灣MySQL技術研究站. https://www.mysql.tw/2024/05/start-transaction-commit-rollback.html. (3) MySQL筆記(7)- 事務和實現 - ⎝⎛CodingNote.cc. https://codingnote.cc/zh-tw/p/81171/.