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


在8.0之前的版本,自增值是保存在內存中,自增主鍵AUTO_INCREMENT的值如果大於max(primary key)+1,在MySQL重啟后,會重置AUTO_INCREMENT=max(primary key)+1。這種現象在某些情況下會導致業務主鍵沖突或者其他難以發現的問題。自增主鍵重啟重置的問題很早就被發現(https://bugs.mysql.com/bug.php?id=199),一直到8.0才被解決。8.0版本將會對AUTO_INCREMENT值進行持久化,MySQL重啟后,該值將不會改變。
8.0開始,當前最大的自增計數器每當發生變化,值會被寫入redo log中,並在每個檢查點時候保存到private system table中。這一變化,對AUTO_INCREMENT值進行持久化,MySQL重啟后,該值將不會改變。
•MySQL server重啟后不再取消AUTO_INCREMENT = N表選項的效果。如果將自增計數器初始化為特定值,或者將自動遞增計數器值更改為更大的值,新的值被持久化,即使服務器重啟。
•在回滾操作之后立即重啟服務器將不再導致重新使用分配給回滾事務的自動遞增值。
•如果將AUTO_INCREMEN列值修改為大於當前最大自增值(例如,在更新操作中)的值,則新值將被持久化,隨后的插入操作將從新的、更大的值開始分配自動增量值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM