mysql数据库引擎

数据库引擎简单来说就是一个"数据库发动机"。当你访问数据库时,不管是手工访问,还是程序访问,都不是直接读写数据库文件,而是 通过数据库引擎去访问数据库文件。以关系型数据库为例,你发SQL语句给数据库引擎, 数据库引擎解释SQL语句,提取出你需要的数据返回给你。因此,对访问者来说,数据库引擎就是SQL语句的解释器。
  正式来说,数据库引擎是用于 存储、处理和保护数据的核心服务。利用数据库引擎可以 控制访问权限并快速处理事务,从而满足企业内大多数需要 处理大量数据的应用程序的要求,这包括 创建用于存储数据的表和用于查看、管理和保护数据安全的数据库对象(如索引、视图和存储过程)。
数据库引擎的任务
1:设计并创建数据库以保存系统所需要的关系或xml文档
2:实现系统以访问或更改数据库中存储的数据,实现网站或使用数据的应用程序,包括使用SOL Server工具和使用工具已使用数据的过程。
3:为单位或用户部署实现的系统
4:提供日常管理支持优化数据库的性能。

1:MyISAM引擎
MyISAM是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到 数据库被查询的次数要远大于更新的次数 。因此, MyISAM执行读取操作的速度很快,而且不占用大量的内存和存储资源。 MyISAM还使用一种表格锁定的机制(表级锁),来优化多个并发的读写操作,其代价是你需要经常运行OPTIMIZE TABLE命令,来恢复被更新机制所浪费的空间,否则碎片也会随之增加,最终影响数据访问性能。
MYISAM强调了快速读取操作 ,这可能就是为什么MySQL受到了WEB开发如此青睐的主要原因:在WEB开发中你所进行的大量数据操作都是读取操作。所以,大多数虚拟主机提供商和INTERNET平台提供商只允许使用MYISAM格式。
2:InnoDB引擎
In弄DB数据库引擎是早就Mysql灵活性的技术的直接产品,这项技术就是mysql+api,在使用mysql的时候,你所面对的每一个挑战几乎都源于isam和myisam数据库引擎不支持事务处理也不支持外来键。
InnoDB的特点
InnoDB要比myisam引擎慢
innoDB为mysql表提供了acid事务支持,系统崩溃修复能力和多版本并发控制的行级锁,该引擎提供了行级锁和外键约束,所以InnoDB是事务型数据库首选的引擎。
采用B+树实现,索引与数据存储在同一文件中。
InnoDB与MyISAM的对比
1:存储结构
innoDB使用共享表空间存储方式时,所有数据存在一个单独的表空间里面,而这个表空间是由很多个文件组成的,一个表可以跨越多个文件存在,InnoDB表空间的最大限制为64TB,innoDB的表限制基本上在64TB左右,当然这个大小是包括这个表所有索引和其它相关数据。使用单独表空间存储方式时,每个表的数据以一个单独的文件来存储,这个单独文件存放,单表限制了文件系统的大小。
MyISAM中每个表被存在分离的文件中,每个MyISAM中的表在磁盘上存储成三个文件,每一个文件的名字均以表的名字开始,扩展名指出文件类型:.frm文件存储表定义;MYD文件存储表的数据;MYI文件存储表的索引。
2:存储空间
InnoDB存储引擎为在主内存建立其专用的缓冲池来缓存数据和索引,所以需要更多的内存和存储。
MyISAM可被压缩,存储空间较小。支持三种不同的存储格式:静态表(默认,但是注意数据末尾不能有空格,会被去掉)、动态表、压缩表。
MyISAM引擎支持对表的压缩,压缩后的空间上比压缩前会减少60%-70%,但是压缩后的表是只读的,这个要注意,根据使用场景判断是否需要压缩。
3:索引与数据
索引(Index)是帮助MySQL高效获取数据的数据结构。MyIASM和Innodb都使用了树这种数据结构做为索引
Innodb引擎的索引结构是B+Tree,但是这棵树的叶节点data域保存了完整的数据记录,所以InnoDB的 数据文件本身就是索引文件 ,索引和数据是紧密捆绑的。data域的key是数据表的主键。没有使用压缩从而会造成Innodb比MyISAM体积庞大不小。
4:是否保存行数
InnoDB中不保存表的具体行数,执行select count() from table 时,InnoDB要扫描一遍增高饿表来计算有多少行。
myISAM中存储了表的行数,于是select count(
) from table时只需要直接取已经保存好的值而不需要进行全表扫描。
5:锁
MyISAM支持的是表级锁,而InnoDB支持的是行级锁。但由于锁的粒度更小,写操作不会锁定全表,所以在并发较高时,使用Innodb引擎会提升效率。但是使用行级锁也不是绝对的,如果在执行一个SQL语句时MySQL不能确定要扫描的范围,InnoDB表同样会锁全表,例如update table set num=1 where name like “a%”
6:可移植性、备份及恢复
InnoDB免费的方案可以是拷贝数据文件、备份 binlog,或者用 mysqldump,在数据量达到几十G的时候就相对痛苦了。
MyISAM引擎中的数据是以文件的形式存储,所以在跨平台的数据转移中会很方便。在备份和恢复时可单独针对某个表进行操作

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值