码迷,mamicode.com
首页 > 其他好文 > 详细

表类型(存储引擎)的选择

时间:2015-01-21 10:10:39      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

表类型(存储引擎)的选择

插件式存储引擎是MySQL数据库最重要的特性之一,用户可以依据应用的需要选择如何存储和索引数据、是否使用事务等。

MySQL5.0支持的存储引擎包括MyISAM、InnoDB、BDB、MEMORY、MERGE、EXAMPLE、NDB Cluster、ARCHIVE、CSV、BLACKHOLE、FEDERATED等,其中InnoDB和BDB提供事务安全表,其他存储引擎提供非事务安全表。

默认情况下,创建新表不指定表的存储引擎,则新表是默认存储引擎,如果需要修改,设置default-table-type。

eg: create table ai(

                  i bigint(20) not null auto_increatement,

                  primary key(i)

)ENGINE=MyISAM DEFAULT CHARSET=gbk;

Alter table ai engine=innodb;

 

 

MyISAM

MyISAM是MySQL的默认存储引擎。MyISAM不支持事务、也不支持外键。优势是访问速度快,对事物完整性没有要求或者以select、insert为主的应用基本上都可以使用此引擎创建表。每个MyISAM在磁盘上存储成3个文件,其文件名都和表名相同,扩展分别为:

.frm(存储表定义)

MYD(MYData,存储数据)

MYI(MYIndex,存储索引)

加锁:对整张表进行加锁,而不是行

         并发:在读数据的时候,所有的表上都可以获得共享锁(读锁),每个连接都不互相干扰。在写数据的时候,获得排他锁,会把整个表进行加锁,而其他的连接请求(读,写请求)都处于等待中

 

 

InnoDB

InnoDB存储引擎提供了具有提交、回滚、和崩溃回复能力的事务安全。跟MyISAM比,InnoDB写的处理效率差一些并且会占用更多的磁盘空间以保留数据和索引。

自动增长列必须索引。

MySQL支持外键的存储引擎只有InnoDB在创建外键的时候,要求父表必须有对应的索引,字表在创建外键的时候会自动创建对应的索引。

InnoDB存储表和索引有两种方式:1、使用共享表空间存储;2、使用多表空间存储

MEMORY

MEMORY存储引擎使用存在内存中的内容来创建表。每个MEMORY表只实际对应一个磁盘文件,格式是.frm。访问速度快(因为数据在内存中,默认使用hash索引,但是一旦服务关闭,表中数据就会丢失)

MERGE

MERGE存储引擎是一组MyISAM的组合,这些MyISAM表必须结构完全相同,MERGE表本身没有数据,对MERGE类型的表进行查询、更新、删除等操作实际上是对内部的MyISAM表进行的。

表类型(存储引擎)的选择

标签:

原文地址:http://www.cnblogs.com/qihuan/p/4238085.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!