首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 單表大小限制詳解:MyISAM 64PB、InnoDB 64TB、作業系統檔案系統才是真正天花板

     編輯:MySQL 綜合教學

前言

MySQL 單表大小上限不由 MySQL 決定,而由作業系統檔案系統決定。本文詳述 MyISAM、InnoDB 兩大主流引擎的理論上限與實際限制因素。

歷史演進

版本引擎單表上限
MySQL 3.22ISAM4 GB
MySQL 3.23+MyISAM64 PB (2^64 bytes)
InnoDB 共享表空間InnoDB64 TB (表空間上限)
InnoDB 獨立表空間InnoDB受限於檔案系統單檔上限

引擎詳解

MyISAM

  • 理論上限 64 PB,實際受限於檔案系統單檔大小(.MYD、.MYI)。
  • 預設建表上限 4 GB,需指定 AVG_ROW_LENGTH、MAX_ROWS 突破:
CREATE TABLE t (...) 
AVG_ROW_LENGTH=1000 MAX_ROWS=1000000000 
ENGINE=MyISAM;
  • 事後調整:ALTER TABLE t MAX_ROWS=2000000000 AVG_ROW_LENGTH=1000;

InnoDB 共享表空間

  • 所有資料集中於 ibdata1、ibdata2... 共享表空間。
  • 單表可跨多檔,不受單檔限制,上限為表空間 64 TB。

InnoDB 獨立表空間 (innodb_file_per_table=ON)

  • 每表獨立 .ibd 檔案,再次受限於檔案系統單檔上限。

主流作業系統檔案大小上限

作業系統 / 檔案系統單檔上限
Windows FAT324 GB
Windows NTFS2 TB (理論 16 EB)
Linux ext2/3 (32-bit)2 GB (LFS 4 GB)
Linux ext4 / XFS (64-bit)16 TB ~ 1 EB
Solaris 9/10 (ZFS/UFS)16 TB
NetWare NSS8 TB
macOS HFS+ / APFS2 TB / 8 EB

官方建議

  • Windows 生產環境必須使用 NTFS,FAT/VFAT 不適合。
  • 大表規劃前確認檔案系統支援度。
  • InnoDB 推薦啟用 innodb_file_per_table 便於管理與備份。

相關延伸閱讀

  • MySQL 原始碼套件安裝方法
  • MySQL 建立關聯表方法
  • MySQL 建表實例
  • MySQL 日期格式轉換函數
  • MySQL 查詢漢字拼音首字母
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved