MyISAM引擎的特点及优化方法
1.什么是MyISAM引擎?
MyISAM引擎是MySQL關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)的默認(rèn)存儲(chǔ)引擎(MySQL5.5.5以前),這種MySQL的表存儲(chǔ)結(jié)構(gòu)從舊的ISAM代碼擴(kuò)展出許多有用的功能.
在存儲(chǔ)的時(shí)候,每一個(gè)MyISAM表都對(duì)應(yīng)于硬盤(pán)上的三個(gè)文件.這樣三個(gè)文件有一樣的文件名,但是擴(kuò)展名不一樣,都有其不同的用途: .frm文件保存表的定義,這個(gè)文件并不是MyISAM引擎的一部分,而是服務(wù)器的一部分,.MYD保存表的數(shù)據(jù);.MYI是表的索引文件. .MYD和.MYI才是MyISAM的關(guān)鍵點(diǎn):
2.MyISAM的引擎特點(diǎn).
1).不支持事務(wù)(事務(wù)是指邏輯上的一組操作,組成這組操作的各個(gè)單元,要么全成功,要么全失敗)
2).表級(jí)鎖定(更新時(shí)鎖整個(gè)表):其鎖定機(jī)制是表級(jí)鎖定,這樣雖然可以讓鎖定的實(shí)現(xiàn)成本很小但是同時(shí)大大降低了其并發(fā)的性能.
3).讀寫(xiě)相互阻塞:不僅會(huì)在寫(xiě)入的時(shí)候阻塞讀取,MyISAM還會(huì)在讀取的時(shí)候阻塞寫(xiě)入,但是讀本身不會(huì)阻塞另外的讀.
4).只會(huì)緩存索引:MyISAM可以通過(guò)Key_buffer_size緩存索引,以大大提高訪問(wèn)性能,減少磁盤(pán)IO,但是這個(gè)緩存區(qū)只會(huì)緩存索引,而不會(huì)緩存數(shù)據(jù).
5).讀取速度快,占用資源相對(duì)少.
6).不支持外鍵約束,但是支持全文索引.
7).在MySQL5.5.5以前是默認(rèn)的存儲(chǔ)引擎.
3.MyISAM引擎的適用的生產(chǎn)場(chǎng)景
1)不需要支持事務(wù)的業(yè)務(wù)(例如轉(zhuǎn)賬,付款就不行)
2)一般為讀數(shù)據(jù)比較多的應(yīng)用,讀寫(xiě)都頻繁則不合適,會(huì)堵塞,讀多或者寫(xiě)多單一性都可以.
3)讀寫(xiě)并發(fā)訪問(wèn)較少的業(yè)務(wù)(單獨(dú)讀或者單獨(dú)寫(xiě)高并發(fā)可以,同時(shí)讀寫(xiě)并發(fā)不行)(主要是鎖定機(jī)制問(wèn)題,其實(shí)鎖定整個(gè)表,會(huì)有堵塞問(wèn)題)
4)數(shù)據(jù)修改相對(duì)較少的業(yè)務(wù).
5)對(duì)數(shù)據(jù)一致性要求不是非常高的業(yè)務(wù).
6)硬件資源較差的機(jī)器可以使用MyISAM,一般為中小型網(wǎng)站.
總結(jié):單一對(duì)數(shù)據(jù)庫(kù)的操作都可以使用MyISAM,即是盡量純讀,或者純寫(xiě)(insert,update,delete)等.
4.MyISAM引擎調(diào)優(yōu)精要:
1).設(shè)置合適的索引(緩存機(jī)制).
2).調(diào)整讀寫(xiě)優(yōu)先級(jí),根據(jù)實(shí)際需求確保重要操作更有限執(zhí)行.
3).啟用延時(shí)插入(盡量批量插入,降低寫(xiě)的頻率)
4).盡量順序操作,讓insert數(shù)據(jù)都寫(xiě)入到尾部,減少阻塞.
5).分解大的時(shí)間長(zhǎng)的操作,降低單個(gè)操作的阻塞時(shí)間.
6).降低并發(fā)數(shù)(減少對(duì)MySQL的訪問(wèn)),某些高并發(fā)的場(chǎng)景可以通過(guò)應(yīng)用進(jìn)行排隊(duì)隊(duì)列機(jī)制.
7).對(duì)于靜態(tài)(更改不頻繁)的數(shù)據(jù)庫(kù)數(shù)據(jù),充分利用Query Cache或者memcached緩存服務(wù)極大可能的提高訪問(wèn)效率.
8).MyISAM的count只有在全表掃描的時(shí)候才是最高效的,帶有條件的count都需要進(jìn)行試機(jī)的數(shù)據(jù)訪問(wèn).
9).也可以在做主從同步的時(shí)候主庫(kù)使用InnoDB,從庫(kù)使用MyISAM,進(jìn)行讀寫(xiě)分離(不推薦使用,數(shù)據(jù)遷移和升級(jí)比較麻煩)
總結(jié)
以上是生活随笔為你收集整理的MyISAM引擎的特点及优化方法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 九大排序算法
- 下一篇: 关于如何获取剪切板的多个图片处理