无情 @ 2015-07-08 18:56:26 阅读(690)
存储引擎 MyISAM InnoDB


第一:什么是存储引擎

存储引擎就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。  在Oracle和SQLServer等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。



第二:MYSQL有哪些存储引擎

MySQL数据库有多种存储引擎:比如:MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE等等,主要存储引擎:MyISAM、InnoDB、MEMORY和MERGE。


MyISAM特点

它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。如果应用中需要执行大量的SELECT查询,那么MyISAM是更好的选择。


InnoDB特点

InnoDB是事务型引擎,支持回滚、崩溃恢复能力、多版本并发控制、ACID事务,支持行级锁定(InnoDB表的行锁不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,如like操作时的SQL语句),以及提供与Oracle类型一致的不加锁读取方。如果应用中需要执行大量的INSERT或UPDATE操作,则应该使用InnoDB,这样可以提高多用户并发操作的性能


MEMORY特点

MEMORY使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失。


关于几种数据引擎对比


第三:常用命令

1:修改表的存储引擎

alter table tablename type=InnoDB


2:启动mysql数据库的命令行中添加以下参数使新发布的表都默认使用事务

--default-table-type=InnoDB


3:临时改变默认表类型

set table_type=InnoDB

show variables like 'table_type'


4:看你的MySQL现在已提供什么存储引擎

show engines;


5:看你的MySQL当前默认的存储引擎

 show variables like '%storage_engine%';

6:你要看某个表用了什么引擎

  show create table 表名;

    

总结:目前我们在实际使用场景中一般都是MyISAM和InnoDB。本人在使用时数据库默认是InnoDB,然后根据业务场景对查询不怎么INSERT或UPDATE操作的表修改成MyISAM。