mysql數(shù)據(jù)庫存儲引擎
一优构、存儲引擎概念
數(shù)據(jù)庫就是存放數(shù)據(jù)的倉庫琢融。至于怎么存儲界牡,就涉及到存儲引擎。
不同的存儲引擎使用不同的存儲機(jī)制漾抬、索引機(jī)制宿亡、鎖定水平,根據(jù)實(shí)際需求選擇不同的存儲引擎纳令。
二挽荠、mysql支持的存儲引擎
MyISAM、InnoDB平绩、Memory圈匆、CSV、Archive
常用的:MyISAM捏雌、InnoDB
三跃赚、各種存儲引擎比較
mysql引擎有很多,只介紹以下通用的引擎性湿。
MyISAM引擎
不支持事務(wù)操作来累,支持表級鎖,支持創(chuàng)建索引窘奏,不支持外鍵,并發(fā)性能會低很多(表級鎖)葫录,存儲空間會占用比較小着裹。
InnoDB引擎
支持事務(wù)操作,支持行級鎖米同,支持創(chuàng)建索引骇扇,支持外鍵,允許并發(fā)量更大(行級鎖)面粮,存儲空間會占用比較大少孝。InnoDB是默認(rèn)的MySQL引擎。
memery 引擎
所有表的數(shù)據(jù)存儲在內(nèi)存中熬苍,數(shù)據(jù)庫重啟和崩潰數(shù)據(jù)即將消失稍走。非常適合儲存臨時(shí)數(shù)據(jù)的臨時(shí)表以及數(shù)據(jù)倉庫的經(jīng)緯表。
Archive引擎
Archive存儲引擎只支持Insert和select操作,Archive存儲引擎十分適合儲存歸檔的數(shù)據(jù),比如日志柴底。使用行鎖實(shí)現(xiàn)高并發(fā)的而操作婿脸。而且Archive存儲引擎使用了zlib算法,將數(shù)據(jù)行進(jìn)行壓縮后儲存柄驻,壓縮比達(dá)1:10狐树。
存儲引擎的選擇
1.如果要提供事物能力,并要求實(shí)現(xiàn)并發(fā)控制鸿脓,InnoDB是一個(gè)好的選擇抑钟。
2.如果數(shù)據(jù)表主要用來插入和查詢記錄涯曲,則MyISAM引擎能提供較高的處理效率。
3.如果只是臨時(shí)存放數(shù)據(jù)在塔,數(shù)據(jù)量不大幻件,以選擇將數(shù)據(jù)保存在內(nèi)存中的Memory引擎。
4.如果只有INSERT和SELECT操作心俗,可以選擇Archive傲武,如記錄日志信息可以使用Archive。
四城榛、設(shè)置表的存儲引擎
1揪利、查看表的引擎
SELECT TABLE_SCHEMA,TABLE_NAME,TABLE_TYPE,ENGINE FROM information_schema.TABLES WHERE TABLE_NAME = 'TABLE_NAME';
SHOW CREATE TABLE TABLE_NAME;(也可從創(chuàng)建表的sql語句查看)狠持。
SHOW TABLE STATUS where name ='TABLE_NAME'
2疟位、修改表的引擎
ALTER TABLE TABLE_NAME ENGINE = InnoDB;
3.創(chuàng)建表時(shí)指定引擎
CREATE TABLE TABLE_NAME (ID INT) ENGINE=InnoDB;