狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識交流 PMS教程 CRM教程 開發文檔 其他文檔  
 
網站管理員

SQL的自增長 ID 用完了,怎么辦?到底該用 int 還是 bigint 類型?

admin
2024年6月17日 10:36 本文熱度 1099
SQLServer / MySQL 自增長 ID 一般用的數據類型是 INT 或 BIGINT,正常情況下這兩種類型可以滿足大多數應用的需求。

當然也有不正常的情況,當達到其最大值時,嘗試插入新的記錄會導致錯誤,錯誤信息類似于:
ERROR 167 (22003): Out of range value for column 'id' at row 1
下面我們就來看看  INT 或 BIGINT 到底能插入多少的數據。


1、INT 
INT 類型占用 4 個字節,范圍:-2,147,483,648 到 2,147,483,647(如果是無符號類型,則范圍是 0 到 4,294,967,295
也就是說 INT 類型存儲量將近可以達到 43 億,看著數量,感覺可以存儲很多條記錄了,我們就來計算下:
一年 365 天一天 24 小時一小時 60 分鐘一分鐘 60 秒如果每秒鐘存儲 100 條記錄看看能用多久:
# INT 的最大值max_int_value =  4294967295
# 每秒記錄數records_per_second = 100
# 每年的秒數records_per_year = 365 * 24 * 60 * 60result = max_int_value/(records_per_second * records_per_year)
print(result)# 結果:1.3619251950152207
結果就為 1.3619251950152207也就是能存儲 1 年多的時間,看來確實不太夠,使用 INT 類型,如果數據量過多,自增 ID 很容超過最大數值。


2、BIGINT
BIGINT 占用 8 個字節,范圍:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807(如果是無符號類型,則范圍是 0 到 18,446,744,073,709,551,615
假如公司是我家,我準備在公司呆個 100 年,我們來計算下 BIGINT 使用 100 年支持每秒插入多少數據。

BIGINT 類型的最大值:

無符號 BIGINT 類型的最大值為18,446,744,073,709,551,615。

計算 100 年的秒數:
100×365天/年×24小時/天×60分鐘/小時×60秒/分鐘 = 3,153,600,000
# BIGINT 的最大值max_bigint = 18446744073709551615
# 100年的秒數seconds_in_100_years = 365*24*60*60*100
# 計算結果result = max_bigint / seconds_in_100_years
print(result)# 結果:5849424173.55072
結果為 5849424173.55072 相當于每秒鐘插入 58 億的數據,這樣的數據雙十一都不知有沒達到,我用 AI 查找了下淘寶雙十一歷史的最大并發生:
這樣看,我如果使用 ,在公司干個 100 年完全沒問題,即便公司能活 100 年,老板也活不過 120+(假設老板 20 歲出來繼承家業),也就是即便我把老板送走,都達不到最大的值。
所以我們只要把自增 ID 設置為 BIGINT 類型,你根本就不用擔心自增 ID 會用完,而是要擔心公司能不能活的比 BIGINT 更長。
總結:INT 類型在大多數情況下足夠使用,當需要更大的數值范圍時,可以考慮使用 BIGINT 類型。
如果你的自增 ID 是 INT  類型,要修改 INT 為 BIGINT 可以使用 ALTER 命令:
-- 創建表CREATE TABLE orders (    id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,    order_data VARCHAR(255));-- 查看表結構DESCRIBE orders;-- 修改自增列的數據類型ALTER TABLE orders MODIFY id BIGINT UNSIGNED AUTO_INCREMENT;-- 再次查看表結構,確認修改DESCRIBE orders;

注意事項

  1. 備份數據:在進行表結構修改之前,最好備份數據,以防止操作過程中出現意外情況。
  2. 鎖表:在修改表結構時,表可能會被鎖定,導致短暫的寫操作中斷。盡量在業務低峰期進行操作。
  3. 外鍵約束:如果有外鍵約束涉及到要修改的列,需要先刪除相關外鍵約束,修改列類型后再重新添加外鍵約束。

該文章在 2024/6/17 10:40:18 編輯過
關鍵字查詢
相關文章
正在查詢...
點晴ERP是一款針對中小制造業的專業生產管理軟件系統,系統成熟度和易用性得到了國內大量中小企業的青睞。
點晴PMS碼頭管理系統主要針對港口碼頭集裝箱與散貨日常運作、調度、堆場、車隊、財務費用、相關報表等業務管理,結合碼頭的業務特點,圍繞調度、堆場作業而開發的。集技術的先進性、管理的有效性于一體,是物流碼頭及其他港口類企業的高效ERP管理信息系統。
點晴WMS倉儲管理系統提供了貨物產品管理,銷售管理,采購管理,倉儲管理,倉庫管理,保質期管理,貨位管理,庫位管理,生產管理,WMS管理系統,標簽打印,條形碼,二維碼管理,批號管理軟件。
點晴免費OA是一款軟件和通用服務都免費,不限功能、不限時間、不限用戶的免費OA協同辦公管理系統。
Copyright 2010-2025 ClickSun All Rights Reserved