MySQL核心原理2

2021-10-08 10:28:00 字數 2212 閱讀 5416

一、引擎

1. csv儲存引擎

適用於1. 快速匯入匯出   2.**匯入到csv引擎資料庫

2. archive

壓縮協議(arz)存,20:1占用磁碟少,只可insert和select,只許自增id鍵

適用於1. 日誌、文件資料備份  2.大裝置高頻資料採集

3.memory

資料在記憶體效率高,表限定大小16m(可調),不支援大資料儲存欄位如blong、text,支援等值查詢效率高的hash索引,重啟或崩潰資料丟失可靠性低

適用於1.中介軟體快取熱點資料  2.mysql臨時儲存如查詢結果於記憶體計算data

4. myisam

較快插入和讀取資料,和innodb相比較小的磁碟占用,不支援表鎖、事務,資料庫索引主輔無主次和資料分開儲存,count(*)效率高資料統計是常數存

5.innodb

支援事務transaction,行鎖,聚集索引clustered indexes,外來鍵支援foreignkey support保證資料完整性,不支援hash索引但有自適應的hash索引,支援mvcc,資料和索引快取

二、sql執行:dql

1. unix socket跨程序通訊,tcp/ip 長連線,類似對講機的半雙工模式,同一時間內一種方式連線(單工:收音機、全雙工:**)

盡量精確查詢 使用limit、多條件查詢或按需處理。若sql長時間沒響應:mysql視窗查鏈路 show processlist,kill殺掉。

show variables like 『』

最大連線數1000,接收包資料4m

2. 查詢快取

類k-v的hash結構,適用讀多寫少的情況

快取失效與表資料一致,表改動就失效。

mysql5.6預設關閉query_cache_type 開關   query_cache_size  大小  query_cache_limit 上限

判斷條件必須完全一致,額外消耗

3. 驗證解析

語法分析  1064表示不合sql標準

詞法分析  1054

通過語法分析、詞法分析 生成解析樹。

4. 優化階段

物理優化:等價變化如聯合索引字段調動

邏輯優化:count、min、max函式,覆蓋索引優化、冗餘子查詢、提前終止sql、where條件in優化(in等價於or,執行效率o(n))、排序後二分法查詢判斷

5. 執行計畫

explain/desc  sql   \g    分行顯示查詢

set global optimizer_trace=『enabled=on』

id:操作表順序    相同從上到下、不同大的優先

select_type:******、最外層查詢primary、子查詢subquery、union

table:表名/別名  並集、派生、子查詢

type:資料獲取方式 system>主鍵、unique key唯一性索引const常量比較》唯一性索引掃瞄eq_ref>索引掃瞄ref>基於索引範圍查詢range>全索引掃瞄index>全表掃瞄all       sql優化不得低於range

partitions:分割槽資訊

possibled_key:可能用到的索引

key:索引

ref:標識當前索引哪些使用

key_len:計算索引長度

rows:估算讀取行數

filtered:返回結果佔rows百分比,rows越少,filtered越大,準確性越高

extra:額外資訊,有using filesort、temporary、index、where...

6.資料返回

快取,以增量方式返回:生成就返回

7.sql分類

dqlselect

dmlupdate、insert、delete

ddlcreate table、view、index...

dclgrant

dql:bufferpool 記憶體快取,資料和索引熱載入   100m

dml:xa二階段提交是事務原子性的保證 1.update->bufferpool  刷髒(io一頁16kb)執行緒 2. to prepare  3. 記憶體redolog 磁碟檔案 記錄binlog日誌  4.commit  日誌檔案刷盤執行緒

binlog:mysql服務層,5.7關閉,,以事件形式記dml、ddl操作過程,邏輯日誌,檔案追加無大小限制,用於主從複製、資料恢復,有row行記錄、statement事務記錄:預設以sql記錄、mixed 3種記錄方式

MySQL核心原理4

效能優化 1.硬體選擇 cpu oltp 高可用小事務查詢 olap分析系統倉庫 ram 越大越好 快磁碟儲存 ssd 陣列 優網路 系統 關dns mysql 接入區dmg 內網core dns mysql 檔案控制代碼開啟數量即開闢io通道可命令 ulimit n檢視 1024 2.快取 red...

struts2核心工作原理

上圖 於 struts2 官方站點,是 struts 2 的整體結構。乙個請求在 struts2 框架中的處理大概分為以下幾個步驟 1 客戶端初始化乙個指向 servlet 容器 例如 tomcat 的請求 2 這個請求經過一系列的過濾器 filter 這些過濾器中有乙個叫做 actionconte...

angularJS核心原理

一 angularjs優點和缺點 優點 1.1免去重複勞動 獲取元素 給元素加事件 建立元素 1.2接管ui angularjs根據資料建立ui元素,免去手工建立ui元素。1.3自動同步 根據資料個數建立對應的html元素。缺點 二 angularjs一切皆資料 三 angularjs三要素 4.1...