4.只會緩存索引:MyIASM能夠經過key_buffer_size緩存索引,以大大提升訪問性能減小磁盤IO。可是這個緩存區只會緩存索引,而不會緩存數據。
1.3 MyIASM引擎適用的生產業務場景
1)不須要事務支持的業務(例如轉帳就不行)
2)通常爲讀數據比較多的應用,讀寫都頻繁場景不適合,讀多或者寫多的都適合。
3)讀寫併發訪問相對較低的業務(純讀純寫高併發也能夠)(鎖定機制問題)
4)數據修改相對較少的業務(阻塞問題)
5)以讀爲主的業務,例如:數據庫系統表、www、blog圖片信息數據庫,用戶數據庫。商品庫等業務
6)對硬件一致性要求不是很是高的業務(不支持事務)
7)硬件資源比較差的機器能夠用MySAM(佔用資源少)
8)使用讀寫分離的MySQL從庫可使用MyIASM
小結:單一對數據庫的操做均可以使用MyIASM,因此單一就是儘可能純讀,或純寫(insert,update,delete)等
1.4 MyIASM引擎調優精要
1.設置合適的索引(緩存機制)
2.調整讀寫優先級,根據實際需求確保重要操做更優先執行。
3.啓用延遲插入改善大批量寫入性能(下降寫入頻率,儘量多條數據一次性寫入)
4.儘可能順序操做讓insert數據都寫入到尾部,減小阻塞
5.分解大的時間長的SQL操做,下降單個操做的阻塞時間。
6.下降併發數(減小對MySQL訪問),某些高併發場景經過應用進行排隊隊列機制
7.對於相對靜態(更改不頻繁)的數據庫數據,充分利用Query Cache或memcached緩存服務能夠極大的提升訪問效率,網站動態內容靜態化,減小對數據庫的訪問。
InnoDB引擎
1.1 什麼是InnoDB引擎?
InnoDB引擎是MySQL數據庫的另外一個重要的存儲引擎,整成爲目前MySQL AB所發行新版的標準,被包含在全部二進制安裝包裏。和其餘的存儲引擎相比,InnoDB引擎的優勢是支持兼容ACID的事務(相似於PostgerSQL)以及參數完整性(即對外鍵的支持)
Oracle公司2005年10月收購了Innobase。Innobase採用雙認證受權,它使用GUN發行,也容許其餘想將InnoDB結合到商業軟件的團體得到受權。
MySQL5.5.5之後數據庫的默認存儲引擎爲InnoDB
InnoDB引擎特色
1.支持事務:支持4個事務隔離級別,支持多版本讀。
2.行級鎖定(更新時必定是鎖定當前行):經過索引實現,全表掃描仍然會是表鎖,注意間隙鎖的影響。
3.讀寫阻塞與事務隔離級別相關。
4.具備很是搞笑的緩存特性:能緩存索引,也能緩存數據。
5.整個表和主鍵以Cluster方式存儲,組成一顆平衡樹。
6.全部Secondary Index都會保存主鍵信息
7.支持分區,表空間,相似oracle數據庫
8.支持外鍵約束 5.5 之後不支持全文索引,之後支持了。
9.和MyIASM引擎相比,InnoDB對硬件資源要求比較高。
InnoDB特色:面試必答題
1.Row-level locking #行級鎖
2.Full-text search indexs #全文索引
3.Data caches #緩存數據
4.Index caches #索引緩存
5.Transactions #支持事務
6.佔用資源多
7.讀寫阻塞與事務隔離級別相關。
8.外鍵
InnoDB引擎使用的生產業務場景
一、須要事務支持的業務(具備較好的事務特性)
二、行級鎖定對高併發有很好的適應能力,但須要確保查詢是經過索引完成
三、數據讀寫及更新都較爲頻繁的場景,如:BBS。SNA。微博,微信等。
四、數據一致性要求較高的業務,例如:充值轉帳、銀行卡轉帳。
五、硬件設備內存較大,能夠利用InnoDB較好的緩存能力來提升內存利用率,儘量減小磁盤IO
InnoDB引擎調優精要
一、主鍵儘量小,避免給Secondary index 帶來過大的空間負擔
二、創建有索引避免全表掃描,由於會使用表鎖。
三、儘量緩存全部的索引和數據,提升響應速度,減小磁盤IO消耗
四、在大批量小插入的視乎,儘可能本身控制事務而不要使用autocommit自動提交,有開關能夠控制提交方式:
五、合理設置innodb_flush_log_at_trx_commit參數值,不要過分追求安全性。
若是Innodb_flush_log_at_trx_commit的值爲0,log buffer每秒就會被刷寫日誌文件到磁盤,提交事務的時候不會任何操做。
六、避免主鍵更新,由於這會帶來大量的數據移動