再見MYSQL 01 架構與歷史

2021-10-08 14:02:39 字數 1338 閱讀 8015

事務的隔離級別

這比我們平時了解的要複雜

死鎖多個事務對同乙個資源進行占用,都鎖定給自己用,結果都用不了。

如下圖,如果兩個事務都執行了第一行的語句,到第二行就會互相死鎖了。

innodb目前的處理辦法是,將持有最少行級排他鎖的事務進行回滾。這也是比較簡單的死鎖回滾演算法。

要解決這個問題,大部分情況下只要重新執行回滾的事務即可。

自動提交(autocommit)

預設,如果不是顯示提交,每個查詢都被當成乙個事務執行。

mysql> show variables like 'autocommit';

+---------------+-------+

| variable_name | value |

+---------------+-------+

| autocommit | on |

+---------------+-------+

1 row in set (0.00 sec)

對於myisam這樣的表,沒有rollback和commit的概念,相當於一直處用autocommit的狀態。

mvcc 多版本併發控制 樂觀鎖&悲觀鎖

相當於新增兩列,created_at 和 deleted_at

一般情況下的最好選擇

myisam

表級鎖延遲更新索引鍵

壓縮表其他

memory, aria, groonga

選擇舉例

日誌型:多寫入,少讀取 myisam, archive

轉換表的引擎

alter table

alter table mytable engine=innodb;
以上方法適用各種引擎,但是慢

工具匯入匯出

create & select

Mysql 01 架構介紹

1.mysql的配置檔案 1.1二進位制檔案 主從複製 1.2錯誤日誌 預設是關閉的,記錄嚴重警告和錯誤資訊,每次啟動和關閉的詳細資訊等 1.3查詢日誌 預設關閉,記錄查詢sql語句,如果開啟會減低mysql的整體效能,因為記錄日誌也是需要消耗系統資源的 1.4資料檔案 linux var lib ...

MySQL架構與歷史

所以基於此,資料庫實現了各種死鎖檢測和死鎖超時機制目前innodb採取的方案是 將持有最少行級排他鎖的事務進行回滾。處理死鎖 大多數情況下只需要重新執行因死鎖回滾的事務即可。事務日誌 mysql中的事務 一般建議 除非禁用了自動提交 才可以使用lock tables之外 其他熱河時候都不要顯示的執行...

mysql架構與歷史

最上層的服務並不是mysql獨有的,大多數基於網路的客戶端 服務端的工具或者服務都有類似的架構。比如連線處理 授權認證 安全等等 第二層架構是mysql比較有意思的部分,大多數mysql的核心功能都在這一層實現。其中分析器 優化器 執行器統稱為解析器。所有的內建函式 跨儲存引擎的功能都在這一層實現 ...