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;