mysql-存储引擎

mysql-存储引擎

mysql 存储引擎一般有 MyISAM、InnoDB、Memory、Merge、BDB、EXAMPLE、Federated 存储引擎。


一、MyISAM存储引擎

       不支持事务的存储引擎,它是基于更老的ISAM存储引擎,每个MyISAM 存储引擎类型的表在磁盘上存储3个文件:tablename.frm存储定义文件、tablename.MYD :存储表的数据文件 tableName.MYI存储表的索引文件。我们指明设置一个表的存储引擎为MyISAM 存储引擎可以:Create table t(i int primarykey) engine=MyISAM ,注意老版本(5.1之前)的是使用type关键字 ,而从5.1之后是使用engine关键字。MyISAM存储引擎是mysql默认的存储引擎,但是在5.5以及5.5版本之后mysql的默认存储引擎是InnoDB 存储引擎。

伦理片 http://www.dotdy.com/

 MyISAM存储引擎的特性:

1、每个MyISAM存储引擎的表最大支持64个索引文件

2、blob和text列可以被设置为索引

3、提供高速的存储和压缩表以及全文检索功能

4、MyISAM是对整个表进行加锁的,不是对行锁的,读取时候会对其读取的所有表进行加共享锁,写入的时候会对表加入排他锁,但是在表的读取查询的同时,也可以往表里插入新的记录。

5、MyISAM表使用了B型树的索引 索引文件大小为: (key_length +4) * 0.67 加上所有键的和。

6、MyISAM支持三种不同的存储格式:固定格式、动态格式和压缩格式,固定格式和动态格式根据正在使用的列进行自动选择,对于已经压缩的格式则必须使用myisampack工具来创建。

二、InnoDB存储引擎

       InnoDB给mysql数据库提供了具有提交、回滚和崩溃恢复的事务安全存储引擎,InnoDB锁定在行级别并也在查询的select语句中非锁定读--这些特性增加了mysql数据库的吞吐量,我们都知道mysql在解决高并发的环境下使用了共享锁和排他锁(其实这就像我们在java语言中的JDK1.5中添加的并发包中的ReentrantReadWriteLock 类,多个线程可以持有读锁-共享锁,有且仅当有一个线程具有写锁-排他锁,并且写锁的优先级最高,当写锁到达的时候必须插入到所有读锁之前,其他获得的读锁的线程必须等待写锁完成)那如何看待Innodb的性能呢? 1、innodb是行级别的锁定适合非常小的空间而不是像MyISAM存储引擎基本上是整张表进行锁定,innodb支持外键特性 innodb是为处理巨大数据量的最大性能而设计的,它为主内存中缓冲数据和索引而维护自己的缓冲池,innodb存储它的表和索引在一个表的空间中,表空间可以包含数个文件 innodb表可以使任何尺寸的,即使文件大小受操作系统的限制也是可以的。

    被InnoDB存储引擎所管理的资源包含有innodb的表空间和它的日志文件。

未完待续。。。。。。

影音先锋电影 http://www.iskdy.com/



评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值