mysql的數(shù)據(jù)文件
一,系統(tǒng)參數(shù)datadir
在MySQL 中每一個(gè)數(shù)據(jù)庫(kù)都會(huì)在定義好(或者默認(rèn))的數(shù)據(jù)目錄下存在一個(gè)以數(shù)據(jù)庫(kù)名字命名的文件夾,用來(lái)存放該數(shù)據(jù)庫(kù)中各種表數(shù)據(jù)文件?datadir指定的目錄是數(shù)據(jù)庫(kù)目錄的上級(jí)目錄,一般的創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候會(huì)創(chuàng)建兩個(gè)數(shù)據(jù)庫(kù)mysql和test,如果再創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)的話就會(huì)多出一個(gè)對(duì)應(yīng)的數(shù)據(jù)庫(kù)文件夾
mysql> show variables like "%datadir%";
+---------------+-----------------------+
| Variable_name | Value ? ? ? ? ? ? ? ? |
+---------------+-----------------------+
| datadir ? ? ? | /usr/local/mysql/var/ |
+---------------+-----------------------
mysql> system ls ?/usr/local/mysql/var/
ibdata1 ? ? ?ib_logfile1 ?test ? ? test4.pid test4.wolf.org.pid
ib_logfile0 ?mysql ?test4.log ?test4.wolf.org.err
mysql> create database?chen;
Query OK, 1 row affected (0.03 sec)
mysql> system ls ?/usr/local/mysql/var/
chen?ib_logfile0 ?mysql ?test4.logtest4.wolf.org.err
ibdata1 ?ib_logfile1 ?test ? test4.pidtest4.wolf.org.pid
二,MyISAM 引擎的數(shù)據(jù)文件
我們來(lái)在chen數(shù)據(jù)庫(kù)里面創(chuàng)建一個(gè)表試試看,會(huì)產(chǎn)什么變化!!
mysql> use chen;
Database changed
mysql> create table tt(id int ,name varchar(20)) engine=myisam;
Query OK, 0 rows affected (0.15 sec)
結(jié)果生成如下文件
[root@test4 ~]# cd /usr/local/mysql/var/chen/
[root@test4 chen]# ll ?-h
total 20K
-rw-rw----. 1 mysql mysql ? 61 Sep ?4 20:04 db.opt
-rw-rw----. 1 mysql mysql 8.4K Sep ?4 20:22 tt.frm
-rw-rw----. 1 mysql mysql ? ?0 Sep ?4 20:22 tt.MYD
-rw-rw----. 1 mysql mysql 1.0K Sep ?4 20:22 tt.MYI
“.frm”文件?? ? ? ?與表相關(guān)的元數(shù)據(jù)(meta)信息都存放在“.frm”文件中,包括表結(jié)構(gòu)的定義信息等。不論是什么存儲(chǔ)引擎,每一個(gè)表都會(huì)有一個(gè)以表名命名的“.frm”文件。所有的“.frm”文件都存放在所屬數(shù)據(jù)庫(kù)的文件夾下面。而且大小也不會(huì)變化
“.MYD”文件?? ? ? ?“.MYD”文件是MyISAM 存儲(chǔ)引擎專用,存放MyISAM 表的數(shù)據(jù)。每一個(gè)MyISAM 表都會(huì)有一個(gè)“.MYD”文件與之對(duì)應(yīng),同樣存放于所屬數(shù)據(jù)庫(kù)的文件夾下,和“.frm”文件在一起。
“.MYI”文件?? ? ? ?“.MYI”文件也是專屬于MyISAM存儲(chǔ)引擎的,主要存放MyISAM表的索引相關(guān)信息。對(duì)于MyISAM存儲(chǔ)來(lái)說(shuō),可以被cache 的內(nèi)容主要就是來(lái)源于“.MYI”文件中。每一個(gè)MyISAM表對(duì)應(yīng)一個(gè)“.MYI”文件,存放于位置和“.frm”以及“.MYD”一樣。
三,innodb 引擎的數(shù)據(jù)文件
? ? ? ? ? ? innodb_file_per_table參數(shù)的作用是決定innodb引擎的數(shù)據(jù)是不是每個(gè)表一個(gè)文件,也就是說(shuō)是不是每個(gè)表獨(dú)享一個(gè)表文件。off表示的是共享,on表示的是獨(dú)享
mysql> show variables like "%per_table%";
+-----------------------+-------+
| Variable_name ? ? ? ? | Value |
+-----------------------+-------+
| innodb_file_per_table | OFF ? |
+-----------------------+-------+
1 row in set (0.01 sec)
“.ibd”文件和ibdata 文件
? ? ?這兩種文件都是存放Innodb 數(shù)據(jù)的文件,之所以有兩種文件來(lái)存放Innodb 的數(shù)據(jù)(包括索引),是因?yàn)镮nnodb 的數(shù)據(jù)存儲(chǔ)方式能夠通過(guò)配置來(lái)決定是使用共享表空間存放存儲(chǔ)數(shù)據(jù),還是獨(dú)享表空間存放存儲(chǔ)數(shù)據(jù)。?獨(dú)享表空間存儲(chǔ)方式使用“.ibd”文件來(lái)存放數(shù)據(jù),且每個(gè)表一個(gè)“.ibd”文件,文件存放在和MyISAM數(shù)據(jù)相同的位置。
? ? ? ?如果選用共享存儲(chǔ)表空間來(lái)存放數(shù)據(jù),則會(huì)使用ibdata 文件來(lái)存放,所有表共同使用一個(gè)(或者多個(gè),可自行配置)ibdata 文件。ibdata 文件可以通過(guò)innodb_data_home_dir 和innodb_data_file_path兩個(gè)參數(shù)共同配置組成, innodb_data_home_dir 配置數(shù)據(jù)存放的總目錄, 而innodb_data_file_path 配置每一個(gè)文件的名稱。當(dāng)然,也可以不配innodb_data_home_dir而直接在innodb_data_file_path參數(shù)配置的時(shí)候使用絕對(duì)路徑來(lái)完成配置。
mysql> show variables like "%innodb_data%";
+-----------------------+------------------------+
| Variable_name ? ? ? ? | Value ? ? ? ? ? ? ? ? ?|
+-----------------------+------------------------+
| innodb_data_file_path | ibdata1:10M:autoextend |
| innodb_data_home_dir ?| /usr/local/mysql/var ? |
+-----------------------+------------------------+
? ? ? ?innodb_data_file_path中可以一次配置多個(gè)ibdata文件。文件可以是指定大小,也可以是自動(dòng)擴(kuò)展的,但是Innodb 限制了僅僅只有最后一個(gè)ibdata 文件能夠配置成自動(dòng)擴(kuò)展類型。當(dāng)我們需要添加新的ibdata 文件的時(shí)候,只能添加在innodb_data_file_path配置的最后,而且必須重啟MySQL 才能完成ibdata 的添加工作。
? 我們把參數(shù)innodb_file_per_table設(shè)置成on試試有什么變化,那么這個(gè)時(shí)候就是一個(gè)表一個(gè)數(shù)據(jù)文件了。。。
mysql> show variables like "%per_table%";
+-----------------------+-------+
| Variable_name ? ? ? ? | Value |
+-----------------------+-------+
| innodb_file_per_table | ON ? ?|
+-----------------------+-------+
mysql> use chen
Database changed
mysql> create table cc(id int ,name varchar(20)) engine=innodb;
Query OK, 0 rows affected (0.14 sec)
mysql> insert into cc values(1,'rdcgggiiii');
Query OK, 1 row affected (0.08 sec)
mysql> insert into cc ?select * from ?cc;
Query OK, 1 row affected (0.62 sec)
Records: 1 ?Duplicates: 0 ?Warnings: 0
生成的.idb數(shù)據(jù)文件
[root@test4 chen]# pwd
/usr/local/mysql/var/chen
[root@test4 chen]# ls
cc.frm ?cc.ibd ?db.opt ?ss.frm ?tt.frm ?tt.MYD ?tt.MYI
?? mysql的體系結(jié)構(gòu)
from:?http://wolfword.blog.51cto.com/4892126/1288777
http://wolfword.blog.51cto.com/4892126/1288782
總結(jié)
以上是生活随笔為你收集整理的mysql dba系统学习(12)mysql的数据文件 mysql dba系统学习(13)mysql的体系结构的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。