MySQL技術內幕-InnoDB儲存引擎-讀書筆記(二),mysql-innodb
MySQL技術內幕-InnoDB儲存引擎-讀書筆記(二)
作為php開發,使用mysql總是少不了的
系列文章部落格連結 http://itsong.net/articles/466.html
第三章 檔案mysql與innodb幾個類型的檔案
- 參數檔案,配置路徑、初始化參數、記憶體大小等
- 記錄檔,包括錯誤記錄檔,二進位日誌,慢查詢日誌,查詢日誌
- socket檔案,用unix域通訊端,unix domain socket來進行串連時需要的檔案,這一般是本機串連,比通常tcp快
- pid檔案,進程id檔案
- 表結構檔案,存放表結構定義的檔案
- 儲存引擎檔案,每個儲存引擎自己搞檔案儲存資料,包括資料和索引等。
*
參數檔案
musql --help | grep my.cnf
可以尋找載入哪些參數檔案
- 靜態參數,整個執行個體生命週期不得更改,類似唯讀。
- 動態參數,可以通過set命令變更
SET| [global | session] system_var_name = expr| [@@global. | @@session. | @@]system_var_name = expr
- global與session表示該參數的修改基於當前會話還是整個執行個體的生命週期。
記錄檔
- 錯誤記錄檔,
show variables like 'log_error'
定位錯誤記錄檔,預設情況下,檔案名稱為伺服器主機名稱.err
- 慢查詢日誌,閾值通過 long_query_time 修改,預設值10秒(含義是大於10,不包括10),預設不啟動慢查詢日誌,要將 log_slow_queries 設為ON,mysqldumpslow可以解決日誌過多難以解決的問題
- 從5.1開始,慢查詢可以以微秒記錄。並且慢查詢會進表,叫mysql.slow_log,通過log_output(FILE | TABLE)指定
- log_queries_not_using_indexes,記錄沒有使用索引的慢查詢記錄檔
- 查詢日誌,預設檔案名稱為主機名稱.log,也可以進表,general_log
- 二進位日誌,記錄對資料庫執行更改的所有操作,不包括SELECT和SHOW這類操作。包括操作時間和執行時間等資訊。主要用來恢複、複製(master,slave即時同步)
- 二進位日誌所在目錄
show variables like 'datadir'
,預設檔案名稱為主機名稱,尾碼為序號,bin_log.index為二進位的索引檔案,儲存日誌序號
- 預設二進位日誌未開啟,開啟binlog效能下降1%,但是可以接受的
- 查看binlog要使用mysqlbinlog,binlog還有很多操作,不過這裡我不太關心啦
其他
- 通訊端檔案,一般再/tmp下,mysql.sock
- pid檔案,主機名稱.pid,variables 為 pid_file
- 表結構定義檔案,frm尾碼名的檔案,記錄的表結構定義以及視圖定義,文字檔,可以直接cat
innodb儲存引擎檔案
- 儲存的資料按資料表空間進行存放,預設會有一個初始化大小為10MB,名為ibdata1的檔案,預設資料表空間。
- 設定innodb_data_file_path參數後,innodb儲存引擎的表的資料都會記錄到該檔案內。
- 設定innodb_file_per_table,每個基於innodb儲存引擎的表單獨產生一個資料表空間,檔案名稱為表名.ibd,就不會進入預設資料表空間。
- 這些單獨的資料表空間檔案僅儲存該表的資料,索引和插入緩衝等資訊,其餘資訊還是存放在預設的資料表空間。
重做記錄檔
- ib_logfile0和ib_logfile1,記錄了innodb儲存引擎的交易記錄
- 每個檔案寫到檔案最後時,切換至另一個記錄檔去寫,為了得到更高的可靠性,可以設定多個鏡像日誌組
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。