3.1 概述:
1,MYISAM 是mysql 5.5以前版本的默认引擎,5.5以后默认存储引擎是innodb
2、查看mysql存储引擎命令,在mysql>提示符下搞入show engines;字段 Support为:Default表示默认存储引擎
3、设置InnoDB为默认引擎:在配置文件my.cnf中的 [mysqld] 下面加入default-storage-engine=INNODB 一句
3.2 MYISAM存储引擎概述:
1,MyISAM 存储引擎的表在数据库中,每一个表都被存放为三个以表名命名的物理文件 .frm,.MYI,MYD三个文件的作用第二章中以说明;注意,不管某个表有多少个索引,都是存放在MYI这个文件中
2, MyISAM 支持以下三种类型的索引:
1、B-Tree 索引
B-Tree 索引,顾名思义,就是所有的索引节点都按照 balance tree 的数据结构来 存储,所有的索引数据节点都在叶节点。
2、R-Tree 索引
R-Tree 索引的存储方式和 b-tree 索引有一些区别,主要设计用于为存储空间和多 维数据的字段做索引,所以目前的 MySQL 版本来说,也仅支持 geometry 类型的字段作索引。
3、Full-text 索引
Full-text 索引就是我们长说的全文索引,他的存储结构也是 b-tree。主要是为了 解决在我们需要用 like 查询的低效问题。
3,MyISAM 存储引擎的某个表文件出错之后,仅影响到该表,而不会影响到其他表,更不 会影响到其他的数据库
4,如果我们正在运行过程中发现某个 MyISAM 表出现问题了, 则可以在线通过 check table 命令来尝试校验他,并可以通过 repair table 命令来尝试修
复。在数据库关闭状态下,我们也可以通过 myisamchk 工具来对数据库中某个(或某些) 表 进行检测或者修复。不过强烈建议不到万不得已不要轻易对表进行修复操作,修复之前尽量 做好可能的备份工作,以免带来不必要的后果
3.3 Innodb 存储引擎简介
1、支持事务安装
2,数据多版本读取
3,锁定机制的改进 -- 行级锁
4、实现外键
5,Innodb 的物理结构分为两大部分:
<1>数据文件(表数据和索引数据):
表空间:一种是共享表空间,也就是所有表和索引数据被存放 在同一个表空间(一个或多个数据文件)中,通过 innodb_data_file_path 来指定,增加数
据文件需要停机重启。
另外一种是独享表空间,也就是每个表的数据和索引被存放在一个 单独的.ibd 文件中。
6,虽然我们可以自行设定使用共享表空间还是独享表空间来存放我们的表,但是共享表空 间都是必须存在的,因为 Innodb 的 undo 信息和其他一些元数据信息都是存放在共享表空间 里面的。共享表空间的数据文件是可以设置为固定大小和可自动扩展大小两种形式的,自动 扩展形式的文件可以设置文件的最大大小和每次展量。在创建自动扩展的数据文件的时候,建议大家最好加上最大尺寸的属性,一个原因是文件系统本身是有一定大小限制的(但 是 Innodb 并不知道),还有一个原因就是自身维护的方便。另外,Innodb 不仅可以使用文 件系统,还可以使用原始块设备,也就是我们常说的裸设备。 当我们的文件表空间快要用完的时候,我们必须要为其增加数据文件,当然,只有共享 表 空 间 有 此 操 作 。 共 享 表 空 间 增 加 数 据 文 件 的 操 作 比 较 简 单 , 只 需 要 在 innodb_data_file_path 参数后面按照标准格式设置好文件路径和相关属性即可,不过这里 有一点需要注意的,就是 Innodb 在创建新数据文件的时候是不会创建目录的,如果指定目
录不存在,则会报错并无法启动。另外一个较为令人头疼的就是 Innodb 在给共享表空间增 加数据文件之后,必须要重启数据库系统才能生效,如果是使用裸设备,还需要有两次重启 。 这也是我一直不太喜欢使用共享表空间而选用独享表空间的原因之一