MySQL單表大小的限制在目前的技術環境中,由所在主機的OS上面的文件系統來界定而不是由MySQL數據庫本身來決定了。
在老版本的MySQL 3.22中,MySQL單表大小為4GB,當時的MySQL的存儲引擎還是ISAM存儲引擎。但是,當出現MyISAM存儲引擎之後,也就是從MySQL 3.23開始,MySQL單表最大限制就已經擴大到了64PB了官方文檔顯示)。也就是說,從目前的技術環境來看,MySQL數據庫的MyISAM存儲引擎單表大小限制已經不是由MySQL數據庫本身來決定,而是由所在主機的OS上面的文件系統來決定了。
而MySQL另外一個最流行的存儲引擎之一Innodb存儲數據的策略是分為兩種的,一種是共享表空間存儲方式,還有一種是獨享表空間存儲方式。
當使用共享表空間存儲方式的時候,Innodb的所有數據保存在一個單獨的表空間裡面,而這個表空間可以由很多個文件組成,一個表可以跨多個文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。從Innodb的官方文檔中可以看到,其表空間的最大限制為64TB,也就是說,Innodb的單表限制基本上也在64TB左右了,當然這個大小是包括這個表的所有索引等其他相關數據。
而當使用獨享表空間來存放Innodb的表的時候,每個表的數據以一個單獨的文件來存放,這個時候的單表限制,又變成文件系統的大小限制了。
以下是從收集到的一點信息,不一定全部准確:
操作系統 大小限制
Java代碼
win32 w/ FAT/FAT32 2GB/4GB
win32 w/ NTFS 2TB可能更大)
Linux 2.2-Intel 32-bit 2GB (LFS: 4GB)
Linux 2.4+ 4TB(ext3)
Solaris 9/10 16TB
NetWare w/NSS filesystem 8TB
MacOS X w/ HFS+ 2TB
win32 w/ FAT/FAT32 2GB/4GB
win32 w/ NTFS 2TB可能更大)
Linux 2.2-Intel 32-bit 2GB (LFS: 4GB)
Linux 2.4+ 4TB(ext3)
Solaris 9/10 16TB
NetWare w/NSS filesystem 8TB
MacOS X w/ HFS+ 2TB
以下是MySQL文檔中的內容:
Windows用戶請注意: FAT和VFAT (FAT32)不適合MySQL的生產使用。應使用NTFS。
在默認情況下,MySQL創建的MyISAM表允許的最大尺寸為4GB。你可以使用SHOW TABLE STATUS語句或myisamchk -dv tbl_name檢查表的最大尺寸。請參見13.5.4節,“SHOW語法”。
如果需要使用大於4GB的MyISAM表而且你的操作系統支持大文件),可使用允許AVG_ROW_LENGTH和MAX_ROWS選項的CREATE TABLE語句。創建了表後,也可以使用ALTER TABLE更改這些選項,以增加表的最大允許容量。
教您一個MySQL源碼包安裝方法
MySQL創建關聯表的方法
Mysql建表實例
MySQL查詢中日期格式轉換函數簡介
MySQL查詢漢字拼音首字母的實現