MySQL mysql server與存儲引擎
mysql server系統架構
邏輯模塊組成:
mysql邏輯模塊可以分為兩層架構,第一層是sql layer主要包括權限判斷、sql解析、執行計劃優化、query cache的處理等;第二層是存儲引擎層storageengine layer,是底層數據存取操作實現部分,由多種存儲引擎共同組成。
mysql存儲引擎:
存儲引擎是在mysql安裝時就必須和mysql一起被編譯安裝了,mysql ab在架構改造的時候,讓存儲引擎和sqllayer各自更為獨立、耦合更小、可以做到在線加載新的存儲引擎,而不影響mysql的正常運行。插件式存儲引擎的架構,為存儲引擎加載和移動更靈活方便,也使自行開發存儲引擎更為方便簡單。主要插件式存儲引擎包括mylsam、lnnodb、ndb cluster、maria、falcon、memory、archive等
mylsam存儲引擎簡介:
1、mysql5.1之前默存儲引擎
2、mylsam存儲引擎的表在數據庫中,每個表被存放為三個以表命名的物理文件:.frm .MYI .MYD每個表都有這樣的三個文件作為存儲類型的表的存儲,不管這個表有多少引擎,都存放在同一個.MYI中
3.mylsam支持的三種類型索引:B-Tree索引、R-Tree索引、Full-text索引
4.不支持事務及只有表鎖
5.如過mysqld正在寫入該表時被kill掉、主機宕機、磁盤硬件故障、mylsam存儲引擎的bug都會造成表破壞
6.mylsam的數據存放分為靜態固定長度、動態可變長度、壓縮三種格式
創建數據庫創建一個表估算出規劃多大的空間
查看qq的表的結構
每個字節相加等於168字節,如果每天增加10000條記錄,大約需要10000x168/1024/1024=1.6MB
如果發現某個mylsam表出現問題,可以在線通過check table命令效驗
lnnodb存儲引擎簡介:
lnnodb能那麽火,主要是在於功能方面較多特點:支持事務、鎖定機制的改進、實現外鍵、完全由用戶定義表的單獨存放和所有表存放在一起。
lnnodb的物理結構分為兩個部分:
1.數據文件:
存放數據表中的數據和所有的索引數據,包括主鍵和其他普通索引。
2.日誌文件:
lnnodb的日誌文件和oracle的redo日誌比較相似,同樣可以設置多個日誌組(最少2個),同樣采用輪循策略來順序寫入
mylsam和lnnodb的區別:
1.mylsam不支持事務,而lnnodb支持事務,lnnodb的autocommit默認打開,即每條sql語句會默認封裝成一個事務,自動提交這樣會影響提交速度,最好是把多條sql語句顯示在begin和commit之間,組成事務提交。
查看提交模式是否開啟
2、InnoDB支持數據行鎖定,MyISAM不支持行鎖定,只支持鎖定整個表。
3、InnoDB支持外鍵,MyISAM不支持。
4、InnoDB不支持全文索引(5.7支持),而MyISAM支持。
mysqlslap性能測試mysql二種存儲引擎
mysqlslap是mysql自帶的基準測試工具,優點:查詢數據、使用靈活
查看mysql數據庫默認最大的連接數
查看默認使用的引擎
使用sql腳本測試 下面的壓力測試數超出了默認數所以報錯
修改壓力測試數並測試最大值為30,60超過就會出錯 註:多次測試
MySQL自帶工具使用介紹
mysql命名:使用最多的一個命名工具,為用戶提供命令行接口來管理mysql服務器
語法格式:mysql [options] [database] 可以使用mysql --help查看使用幫助信息
運維時常用的mysql命令相關參數
使用-e參數查看數據庫
通過使用腳本創建數據庫、表,對表進行增、改、刪、查操作
使用root用戶進入mysql給test用戶授權
然後給腳本授予執行權限
啟動腳本
使用提示符登錄mysql查看效果
使用tee生成一個文件;這個文件包含此數據庫中所有的操作都保存到這個目錄裏面
使用ping命令測試是否能正常提供服務
使用status命令獲取當前mysql server的幾個基本的狀態值
使用processlist獲取當前數據庫的連接線程信息
編寫mysql監控腳本
查看執行的效果 並且給腳本執行權限chmod +x 腳本名
查看數據字典,此數據庫包含了其他所有數據庫的元數據,包括數據類型、訪問權限
轉載自:
https://blog.51cto.com/12832314/1934710
MySQL mysql server與存儲引擎