1. 程式人生 > >2018/09/11《塗抹MySQL》【MySQL數據庫結構】學習筆記(五)

2018/09/11《塗抹MySQL》【MySQL數據庫結構】學習筆記(五)

保存數據 更新 address comm 復制 事務 如何開啟 日誌文件 指定大小

推薦一首歌

  - 《往後余生》王貳浪

發現自己每天就聽這麽幾首歌

  第七章《MySQL的數據結構》

總結

1:慢查詢日誌

  - SQL 完成查詢並完成對於鎖資源的釋放之後,msqld 會將符合條件的SQL寫入慢日誌。因此慢日誌可能和執行順序不一樣

  - 主要參數

    - slow_query_log 是否輸出慢查詢日誌 1為輸出/0為關閉

    - slow_query_log_file 指定日誌文件路徑和文件名

    - log_query_time 設定慢查詢日誌時間闕值,單位/s,默認為10s。

    - log_queries_not_using_indexes

是否將未使用索引的SQL輸出到日誌

  - 具體的配置可以查看之前的一篇文章

    - 學習計劃 mysql 中的慢日誌查詢

2:普通查詢日誌(輸出所有SQL)

  - general_log 是否輸出日誌

  - general_log_file 定義日誌的存儲路徑

3:在 MySQL 中,有哪些二進制?

  - 兩個比較重要的概念

    - 二進制日誌( Binary Log ) 記錄數據庫的修改事件

    - 二進制日誌文件( Binary Log File ) 保存數據庫中修改事件的文件

4:二進制日誌的作用是什麽呢?

  - 二進制日誌的兩個重要作用

    - 主從復制

Mastr/slave

    - 故障恢復

5:如何開啟二進制日誌?

  - log_bin 是否開啟二進制日誌功能(默認的話是不啟用的)

    - 在開啟時,主要註意,需要配置 server-id 同時 關閉 bind-address 的默認端口綁定

  - max_binlog_size 來指定日誌文件大小(當達到指定大小時,會生成新的日誌文件)

  - 對於非事務來說,語句執行之後會立即寫入二進制日誌中

  - 對於事務來說,在收到更新操作後(CURD),會被緩存起來,直到收到 COMMIT ,才會將整個事務寫二進制文件中。

    - 在處理事務時,會通過 binlog_cache_size

指定內存

    - max_binlog_cache_size 來指定事務可以使用的最大緩存區,如果大於這個,事務會報錯並回滾(最小為4096)

6:二進制日誌是時時同步的麽?

  - 同 Redis 的 RDB 一樣,二進制日誌並不是時時同步到磁盤的

  - sync_binlog (1s安全級別最高,同時也是最慢的設置)

    - 在設置為1(秒)的情況下,也可能出現數據丟失的情況。

    - 例如在 Innodb 下,操作已經寫入二進制日誌,但是還未寫入提交,此時數據庫崩潰,當數據庫重啟時,必然造成數據的回滾造成丟失。

    - 為了解決這種問題,提供了 innodb_support_xa 設置該參數,啟動分布式的事務支持,確保二進制日誌和 Innodb 的數據文件同步

2018/09/11《塗抹MySQL》【MySQL數據庫結構】學習筆記(五)