成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

字節面試:MySQL自增ID用完會怎樣?

數據庫 其他數據庫
如果表沒有設置主鍵,InnoDB 會自動創建一個全局隱藏的 row_id,其長度為 6 個字節,當 row_id 達到上限后,它的執行流程和主鍵 ID 不同,它是再次歸零,然后重新遞增,如果出現相同的 row_id,后面的數據會覆蓋之前的數據。

在一些中小型項目開發中,我們通常會使用自增 ID 來作為主鍵的生成策略,但隨著時間的推移,數據庫的信息也會越來越多,尤其是使用自增 ID 作為日志表的主鍵生成策略時,可能很快就會遇到 ID 被用完的情況,那么如果發生了這種情況,MySQL 又會怎樣執行呢?

PS:當然,在分庫分表的場景中,我們通常會使用雪花算法來替代自增 ID,但中小型項目開發中,使用自增 ID 的場景還是比較多的。

1.自增ID

在 MySQL 中,如果字段的數據類型為整數類型(如 INT、BIGINT 等),則可以通過關鍵字“AUTO_INCREMENT”來設置讓當前的字段實現自增,例如以下 SQL:

CREATE TABLE example_table (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(128)
);

1.1 優點分析

自增 ID 的優點如下:

  1. 簡單方便,能自動為每行數據分配唯一的標識。
  2. 對于按順序插入的數據,能很好地反映數據插入的先后順序。

1.2 缺點分析

自增 ID 的缺點如下:

  • 在數據進行遷移或分庫分表時,可能會出現問題,需要特殊處理。
  • 如果數據量非常大,可能會達到自增 ID 的上限。
  • 存在安全性問題,比如通過自增 ID 可能會推測出一些業務信息。例如,一個電商訂單表使用自增 ID 作為主鍵,可能會被競爭對手通過訂單號大致推測出業務量等信息。

2.自增ID用完會怎樣?

自增 ID 分為以下兩種情況:

圖片圖片

一種是主鍵自增 ID 用完后的情況,另一種是 InnoDB 引擎中未設置主鍵時使用 row_id 用完后的場景,它們的情況是不一樣的,所以我們分開來聊。

2.1 主鍵自增ID用完

當主鍵自增 ID 達到上限后,再新增下一條數據時,它的 ID 不會變(還是最大的值),只是此時再添加數據時,因為主鍵約束的原因,ID 是不允許重復的,所以就會報錯提示主鍵沖突。

我們可以使用以下 SQL 來測試:

CREATE TABLE t (
    id INT AUTO_INCREMENT PRIMARY KEY,
    `name` VARCHAR(128)
) auto_increment=2147483647;
insert into t(id,`name`) values(null,'javacn.site');
select * from t;
insert into t(id,`name`) values(null,'www.javacn.site');

以上 SQL 是創建了一個表 t,并且給 t 表的主鍵 id 設置自增 ID,之后再將表的自增 ID 初始化為 INT(有符號)的最大值 2147483647,然后再添加兩條數據。

以上 SQL 的執行結果如下:

圖片圖片

從上面的執行結果可以看出:當主鍵自增 ID 達到上限后,再新增下一條數據時,它的 ID 不會變(還是最大的值),只是此時再添加數據時,因為主鍵約束的原因,ID 是不允許重復的,所以就會報錯提示主鍵沖突。

2.2 row_id用完

如果表沒有設置主鍵,InnoDB 會自動創建一個全局隱藏的 row_id,其長度為 6 個字節,當 row_id 達到上限后,它的執行流程和主鍵 ID 不同,它是再次歸零,然后重新遞增,如果出現相同的 row_id,后面的數據會覆蓋之前的數據。

責任編輯:武曉燕 來源: Java中文社群
相關推薦

2024-11-11 00:00:06

MySQLID數據類型

2023-10-17 09:41:04

自增主鍵MySQL

2020-03-28 15:50:18

數據庫自增ID維護

2019-09-18 15:49:06

MySQL數據庫面試官

2024-07-01 09:00:16

2023-10-24 15:27:33

Mysql自增主鍵

2018-12-14 15:35:20

MySQL索引數據庫

2022-06-24 09:22:15

MySQL自增id

2022-11-08 19:30:52

DjangoID自增

2023-12-26 01:09:28

MySQL存儲釋放鎖

2024-12-25 15:32:29

2010-03-29 14:09:12

Oracle ID 自

2022-05-18 09:49:26

MySQLID數據庫

2022-02-14 15:03:50

MySQL程序員面試

2022-06-03 08:12:52

InnoDB插入MySQL

2021-05-31 19:50:04

MySQL自增鎖InnoDB

2024-10-24 09:22:30

2022-08-17 08:17:01

SPI機制接口

2010-04-26 14:03:02

Oracle使用

2011-01-18 09:47:33

自增ID
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 华丽的挑战在线观看 | 91大神在线资源观看无广告 | 久久久久久一区 | 日日夜夜天天 | 久久久久久久久久久一区二区 | 国产真实精品久久二三区 | 欧美一区2区三区4区公司 | 99久久免费精品国产男女高不卡 | 欧美在线观看一区 | 中文字幕一区二区三区精彩视频 | 91av在线影院 | 国产精品一区在线观看 | 国产精品久久久久久久久久久久午夜片 | 成人精品国产 | 日一区二区 | 久久精品国产免费高清 | 99自拍视频 | 欧美一区2区三区4区公司 | 99re国产| 国产特级毛片 | 久久青青| 999久久久久久久久6666 | 亚洲三级国产 | 国产精品久久久久久久午夜片 | 欧美精品一级 | 中文字幕在线人 | 国产福利资源在线 | 亚洲国产一区二区三区 | 成人一区二区三区在线观看 | 91精品国产综合久久久久久 | 日韩欧美一区在线 | 中文字幕免费观看 | 欧美激情国产精品 | 成人av网站在线观看 | 久久久久久99 | 天天躁日日躁狠狠的躁天龙影院 | 亚洲精品自拍视频 | 国产一区久久 | 国产美女黄色片 | 美女视频h | 九九国产在线观看 |