1. 程式人生 > >第3章 文件

第3章 文件

遠程 mysql啟動 什麽是 邏輯 不能 增加 作用 是否 緩沖

  MySQL會用到的文件

3.1 參數文件

  mysql啟動的時候會讀取的配置文件,也是之前裝Mysql時候需要修改的配置文件,比如修改配置文件允許遠程訪問。MySQL的配置文件有多個,按照順序讀取,如果有重復的字段設置以最後一個為準。

  技術分享圖片

  沒有配置文件也是可以啟動的,但是是按照編譯時候默認的參數來啟動的,既然是編譯時候默認的那也就不能修改,所以還是得有一個參數文件。

3.1.1 什麽是參數

  參數就是參數啊……啟動的時候的配置,例如緩存池的大小,是否允許非localhost的請求訪問數據。可以通過show variables結合like指令搜索查看某個想確定的參數。

技術分享圖片

3.1.2 參數類型

  參數類型分為動態和靜態,動態類型的參數在運行期間可以修改,靜態參數MySQL啟動以後就不能修改。對動態參數的修改又分為兩種,一種是session級別一種是global級別,即修改後的結果是只在當前會話生效還是全局都生效。

  首先看到當前全局的read_buffer_size的大小。

  技術分享圖片

  然後修改了read_buffer_size的大小

  技術分享圖片

  但是修改之後查看全局的read_buffer_size的大小並沒有改變

  技術分享圖片

  改變的是session級別的read_buffer_size

  技術分享圖片

  如果想要對全局的動態變量進行修改需要制定@@global參數

3.2 日誌文件

3.2.1 錯誤日誌

  記錄著mysql運行期間所有的錯誤記錄,也包括警告等信息。在show variables裏查看錯誤日誌的位置。

技術分享圖片

3.2.2 慢查詢日誌

  用於sql語句的優化,在執行所有sql語句的時候如果某個sql語句的執行時間大於指定的閾值,就會寫入慢查詢日誌裏,通過分析慢查詢日誌可以找到需要優化的sql語句。

  我電腦上是14.14的版本,和書上的版本不一樣,相關的變量的名稱也不一樣。所以我首先檢索和slow相關的所有變量,可以看到下面兩個個變量是和書上的變量相對應的,是否開啟慢查詢和慢查詢日誌的位置。

技術分享圖片

  long_query_time對應著慢查詢的閾值。

  技術分享圖片

  如果某些查詢沒有使用索引,那麽即使他的查詢時間沒有超過閾值,但是他仍然有優化的空間,所以也希望把沒有使用索引的sql語句放到查詢日誌裏。log_queries_not_using_indexes對應著開啟這一功能。

 技術分享圖片

  

  隨著MySQL運行時間的增長,慢查詢日誌的長度也會增加,人肉去看這個日誌就會不現實,為此MySQL提供了兩種優化方案。

  一種是使用mysqldumpslow命令,該命令提供了對慢查詢日誌的檢索功能。

  一種是不直接查看慢查詢的文本日誌,而是查看慢查日誌記錄的對應的表裏。該表存儲在mysql.slow_log的位置。

  這個太亂了,我還是喜歡直觀的。

技術分享圖片

  這個就很不錯

技術分享圖片

  但是默認是不寫在這個表裏的,是寫在文件裏的。其實不只是慢查詢的日誌默認寫在文件裏,所有的日誌都是默認寫在文件裏的,但是可以設置成輸出到表裏,雖然這樣會增加一定的存儲開銷。通過使用上面提到的set命令,並把作用域設置成global使所有會話的所有日誌都輸出到表裏。

  技術分享圖片

  開啟慢查詢的目的是為了優化sql語句,其中之一的優化方式是分析邏輯讀取和物理讀取的比例。物理讀取是從磁盤讀,邏輯讀取既包含磁盤也包含緩沖池。  

3.2.3 查詢日誌

  所有的sql操作都被記錄在這個日誌裏,無論他是否被正確執行。

  首先要找到這個查詢日誌的文件的位置,書上沒有寫叫啥,我就暴力的搜索了含log的所有variables。

  技術分享圖片

  原來它叫general_log,而且默認是關閉的,先打開。本著節省空間的目的,我決定只在session裏打開。

  技術分享圖片

  但是他不讓,必須是global的

  技術分享圖片

  現在在看這個gerenal_log已經打開了

  技術分享圖片

  隨便查詢一個語句,然後vi看一哈。

  技術分享圖片

  成了!

3.2.4 二進制日誌

  記錄了所有對數據庫進行修改的記錄,只包括update delete操作。

  

第3章 文件