MySQL是目前世界上應(yīng)用最廣泛的開源關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它不僅具備高性能、高可用性、高可靠性,而且還支持多線程、多用戶、多數(shù)據(jù)庫等特性。然而,MySQL也存在一些限制,其中最為人所知的就是表的最大行數(shù)只能為65536。
這個(gè)限制源于MySQL的表結(jié)構(gòu)設(shè)計(jì),MySQL在設(shè)計(jì)表結(jié)構(gòu)時(shí)采用了基于MyISAM
存儲(chǔ)引擎的默認(rèn)格式,而MyISAM
的存儲(chǔ)引擎最大支持的行數(shù)為65536。
CREATE TABLE mytable (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL
) ENGINE = MyISAM;
雖然MySQL的行數(shù)限制為65536,但我們還是有一些方法可以突破這個(gè)限制。其中最常用的方法是通過采用其他存儲(chǔ)引擎,如InnoDB
,來使得MySQL支持更多的行數(shù)。
CREATE TABLE mytable (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(20) NOT NULL
) ENGINE = InnoDB;
InnoDB
存儲(chǔ)引擎支持的最大行數(shù)為無限制,有些版本的MySQL甚至可以支持超過百萬行的數(shù)據(jù)。
此外,我們還可以將一個(gè)大表分割成多個(gè)小表,從而達(dá)到存儲(chǔ)更多數(shù)據(jù)的目的。當(dāng)然,這個(gè)方法需要我們在程序設(shè)計(jì)時(shí)做好分表的設(shè)計(jì)和實(shí)現(xiàn)。
總之,MySQL的表行數(shù)限制是存在的,但我們可以采用多種方法來突破這個(gè)限制。