MySql数据库存储引擎
存储引擎就是如何存取数据,建立索引,更新和查询数据的实现方法.
存储引擎是针对表而言的,同一个MySql数据库的不同表可以使用不同的存储引擎.
MySql5.7提供的存储引擎有: InnoDB MRG_MYISAM Memory BLACKHOLE MyISAM CVS Archive PERFORMANCE_SCHEMA Federated
InnoDB
是一种事务型存储引擎,在MySql5.5.5之后,InnoDB就作为默认的存储引擎主要有以下特征
1.多表查询能力.
2.高性能
3.自动灾难恢复
4.外键约束
5.支持自动增加列AUTO_INCREMENT属性: 存储表中的数据时候,每张表都是按照主键顺序存放,如果表没有主键,则InnoDB存储
引擎会为每一行生成一个6字节的ROWID,并以此作为主键,此ROWID由自动增长列的值进行填充.
使用
InnoDB不创建目录,在使用InnoDB存储引擎时,MySql将在MySql数据目录下创建一个名为ibdata1 的10MB的自动扩展数据
文件,以及两个名为ib_logfile0和ib_logfile1的5Mb的日志文件
MyISAM
独立于操作系统, 说明可以轻松地将其从Windows服务器上移植到Linux服务器:每当建立一个MyISAM存储引擎的表时候,
就会在本地建立3个文件,文件名以表的名字作为主文件名,扩展名分别为.frm .MYD 和.MYI
作为MySql5.5.5之前的版本中默认的存储引擎,主要用于web,数据存储和其他应用环境,具有很高的插入,查询速度,因此常用于选择密集型的表和插入密集型的表中.但是由于MyISAM存储引擎不支持事务,这就意味着有事务处理的需求的表不能使用MyISAM存储引擎
优点:占用空间小,相对于InnoDB来说处理速度更快,缺点不支持事务的完整性和并发性约束.
Memory
Memory存储引擎为查询和引用其他表提供快速的访问速度. Memory存储引擎能实现最快的响应时间,采用的逻辑存储介质
是系统内存.
虽然在内存中存储表数据会提供很高的性能,但是当MySql的守护进程奔溃时,所有的Memory数据都会丢失,并且要求存储在Memory数据表里的数据使用的是长度不变的格式.
特点:
1.不支持BLOB和TEXT这样的长度可变的数据类型
2.虽然VERCHAR也是一种长度不变的类型,但因为它在MySql内部当做固定不变长度的CHAR类型, 所以可以使用.
3.储存在Memory表中的数据如果丢失,不会对应用服务器产生实质的负面影响.
4.可以在一个Memory表中有一个非唯一键
5.当目标数据较小时,而且被频繁的访问时,可以使用Memory存储引擎,并可以通过参数max_heap_table_size控制Memory
表的大小.
6.对要求必须立即可用的临时数据,可以存放在Memory表中,以加快访问速度.
7.Memory表支持AUTO_INCREMENT列和对包含了NULL值的列的索引.
8.当不需要Memory表的内容时,需要释放Memory表使用的内存,可以执行DELETE FORM 或 TRUNCATE TABLE , 或者使用DROP TABLE 将整个表删除.
查看本地mysql 内存引擎
show variables like 'default_storage_engine';

修改默认的存储引擎
1.打开配置文件my.ini
2.找到[mysqld]组
3.将"default_storage_engine = MyISAM" 修改并保存
4.重启mysql服务.
存储引擎的比较

InnoDB 存储引擎提供提交,回滚和崩溃恢复能力的事务安全能力,以及并发控制的能力;
MyISAM 存储引擎能提供对表的插入和查询的高效率处理能力;
Memory 存储引擎主要用于在数据库不大,临时存放数据,且对数据安全性要求不高时,mysql可使用该引擎作为临时表,存放查询结果
Archive 存储引擎支持高并发的插入操作,可用于只有insert和Select操作的情况,非常适合归档数据存储,如记录日志信息.
对数据库的不同的表可灵活选择不同的存储引擎,选择合适的存储引擎,将会提高真个数据库的性能.
网友评论