探究MySQL各種文件

前言

前兩篇咱們瞭解到MySQL的總體架構,其分爲了四層,包括網絡鏈接層,核心層,存儲引擎層,物理層,以及各層的做用。另外還知道了InnoDB存儲引擎層的架構,包括緩存池和線程。數據庫

不明白的,請移步上兩篇哦。今天咱們來看構成MySQL數據庫和InnoDB存儲引擎表的各種文件。緩存

參數文件

告訴MySQL實例啓動時在哪裏能夠找到數據庫文件,以及指定某些初始化參數,如某種內存結構的大小設置。服務器

那上面是參數呢?簡單來講,能夠把數據庫參數當作一個鍵值對(key/value),好比innodb_buffer_pool_size=1G。那這些鍵值對都存放在哪裏了呢?答案揭曉,my.ini裏面存儲了大量鍵值對(key/value),且位於MySQL的安裝目錄,以下圖。網絡


咱們打開這個文件看一下,裏面都是鍵值對的形式。若是咱們想要修改某個值,直接在這邊修改,而且重啓便可。架構


日誌文件

用來記錄MySQL實例對某種條件作出響應時寫入的文件,包括以下四種。性能

錯誤日誌

記錄MySQL的啓動,運行和關閉中的錯誤信息。咱們先來看一下文件存儲的位置。測試


咱們去相應路徑下查看該文件,能夠發現出錯信息。因此當MySQL數據庫不能正常啓動的時候,第一個必須查找的文件就是錯誤日誌文件。線程


二進制日誌

記錄對MySQL數據庫進行更改的全部操做,可是不包括select和show這類操做,由於這類操做對數據自己沒有影響。然而,若是是update或delete這種操做,即便對數據庫沒有形成影響,那麼也會被記錄到二進制日誌中。日誌

這段是否是特別拗口,不咋能理解,沒事,咱們實際操做下。code

首先二進制日誌文件在默認狀況下並無啓動,須要手動指定參數來啓動。這是否是就意味着開啓這個選項會對數據庫的總體性能有影響?可是根據MySQL官方手冊中的測試代表,開啓二進制日誌會使性能降低1%,是可接受的範圍。

是否降低1%,這個數字咱們也無從考證,可是要曉得一點,就是會有影響,但問題不大。畢竟要在每次insert,delete,update操做後,記錄日誌,這確定是要時間和空間的損耗的。

那麼開始表演吧。

首先,咱們先開啓二進制配置,上面參數文件有說過my.ini裏面存儲的各類配置信息的鍵值對,只須要在該文件裏面添加log-bin,指定了log的名稱爲主機名-bin,後綴爲序列號,所在的路徑爲數據庫所在的路徑。

接着,重啓服務器,步驟以下,重啓以後,咱們能夠看到相應的文件。




最後,在準備工做好了以後,咱們先來查詢test2的數據,而後看一下那兩個文件的大小有沒有變化,很明顯大小仍是跟以前的同樣。



再來寫一個update語句,咱們能夠看到影響的行數爲0,可是那兩個文件的大小有增長了。



InnoDB的存儲引擎文件

表空間

InnoDB將存儲的數據按表空間進行存放。在默認配置中會有一個初始大小爲10MB,名爲ibdata1的文件,其爲全部表的表空間。固然也能夠經過innodb_file_per_table設置每一個表一個獨立的表空間,命名規則爲.ibd。是否很熟悉?沒錯,這就是咱們上篇說到的innodb表存儲在硬盤的文件之一。


重作日誌文件

若是斷電時,InnoDB會經過重作日誌來恢復到斷電前的狀態,保證數據的完整性。

每一個InnoDB存儲引擎至少有一個重作日誌組group,和兩個文件ib_logfile0和ib_logfile1。

他們兩個大小同樣,而且以循環寫入的方式運行,即先寫重作日誌1,等到寫滿時,會切換到重作日誌2,等到日誌2寫滿時,再次切換到重作日誌1。


結束

碼字不易,請多多關注哦。

相關文章
相關標籤/搜索