mysql存储引擎

来源:互联网 发布:linux挂载samba共享 编辑:程序博客网 时间:2024/06/09 18:31

一. 简介

     mysql支持多种存储引擎,什么是存储引擎,我猜就是底层存储数据的方式。每一种存储引擎都有各自的优缺点,比如InnoDB和BDB支持事务,其他的不支持。目前mysql支持的存储引擎如下所示:MyISAM,InnoDB, BDB,MEMORY,MERGE,EXAMPLE,ARCHIVE等。创建表的时候,如果不指定存储引擎,会选择默认的。mysql5.5之前,默认是MyISAM,5.5及以后,默认是InnoDB。


二. 存储引擎级别

      存储引擎是表级别的,可以给每一个表设置单独的存储引擎。数据库级别可以看支持哪些存储引擎


三. 存储引擎对比

特点MyISAM InnoDBMEMORYMERGENDB存储限制有 64TB有没有   有                  事务安全 支持   锁机制表锁行锁表锁表锁行锁B树索引支持支持支持支持支持哈希索引  支持 支持全文索引支持    数据缓存 支持支持 支持批量插入速度高低高 高高支持外键 支持   

下面主要介绍MyISAM,InnoDB,MEMORY

3.1 MyISAM

      MyISAM不支持事务,不支持外键。优势:访问速度快。如果应用主要select,insert为主,不要求事务,可以考虑MyISAM。

每个MyISAM在磁盘上存储3个文件,文件名和表名相同,扩展名如下:

.frm 存储表定义

.MYD 存储数据

.MYI 存储索引

数据文件和索引文件放置在不同目录,平均IO,可以获得更好速度


3.2 InnoDB

       InnoDB支持事务,外键。相比MyISAM,写入效率要差一些,因为支持事务等,需要写入更多的数据,以保障安全。这样,也会占用更多的磁盘,存储索引和数据。


3.3 MEMORY

       MEMORY创建的表,数据存放在内存中,速度非常快,采用Hash索引,但服务一单关闭,数据就会丢失


四. 如何选择合适的存储引擎

       MyISAM:如果应用是查询和插入为主,很少更新和删除,并且对于事务的安全性,并发性要求不高,可以选择。主要用于数据仓库

       InnoDB:支持事务,行锁,安全兼顾速度。适合OLTP系统(实时系统)



原创粉丝点击