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