轉:《Mysql實戰》學習筆記1

原文鏈接:http://www.good5.top/2019/08/05/%E3%80%8Amysql%E5%AE%9E%E6%88%98%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B01/

二、日誌系統

1.經常聽 DBA 同事說,MySQL 可以恢復到半個月內任意一秒的狀態。

2.更新流程還涉及兩個重要的日誌模塊,它們正是我們今天要討論的主角:redo log(重做日誌)和 binlog(歸檔日誌)。

3.【我。WAL 技術,粉板與賬本的配合,高效靈活。給個滿的判斷、或時點觸發,正式更新到硬盤。mysql優化,偏應用級的優化。linux優化,偏系統級的優化。】

有了 redo log,InnoDB 就可以保證即使數據庫發生異常重啓,之前提交的記錄都不會丟失,這個能力稱爲crash-safe

4.MySQL 整體來看,其實就有兩塊:一塊是 Server 層,它主要做的是 MySQL 功能層面的事情;還有一塊是引擎層,負責存儲相關的具體事宜。上面我們聊到的粉板 redo log 是 InnoDB 引擎特有的日誌,而 Server 層也有自己的日誌,稱爲 binlog(歸檔日誌)。

【我。更新不寫到硬盤;不影響新的查詢嗎?】

5. redo log 的寫入拆成了兩個步驟:prepare 和 commit,這就是”兩階段提交”。【我。中間插入一步—-寫binlog;】

三、事務隔離

1. MySQL 的事務隔離級別的現象和實現,根據實現原理分析了長事務存在的風險,以及如何用正確的方式避免長事務。

2.如果你是業務開發負責人同時也是數據庫負責人,你會有什麼方案來避免出現或者處理這種情況呢?

3.一天一備跟一週一備的對比。好處是“最長恢復時間”更短。

4.事務。        在一個事務時間內,容易發生衝突或錯亂時,就要引入事務、來控制。

事務就是要保證一組數據庫操作,要麼全部成功,要麼全部失敗。在 MySQL 中,事務支持是在引擎層實現的。你現在知道,MySQL 是一個支持多引擎的系統,但並不是所有的引擎都支持事務。比如 MySQL 原生的 MyISAM 引擎就不支持事務,這也是 MyISAM 被 InnoDB 取代的重要原因之一。

5. ACID(Atomicity、Consistency、Isolation、Durability,即原子性、一致性、隔離性、持久性),今天我們就來說說其中 I,也就是“隔離性”。

當數據庫上有多個事務同時執行的時候,就可能出現髒讀(dirty read)、不可重複讀(non-repeatable read)、幻讀(phantom read)的問題,爲了解決這些問題,就有了“隔離級別”的概念。

在談隔離級別之前,你首先要知道,你隔離得越嚴實,效率就會越低。因此很多時候,我們都要在二者之間尋找一個平衡點。SQL 標準的事務隔離級別包括:讀未提交(read uncommitted)、讀提交(read committed)、可重複讀(repeatable read)和串行化(serializable )。這4種隔離級別,並行性能依次降低,安全性依次提高。

出自:http://www.good5.top/2019/08/05/%E3%80%8Amysql%E5%AE%9E%E6%88%98%E3%80%8B%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B01/

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章