#資料庫之執行引擎
myisam
引擎特點:
1.不支援事務
2.只支援表級鎖(資料庫操作表時需要鎖定整張表),鎖定成本小,但併發性不高
3.讀寫相互阻塞,但是讀讀不阻塞
4.只會快取索引,不會快取資料
5.讀取速度快(因為功能相對弱小,占用資源少,鎖粒度粗)
6.不支援外來鍵約束,但支援全文索引
7.myisam是mysql5.5.5前預設的儲存引擎
適用的生產業務場景
1.不需要事務支援的業務(例如銀行轉賬就不行)
2.一般為讀資料比較多的應用,讀寫都頻繁的不適合,讀多或者寫多的都適合
3.讀寫併發訪問相對較低的業務(純讀純寫高併發也可以)(鎖定機制問題)
4.資料修改相對較少的業務(阻塞問題)
5.以讀為主的業務,例如:部落格,**網,資訊資料庫,使用者資料庫,商品庫等業務
6.對資料一致性要求不是很高的業務
7.硬體資源比較差的機器可以使用myisam
小結:單一對資料庫的操作都可以使用myisam,所謂單一就是盡量純讀或者純寫等
引擎調優:
1.設定合適的索引(快取機制)
2.調整讀寫優先順序,根據實際需求確保重要的操作更優先執行
3.啟用延遲插入改善大批量寫入效能(降低寫入頻率,盡可能多條資料一次性寫入)
4.盡量順序操作讓insert操作都寫入尾部,減少阻塞
5.分解時間長的操作,降低單個操作的阻塞時間
6.降低併發數(減少對mysql訪問),某些高併發場景通過應用佇列機制q佇列
7.對於相對靜態(更改不頻繁)的資料庫資料,充分利用query cache或memcached,快取服務可以極大的提高訪問效率。
8.myisam的count只有在全表掃瞄的時候特別高效,帶有其他條件的count都需要進行實際的資料訪問
9.把主從同步的主庫使用innodb,從庫使用myisam引擎(不推薦,但有人這麼使用)
innodb
mysql5.5.5以後的預設儲存引擎為innodb
引擎特點:
1.支援事務:支援4個事務隔離級別,支援多版本讀
2.行級鎖定(更新時一般是鎖定當前行):通過索引實現。全表掃瞄仍然會是表鎖。
3.讀寫阻塞跟事務隔離級別相關
4.具有非常高效的快取特性:能快取索引,也能快取資料
5.整個表和主鍵以cluster方式儲存,組成 一顆平衡樹
6.所有secondary index都會儲存主鍵資訊
7.支援分割槽,表空間,類似oracle資料庫
8.支援外來鍵約束,5.5以前不支援全文索引,以後支援了
9.和myisam 引擎相比,對硬體資源要求較高
小結:事務,行級鎖,外來鍵
適用的生產應用場景:
引擎調優:
1.主鍵盡可能小,避免給secondary index帶來過大的空間負擔
2.避免使用全表掃瞄,因為會使用表鎖
3.盡可能快取所有的索引和資料,提高響應速度,減少磁碟io消耗
4.在大批量小插入的時候,盡量自己控制事務而不要使用autocommit自動提交。
5.避免主鍵更新,因為這會帶來大量的資料移動
有關mysql引擎常見企業面試題:
一、mysql有哪些儲存引擎,各自有什麼特點和區別?
常見的儲存引擎有myisam,innodb,memory等
二、生成環境中應如何選用mysql的引擎?
讀多寫少用myisam,硬體配置不高使用myisam。
支援事務,支援外來鍵需要使用innodb。
在一般的既有讀又有寫的業務中,建議使用innodb引擎,
資料庫MySQL 執行引擎介紹
不支援事務 也不支援外來鍵,優勢是訪問速度快,對事務完整性沒有 要求或者以select,insert為主的應用基本上可以用這個引擎來建立表 支援3種不同的儲存格式,分別是 靜態表 動態表 壓縮表 靜態表 表中的字段都是非變長字段,這樣每個記錄都是固定長度的,優點儲存非常迅速,容易快取,出現故障容易恢...
mysql之資料庫引擎
archive 支援插入和查詢兩種功能。在mysql 5.5以後的版本支援索引。使用 archive引擎建立表,會生成 frm 檔案和 arz 檔案,frm 檔案中儲存表的定義,arz 檔案中儲存表的壓縮後的資料和索引。isam isam是乙個定義明確且歷經時間考驗的資料 管理方法,查詢速度快,並且...
資料庫之儲存引擎
mysql中建立的庫 資料夾 庫中建立的表 檔案 資料庫中的表也應該有不同的型別,表的型別不同,會對應mysql不同的訪問機制,表型別又稱為儲存引擎。sql 解析器 sql 優化器 緩衝池 儲存引擎等元件在每個資料庫中都存在,但不是每 個資料庫都有這麼多儲存引擎。mysql 的外掛程式式儲存引擎可以...