MySQL 自增列持久化問題

2022-04-08 18:32:47 字數 718 閱讀 2219

自增列持久化問題

5.5/5.6/5.7三個版本中,mysql並不會將自增列分配的自增值資訊固化到磁碟,當mysql重啟後,會根據自增列上當前最大值和引數auto_increment_offset來確定下一次的自增值,為快速獲取自增列上最大值,mysql要求自增列必須建有索引。

如果一張自增表的資料在重啟例項前被清空,例項重啟後該錶資料會從」1」開始自增(假設表的自增初始值定義為1)。

在某次資料庫公升級過程中,某張業務表」恰好」因為業務邏輯將表中所有資料刪除,重啟後該錶自增值從1開始生成,當該表資料流轉到其他表出現資料衝突,發現問題後,我們緊急手動設定該錶自增值,避免事故進一步惡化,並再後期類似操作時,重點關注此類自增表。

如果業務會對自增表資料進行硬刪除,在伺服器重啟前應重點關注該自增表使用的自增值,可以通過information_schema.tables中的auto_increment列來獲取。

ps1:在mysql 8.0中引入自增列持久化特性,可以避免上述問題。

自增列初始值問題

自增列初始值和增量值取決於:

1、全域性引數auto_increment_increment和auto_increment_offset,這兩引數作用於所有自增表,主要應用於分庫分布場景。

2、表建立語句, 在使用show create table或mysqldump等命令匯出建表語句時,建表語句中會包含表當前最大值。

3、伺服器重啟後,根據表中自增列最大值確定下一次的自增值。

mysql 自增列相關問題整理

mysql自增列 1.關鍵字 auto increment 2.自增用法 例 create table animals id mediumint not null auto increment,name char 30 not null,primary key id 3.關於自增 q 怎麼獲得當前的...

mysql 自增列相關問題整理

mysql自增列 1.關鍵字 auto increment 2.自增用法 例 create table animals id mediumint not null auto increment,name char 30 not null,primary key id 3.關於自增 q 怎麼獲得當前的...

Mysql 自增列 主鍵

mysql中假如有 id int auto increment,cid varchar 36 通常情況下都是 id設定為主鍵。假如要設定cid為主鍵。自增列id必需是唯一索引。create table temp id bigint not null auto increment comment 編號...