mysql 单表数据量多大_MySQL单表到底可以多大
前天突然收到Monitor Center發出來的報警:
PROBLEM:CN_DSL_***4/MAXFILE is CRITICAL,SNMP CRITICAL – *These File size is larger than 18932735283: /abc/def/ghi/***/***.MYD
剛看到這個報警的時候,還嚇了一跳。數據文件超過最大文件限制?不會吧?好像才18G嘛,怎么會就開始報警了?
于是開始查找報警來源,經過一番查找,總算找到服務器來設計的。所以他們在mysql的“.MYD”和“.MYI”文件。
說到文件大小,剛好常有人問我說mysql是否有單個表的大小限制?限制多大呢?這里做一個簡單的介紹吧。
在老版本的mysql 3.22中,mysql的單表限大小為4GB,當時的mysql的mysql 3.23開始,mysql單表最大限制就已經擴大到了64PB了(官方文檔顯示)。也就是說,從目前的技術環境來看,mysql數據庫的MyISAM存儲引擎單表大小限制已經不是有mysql數據庫本身來決定,而是由所在主機的OS上面的文件系統來決定了。
而mysql另外一個最流行的存儲引擎之一Innodb存儲數據的策略是分為兩種的,一種是共享表空間存儲方式,還有一種是獨享表空間存儲方式。
當使用共享表空間存儲方式的時候,Innodb的所有數據保存在一個單獨的表空間里面,而這個表空間可以由很多個文件組成,一個表可以跨多個文件存在,所以其大小限制不再是文件大小的限制,而是其自身的限制。從Innodb的官方文檔中可以看到,其表空間的最大限制為64TB,也就是說,Innodb的單表限制基本上也在64TB左右了,當然這個大小是包括這個表的所有索引等其他相關數據。
而當使用獨享表空間來存放Innodb的表的時候,每個表的數據以一個單獨的文件來存放,這個時候的單表限制,又變成文件系統的大小限制了。
以下是從收集到的一點信息,不一定全部準確:
操作系統??????????????????????????????????? 大小限制
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单表到底可以多大的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [转]performSelector延时
- 下一篇: kafka单条消息太大引起的线上故障