mysql存储引擎-阿里云开发者社区

开发者社区> 数据库> 正文
登录阅读全文

mysql存储引擎

简介:

  Mysql架构 --存储引擎

 Mysql存储引擎

1)存储引擎引入了一个新的概念,插件式存储引擎体系结构,MYSQL AB架构改造时候,让存储引擎层和sqllayer各自更为独立,耦合更小,甚至可以做到在线加载存储引擎,就是完全可以将一个新的存储引擎加载到一个正在运行的MySQL 中,而不影响MySQL 的正常运行。

2插件式存储引擎的

架构,为存储引擎的加载和移出更为灵活方便,也使自行开发存储引擎更为方便简单。

(3)MySQL的插件式存储引擎主要包括MyISAMInnodbNDB ClusterMariaFalconMemory其中最著名而且使用最为广泛的MyISAMInnodb两种存储引擎

 Mysql存储引擎介绍

1mysql5.1之前默认存储引擎。

2MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。

3.结构定义信息的.frm文件,另外还有.MYD.MYI 文件,分别存放了表的数据(.MYD)和索引数据(.MYI)。

4. 每个表都有且仅有这样三个文件做为MyISAM存储类型的表的存储,就是说不管这个表有多少个索引,都是存放在同一个.MYI 文件中。

 MyISAM支持以下三种类型的索引:

1: B-Tree 索引

B-Tree 索引,就是所有的索引节点都按照balance tree 的数据结构来存储,所有的索引数据节点都在叶节点。

2: R-Tree 索引

要设计用于为存储空间和多维数据的字段做索引,所以目前的MySQL 版本来说,也仅支持geometry 类型的字段作索引。

3: Full-text 索引

Full-text 索引就是全文索引,他的存储结构也是b-tree。主要是为了解决在我们需要用like 查询的低效问题。

4: 索引有一个较大的限制,那就是参与一个索引的所有字段的长度之和不能超过1000 字节。

四:磁盘硬件故障

1每一个MyISAM的表都是存放在一个相同后缀名的.MYD 文件中,但实际存放格式可能并不是完全一样的

2因为MyISAM的数据存放格式是分为静态(FIXED固定长度、动态(DYNAMIC可变长度以及压缩(COMPRESSED)这三种格式。可以在创建表的时候通过ROW_FORMAT 来指定

 

  先算一个表中一行有多少个字节。

根据数据库中的表每天增加多少行记录,就能够算出每天要增加多少硬盘空间,这样就可根据数据量估算规划多大的空间。

例在数据库test中创建一张test1

wKiom1lg6bnxsfU3AAAKC9Cb2_s416.png-wh_50

wKioL1lg6crAEM8UAAAjh6xtgdA069.png-wh_50

执行mysql>desc  test1.tb1查看tb1的表结构

wKioL1lg6eCwRUTBAAAofriwtho027.png-wh_50

10个字节+20个字节+2个字节+20字节+8字节+8字节+100个字节=168字节

Tb1表的一个行有118个字节

如果每天增加10000条记录,大约需要10000x168/1024/1024=1.6MB

这样就可以根据每天增加的记录数,合理规划好磁盘空间了

1如果我们的数据库正在运行过程中发现某个MyISAM表出现问题了,则可以在线通过check table 命令来尝试校验他,并可以通过repair table 命令来尝试修复

2: 我们也可以通过myisamchk工具来对数据库中某个(或某些)表进行检测或者修复。

五:lnnodb 存储引擎介绍

1、支持事务

Innodb在功能方面最重要的一点就是对事务的支持

2、锁定机制的改进

Innodb改变了MyISAM的锁机制,实现了行锁。

3、实现外键

Innodb实现了外键引用这一数据库的重要特性。

4、Innodb存储引擎也和MyISAM不太一样,.frm文件来存放表结构定义相关的元数据,但是表数据和索引数据是存放在一起的。

六:Lnnodb物理结构分为俩大部分

首先,Innodb的表空间分为两种形式。一种是共享表空间,也就是所有表和索引数据被存放在同一个表空间(一个或多个数据文件)中,通过innodb_data_file_path来指定,增加数据文件需要停机重启。另外一种是独享表空间,也就是每个表的数据和索引被存放在一个单独的.ibd文件中。

 2: 日志文件

Innodb完全可以通过redo 日志将数据库Crash 时刻已经完成但还没有来得及将数据写入磁盘的事务恢复,也能够将所有部分完成并已经写入磁盘的未完成事务回滚并将数据还原。

3: MyISAMInnoDB的区别

MyISAM不支持事务,而InnoDB支持。InnoDBAUTOCOMMIT默认是打开的

wKiom1lg6fWDPf8KAAARqsBplx4349.png-wh_50










     本文转自柴鑫旺 51CTO博客,原文链接:http://blog.51cto.com/chaixinwang/1945553,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享: