MySQL 數(shù)據(jù)目錄
確定 MySQL 數(shù)據(jù)目錄:
> SHOW VARIABLES LIKE 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
1 row in set (0.00 sec)
MySQL 系統(tǒng)數(shù)據(jù)庫
MySQL 還有幾個系統(tǒng)數(shù)據(jù)庫:
- mysql
存儲了MySQL 的用戶賬戶和權(quán)限信息衡查,一些存儲過程和事件的定義信息,一些運(yùn)行過程中產(chǎn)生的日志信息壁晒,一些幫助信息和時區(qū)信息嚷往。 - information_schema
保存MySQL服務(wù)器維護(hù)的所有其他數(shù)據(jù)庫的元信息邢笙,比如哪些表泞当,哪些視圖洪鸭,哪些觸發(fā)器,哪些列和索引蒜撮。 - performance_schema
主要保存MySQL服務(wù)器運(yùn)行過程中的一些狀態(tài)信息暴构,主要作用用于對MySQL的性能監(jiān)控。 - sys
差不多同上段磨。
表空間
InnoDB 是使用頁為基本單位來管理存儲空間的取逾。為了更好的管理這些頁面,InnoDB 提出了 表空間 的概念苹支。
這個表空間是一個抽象的概念砾隅,它可以對應(yīng)文件系統(tǒng)上一個或多個真實(shí)文件,每一個表空間可以被劃分為很多個頁债蜜,表數(shù)據(jù)就存放在某個表空間下的某些頁中晴埂。主要有以下類型:
-
系統(tǒng)表空間
在默認(rèn)情況下,InnoDB 會在數(shù)據(jù)目錄下創(chuàng)建一個名為 ibdata1文件策幼,這個文件就是對應(yīng)的系統(tǒng)表空間在文件系統(tǒng)上的展示邑时,它是自動擴(kuò)展的。在 MySQL 5.5.7 ~ MySQL 5.6.5 之間的各個版本特姐,表中的數(shù)據(jù)都會被默認(rèn)存儲到這個系統(tǒng)表空間中。
系統(tǒng)表空間也支持我們自定義配置:[server] innodb_data_file_path=data1:512M;data2:512M:autoextend # 表示創(chuàng)建data1 和 data2 各自512MB大小作為系統(tǒng)表空間黍氮,data2 支持自動擴(kuò)展大小唐含。
-
獨(dú)立表空間
在 MySQL 5.6.6 之后,InnoDB 不再默認(rèn)把各個表的數(shù)據(jù)存儲到系統(tǒng)表空間中沫浆,而是為每一個表建立一個獨(dú)立的表空間捷枯。InnoDB 會在對應(yīng)的數(shù)據(jù)庫子目錄中創(chuàng)建一個表名.frm
的文件存儲表結(jié)構(gòu), 在對應(yīng)的數(shù)據(jù)庫子目錄中創(chuàng)建一個表名.ibd
的文件存儲數(shù)據(jù)专执。我們也可以自己決定使用系統(tǒng)表還是獨(dú)立表空間淮捆,在配置文件中加入:
[server] innodb_file_per_table=0 # 0 表示使用系統(tǒng)表空間,1表示使用獨(dú)立表空間本股。
該配置只針對新建的表攀痊,如果需要已經(jīng)分配了的表可以使用命令遷移:
ALTER TABLE 表名 TABLESPACE innodb_system # 轉(zhuǎn)移到系統(tǒng)表空間 ALTER TABLE 表名 TABLESPACE innodb_file_per_table # 轉(zhuǎn)移到獨(dú)立表空間
其他類型表空間
通用表空間,undo 表空間拄显,臨時表空間苟径。