高效能MySQL學習筆記一 MySQL架構

2021-08-17 08:22:01 字數 1543 閱讀 4081

mysql最與眾不同的特性是:它的儲存引擎架構,這種架構的設計將查詢處理以及其他系統任務和資料的儲存/提取相分離。這種處理和儲存相分離的設計可以在使用時根據效能 特性,以及其他需求來選擇資料儲存的方式。

mysql預設採用自動提交模式。設定是否自動提交(1為自動提交,0禁用,禁用後,使用commit或rollback結束乙個事務並開始另乙個事務):

set autocommit = 1;
事務日誌:可以幫助提高事物執行的效率。

在同乙個事務中,使用多種儲存引擎是不可靠的,如果乙個事務中混合使用了事務型的表和非事務型的表,發生了撤銷操作,可能會導致資料庫處於不一致的狀態。所以,為每張表選擇合適的引擎非常重要。

設定隔離級別:

set

session(只在當前會話生效) transaction isoltion level

read

commit(隔離級別);

為了解決死鎖,資料庫系統實現了各種死鎖檢測和死鎖超時機制。innodb能檢測到死鎖的迴圈依賴,並立即返回乙個錯誤。innodb目前處理死鎖的方法是,將持有最少行級排他鎖的事物進行回滾。

show

table status like

'表名' \g(輸出格式控制);

他是mysql的預設引擎,它被用來處理大量的短期事務。優先考慮innodb引擎。它實現了四個標準的隔離級別,預設級別是可重複讀,採用mvcc支援高併發,並且通過間隙鎖的策略防止幻讀的出現。

它的表是基於聚簇索引建立的。聚簇索引對主鍵查詢有很高的效能。不過他的二級索引必須包含主鍵列,所以主鍵應當盡可能小。

它的內部做了很多優化,包括從磁碟讀取資料時採用可**性預讀,自動在記憶體中建立hash所有以加速讀操作的自適應雜湊索引,以及能夠加速chary操作的插入緩衝區等。

myisam是mysql 5.1之前的預設引擎,它有大量的特性,支援全文索引壓縮空間函式地理空間搜尋等。但是它不支援事務和行級鎖,而且有乙個缺陷:崩潰後無法安全恢復。myisam引擎設計簡單,資料以緊密格式儲存,在某些場景下效能很好。對於唯讀的資料 或者表比較小 可以忍受修復操作,可以使用這個引擎。

它會對整張表加鎖,支援併發插入(讀取表的時候,向表中寫入記錄)。支援壓縮操作,壓縮之後不能在進行修改操作,可以極大地減少磁碟空間占用,減少磁碟i/o,提高查詢效能。

大多數情況下選擇innodb,除非需要用到某些innodb不具備的特性。在選擇引擎的時候考慮這幾個因素:事務 備份 崩潰恢復 特有的特性等。

高效能mysql學習筆記

此文已由作者朱笑天授權網易雲社群發布。筆者在工作之餘閱讀了一下高效能mysql,以下的內容對mysql的介紹以及書中涉及一些概念的總結歸納。1.mysql架構 1.最上層負責鏈結處理 認證授權 安全等 2.中間一層涵蓋了mysql的大多數核心功能。包括查詢解析 分析 優化 快取 內建函式 所有的誇儲...

mysql高效能學習(一)

最上層的服務不是,mysql所獨有的,主要用於連線處理,授權認證,安全等。第二層是mysql的核心層,所有核心功能都在這一層,包括查詢解析,分析,優化,快取 以及所有的內建函式,所有跨儲存引擎功能 都在這 一層實現 儲存過程,觸發器,檢視等。第三層包含了儲存引擎,負責mysql中資料的儲存和提取。1...

高效能mysql實戰 筆記(一)

模擬電商資料庫設計及架構優化實戰 只設計資料庫設計,不包括前後端 專案說明 模擬電商專案 一 所有資料庫物件名稱必須使用小寫字母並用下劃線分割 二 所有資料庫物件名稱禁止使用mysql保留關鍵字 如表名為from 三 資料庫物件的命名要見名識義,並且最好不要超過32個字元 例 使用者資料庫表 mc ...