您的位置:首页 > 数据库 > MySQL

mysql存储引擎

2017-07-08 22:20 141 查看
Mysql架构 --存储引擎
一 Mysql存储引擎
(1)存储引擎引入了一个新的概念,插件式存储引擎体系结构,MYSQL AB架构改造时候,让存储引擎层和sqllayer各自更为独立,耦合更小,甚至可以做到在线加载存储引擎,就是完全可以将一个新的存储引擎加载到一个正在运行的MySQL 中,而不影响MySQL 的正常运行。
(2)插件式存储引擎的
架构,为存储引擎的加载和移出更为灵活方便,也使自行开发存储引擎更为方便简单。
(3)MySQL的插件式存储引擎主要包括MyISAM,Innodb,NDB Cluster,Maria,Falcon,Memory。其中最著名而且使用最为广泛的MyISAM和Innodb两种存储引擎
二 Mysql存储引擎介绍
1、mysql5.1之前默认存储引擎。
2、MyISAM存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件。
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表






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



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: MyISAM和InnoDB的区别
MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 存储引擎