MySQL 是一種開(kāi)源的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)。在 MySQL 中,數(shù)據(jù)是以表格的形式存儲(chǔ)的,每個(gè)表格中有若干個(gè)數(shù)據(jù)行(record),每個(gè)數(shù)據(jù)行中有若干個(gè)數(shù)據(jù)列(column)。
MySQL 中存儲(chǔ)數(shù)據(jù)的方式分為物理存儲(chǔ)和邏輯存儲(chǔ)。物理存儲(chǔ)指的是數(shù)據(jù)在硬盤(pán)中的存儲(chǔ)形式,而邏輯存儲(chǔ)指的是數(shù)據(jù)在 MySQL 中的抽象表示。
MySQL 中數(shù)據(jù)的物理存儲(chǔ)方式是使用 B+ 樹(shù),這是一種常用的索引結(jié)構(gòu)。B+ 樹(shù)的每個(gè)節(jié)點(diǎn)包含若干個(gè)關(guān)鍵字和若干個(gè)指向下一級(jí)節(jié)點(diǎn)的指針。在 MySQL 中,B+ 樹(shù)的葉子節(jié)點(diǎn)存儲(chǔ)了數(shù)據(jù)的真實(shí)內(nèi)容。
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(30) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
上面的代碼展示了一個(gè)用于存儲(chǔ)用戶信息的 `test` 表的結(jié)構(gòu)。其中 `id` 列是一個(gè)自增列,`name` 列是一個(gè)字符串類(lèi)型的列,`age` 列是一個(gè)整型列。這個(gè)表格的建立語(yǔ)句中還指定了使用 InnoDB 存儲(chǔ)引擎,并且使用 UTF-8 字符編碼。
MySQL 實(shí)現(xiàn)了多種不同的存儲(chǔ)引擎,不同的引擎有不同的特點(diǎn)和適用場(chǎng)景。例如,InnoDB 存儲(chǔ)引擎支持事務(wù)和行級(jí)鎖,適合用于高并發(fā)的 OLTP 系統(tǒng)。而 MyISAM 存儲(chǔ)引擎不支持事務(wù),但對(duì)于讀密集型應(yīng)用效率比較高。