Mysql架构 --存储引擎html
一 Mysql存储引擎mysql
(1)存储引擎引入了一个新的概念,插件式存储引擎体系结构,MYSQL AB架构改造时候,让存储引擎层和sqllayer各自更为独立,耦合更小,甚至能够作到在线加载存储引擎,就是彻底能够将一个新的存储引擎加载到一个正在运行的MySQL 中,而不影响MySQL 的正常运行。sql
(2)插件式存储引擎的数据库
架构,为存储引擎的加载和移出更为灵活方便,也使自行开发存储引擎更为方便简单。数据结构
(3)MySQL的插件式存储引擎主要包括MyISAM,Innodb,NDB Cluster,Maria,Falcon,Memory。其中最著名并且使用最为普遍的MyISAM和Innodb两种存储引擎架构
二 Mysql存储引擎介绍ide
1、mysql5.1以前默认存储引擎。工具
2、MyISAM存储引擎的表在数据库中,每个表都被存放为三个以表名命名的物理文件。spa
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实现了外键引用这一数据库的重要特性。
四、Innodb存储引擎也和MyISAM不太同样,.frm文件来存放表结构定义相关的元数据,可是表数据和索引数据是存放在一块儿的。
六:Lnnodb物理结构分为俩大部分
首先,Innodb的表空间分为两种形式。一种是共享表空间,也就是全部表和索引数据被存放在同一个表空间(一个或多个数据文件)中,经过innodb_data_file_path来指定,增长数据文件须要停机重启。另一种是独享表空间,也就是每一个表的数据和索引被存放在一个单独的.ibd文件中。
2: 日志文件
Innodb彻底能够经过redo 日志将数据库Crash 时刻已经完成但尚未来得及将数据写入磁盘的事务恢复,也可以将全部部分完成并已经写入磁盘的未完成事务回滚并将数据还原。
MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的