請問一下mysql是不是限制了單個表的容量,能改嗎

lzq0107發表於2020-04-07
這個要看你的表用什麼儲存引擎吧

如果你用myisam儲存引擎的話,則一個表會包含有3個檔案:frm、MYD、MYI。
mysql沒對這些檔案作大小限制,其大小受你作業系統對單個檔案的最大大小的限
制的影響。

如果你用innodb儲存引擎,一般情況下,資料都是集中存放在ibdata裡面(ibdata
可以設成多個),ibdata的大小受引數innodb_data_file_path限制(但一般都設定
自動增長),當然了,其大小也受你作業系統對單個檔案的最大大小的限制的影響。

mysql> show variables like 'innodb_data_file_path';
+-----------------------+------------------------+
| Variable_name         | Value                  |
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:10M:autoextend |
+-----------------------+------------------------+
1 row in set (0.00 sec)

mysql>
InnoDB儲存引擎將InnoDB表儲存在一個表空間內,該表空間可由數個檔案建立。這樣,
表的大小就超過單獨檔案的最大容量。表空間可包括原始磁碟分割槽,從而使得很大的表成為
可能。表空間的最大容量為64TB。

MySQL單表大小是有受到限制的,下面就為您詳細介紹MySQL單表大小的限制,如果您遇到過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更改這些選項,以增加表的最大允許容量。

相關文章