1、存儲引擎概念mysql
數據庫就是存放數據的倉庫。至於怎麼存儲,就涉及到存儲引擎。算法
不一樣的存儲引擎使用不一樣的存儲機制、索引機制、鎖定水平,根據實際需求選擇不一樣的存儲引擎。sql
2、mysql支持的存儲引擎數據庫
MyISAM、InnoDB、Memory、CSV、Archive併發
經常使用的:MyISAM、InnoDB高併發
3、各類存儲引擎比較性能
mysql引擎有不少,只介紹如下通用的引擎。日誌
MyISAM引擎orm
不支持事務操做,支持表級鎖,支持建立索引,不支持外鍵,併發性能會低不少(表級鎖),存儲空間會佔用比較小。索引
InnoDB引擎
支持事務操做,支持行級鎖,支持建立索引,支持外鍵,容許併發量更大(行級鎖),存儲空間會佔用比較大。InnoDB是默認的MySQL引擎。
memery 引擎
全部表的數據存儲在內存中,數據庫重啓和崩潰數據即將消失。很是適合儲存臨時數據的臨時表以及數據倉庫的經緯表。
Archive引擎
Archive存儲引擎只支持Insert和select操做,Archive存儲引擎十分適合儲存歸檔的數據,好比日誌。使用行鎖實現高併發的而操做。並且Archive存儲引擎使用了zlib算法,將數據行進行壓縮後儲存,壓縮比達1:10。
存儲引擎的選擇
1.若是要提供事物能力,並要求實現併發控制,InnoDB是一個好的選擇。
2.若是數據表主要用來插入和查詢記錄,則MyISAM引擎能提供較高的處理效率。
3.若是隻是臨時存放數據,數據量不大,以選擇將數據保存在內存中的Memory引擎。
4.若是隻有INSERT和SELECT操做,能夠選擇Archive,如記錄日誌信息可使用Archive。
4、設置表的存儲引擎
一、查看錶的引擎
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,ENGINE FROM information_schema.TABLES WHERE TABLE_NAME = 'TABLE_NAME';
SHOW CREATE TABLE TABLE_NAME;(也可從建立表的sql語句查看)。
SHOW TABLE STATUS where name ='TABLE_NAME'
二、修改表的引擎
ALTER TABLE TABLE_NAME ENGINE = InnoDB;
3.建立表時指定引擎
CREATE TABLE TABLE_NAME (ID INT) ENGINE=InnoDB;