mysql初識之數據文件及其餘文件

在 mysql中數據文件存放於在my.cnf中datadir指定的路徑,使用的表引擎不一樣產生的文件格式、表文件個數也會有所差別。mysql的表引擎有 多種,表的擴展名也不同,如innodb用「 .ibd」,archive用「.arc 」,csv用「.csv」等。mysql


myisam表引擎sql

myisam表會產生三個文件:MYI、MYD、frm文件數據庫


frm文件:windows

主要存放表的元數據(meta),包括表結構定義信息等。不管是哪一個表引擎都會有一個frm文件,存放在數據庫的數據目錄下。api


.MYI文件(索引文件):數組

主要存放myisam的索引信息能夠被cache的內容主要源於 .MYI文件中,每一個myisam表對應一個 .myi文件,存放的位置與 .frm 、MYI同樣。服務器


innodb引擎網絡


使用innodb引擎時,須要理解獨立表空間、共享表空間。socket


獨立表空間:每一個表都會生成以獨立的文件方式來存儲,每一個表都一個.frm的描述文件,還有一個.ibd文件。其中這個文件包括了單獨一個表的數據及索引內容,默認狀況下它的存儲在mysql指定的目錄下。工具


獨立表空間優缺點:


優勢:

每一個表都有 本身獨立的表空間;每一個表的數據和索引都會存儲在各個獨立的表空間中;能夠實現 單表 在不一樣的數據進行遷移;表空間能夠回收(除了drop table操做,表空不能本身回收);drop table 操做自動回收表空間,若是對統計分析或是日值表,刪除大量數據後能夠經過 :alter table tablename engin=innodb進行回縮不用的空間;對於使用inodb-plugin的innodb使用truncate table會使用空間收縮。;對於使用獨立表空間,無論怎麼刪除 ,表空間的碎片都不會太嚴重。


缺點:


單表增長過 大,如超過100G。對於單表增加過大的問題,若是使用共享表空間能夠把文件分開,但有一樣有一個問題,若是訪問的範圍過大一樣會訪問多個文件,同樣會比 較慢。對於獨立表空間也有一個解決辦法是:使用分區表,也能夠把那個大的表空間移動到別的空間上而後作一個鏈接。其實從性能上出發,當一個表超過100個 G有可能響應也是較慢了,對於獨立表空間還容易發現問題早作處理。


共享表空間:某一個數據庫全部的表數據,索引文件所有都放在一個文件 中,默認這個共享表空間的文件路徑在data目錄下,默認的文件名爲 bata1,初始化爲10M。


共享表空間優缺點


優勢:能夠將表空間分紅多個文件存放在各個磁盤上(表空間文件大小不受表大小 的限制,如一個表能夠分佈在不一樣的文件上),數據和文件放在一塊兒方便管理。


缺點:全部的數據和索引存放 到一個文件中,未來會是一個很大的文件,雖然 能夠把一個大文件分紅多個小文件,可是多個表及索引在表空間中混合存儲,這樣對一個表作了大量刪除操做後表空間將有大量的空隙,特別是對統計分析、日值系統這類應用最不適合用共享表空間。



如何開啓獨立表空間?


查看是否開啓獨產表空間:


mysql> show variables like '%per_table';

+-----------------------+-------+

| Variable_name         | Value |

+-----------------------+-------+

| innodb_file_per_table | OFF   |

+-----------------------+-------+


設置開啓:

在my.cnf文件中[mysqld] 節點下添加innodb_file_per_table=1


注:


innodb_file_per_table值來進行修改便可,可是對於以前使用過的共享表空間則不會影響,除非手動的去進行修改或者是

innodb_file_per_table=1 爲使用獨佔表空間

innodb_file_per_table=0 爲使用共享表空間

修改獨佔空表空間的數據存儲位置

innodb_data_home_dir = "C:\mysql\data\"

innodb_log_group_home_dir = "C:\mysql\data\"

innodb_data_file_path=ibdata1:10M:autoextend

innodb_file_per_table=1

參數說明:

這個設置配置一個可擴展大小的尺寸爲10MB的單獨文件,名爲ibdata1。沒有給出文件的位置,因此默認的是在MySQL的數據目錄內。【對數據來進行初始化的設置】

innodb_data_home_dir              表明爲數據庫文件所存放的目錄

innodb_log_group_home_dir       爲日誌存放目錄

innodb_file_per_table               是否使用共享以及獨佔表空間來

 

以上的幾個參數必須在一塊兒加入。

對於參數一些注意的地方

InnoDB不建立目錄,因此在啓動服務器以前請確認」所配置的路徑目錄」的確存在。這對你配置的任何日誌文件目錄來講也是真實的。使用Unix或DOS的mkdir命令來建立任何須需的目錄。

 

經過把innodb_data_home_dir的值原本來本地部署到數據文件名,並在須要的地方添加斜槓或反斜槓,InnoDB爲每一個數據文件造成目錄路徑。

若是innodb_data_home_dir選項根本沒有在my.cnf中提到,默認值是「dot」目錄 ./,這意思是MySQL數據目錄。



replication相關文件


1.master.info文件


master.info文件存放在slave端的data目錄下,裏面存的是slave對應的master端所讀取到的相關信息,包括master的主機地地,鏈接用戶、密碼、端口,當前日誌位置、已讀取到的日誌位置等信息。


2.relay log 和relay log index 


mysql- relay-bin.xxxxxn文件用於存放Slave端的I/O線程從Master端所讀取到的BinaryLog信息,而後由Slave端的SQL 線程從該relaylog中讀取並解析相應的日誌信息,轉化成Master所執行的SQL語句,而後在Slave端應用。mysql-relay- bin.index文件的功能相似於mysql-bin.index,一樣是記錄日誌的存放位置的絕對路徑,只不過他所記錄的不是BinaryLog,而 是RelayLog。


3. relay-log.info文件


相似於master.info,它存放經過Slave的I/O線程寫入到本地的relaylog的相關信息。供Slave端的SQL線程以及某些管理操做隨時可以獲取當前複製的相關信息



其餘文件


一、systemconfigfile


MySQL的系統配置文件通常都是「my.cnf」,Unix/Linux下默認存放在"/etc"目錄下,Windows環境通常存放在 「c:/windows」目錄下面。「my.cnf」文件中包含多種參數選項組(group),每一種參數組都經過中括號給定了固定的組名,如 「[mysqld]」組中包括了mysqld

服務啓動時候的初始化參數,「[client]」組中包含着客戶端工具程序能夠讀取的參數,此外還有其餘針對於各個客戶端軟件的特定參數組,如 mysql程序使用的「[mysql]」,mysqlchk使用的「[mysqlchk]」,等等。若是讀者朋友本身編寫了某個客戶端程序,也能夠本身設 定

一個參數組名,將相關參數配置在裏面,而後調用mysql客戶端api程序中的參數讀取api讀取相關參數。


二、pidfile

pid file是mysqld應用程序在Unix/Linux環境下的一個進程文件,和許多其餘Unix/Linux服務端程序同樣,存放着本身的進程id。


三、socketfile


socket文件也是在Unix/Linux環境下才有的,用戶在Unix/Linux環境下客戶端鏈接能夠不經過TCP/IP網絡而直接使用UnixSocket來鏈接MySQL。

相關文章
相關標籤/搜索