关于mysql:mysql-系列存储引擎

12次阅读

共计 1643 个字符,预计需要花费 5 分钟才能阅读完成。

介绍

在上一篇文章 mysql 总体概述 里咱们大略理解了 mysql 的架构设计,其中提到了 存储引擎。它在 mysql 里是一个十分重要的角色,负责了数据的创立、读取和更新,也就是数据的 I/O 操作。

最重要的是,它是 可插拔 的模块,这意味着咱们在切换存储引擎时,对于下层利用来讲,是不须要做任何适配的。

存储引擎有很多种,而且都有属于本人的个性,像咱们常见的 InnoDB 有事务反对、MyISAM 速度较快等。

存储引擎的用法

作为插件化的模块,咱们能够很天然的增加、卸载存储引擎,并且在创立表时指定存储引擎。

加载存储引擎

mysql 通过曾经定义好的 API 接口与存储引擎通信,所以咱们只有实现对应的 API 接口,就能够在 mysql 运行时加载进来。

在 mysql 源码里有一个 example 的存储引擎,咱们能够看到它须要实现的 API 接口如下:

当咱们实现了这些办法后,就能够把它编译为共享库,而后应用上面的语句加载进来了

INSTALL PLUGIN example SONAME 'example.so';

须要留神的是,插件文件必须位于 mysql 插件目录中,并且领有对 plugin 表的 INSERT 权限。

卸载存储引擎

要卸载存储引擎,就比较简单了

UNINSTALL PLUGIN example;

当卸载后,对应的表将 不可拜访,所以肯定要留神是否还有该存储引擎的表在应用!

查看并应用存储引擎

当咱们加载了存储引擎后,能够应用上面的命令来查看:

show engines;

如果咱们想要应用对应的存储引擎时,能够应用上面的办法:

  • 创立表时指定:CREATE TABLE t1 (id INT) ENGINE = INNODB;
  • 设置默认应用:SET default_storage_engine=INNODB;
  • 批改表时指定:ALTER TABLE t ENGINE = InnoDB;

其中 ALTER TABLE 将会把旧表复制到新的表,并且在此期间都会加锁应用,要特地留神。

存储引擎的品种特点

在 mysql 里实现了很多种的存储引擎,每种存储引擎都有属于它们的特色。咱们来看看 mysql 里反对的存储引擎有哪些吧。

InnoDB:它是 mysql 的默认存储引擎,可能实现 ACID 个性的事务,并且能提交、回滚、复原数据,能很好的保障用户数据。同时反对了行级锁、汇集索引以及外键束缚,是一个欠缺的存储引擎。

MyISAM:是 mysql 最开始的存储引擎,占用空间小,能疾速存储,但不反对事务,提供了基于表级别的锁粒度,实用于配置或只读性能的应用程序。

Memory:数据都是存在内存里的,能提供快速访问,不过应该较少人应用,毕竟一旦断电数据也就失落了。

CSV:带有逗号分隔值的文本文件,没有索引存在。然而兼容性很好,能够跟其余的程序替换数据。

其余存储引擎应用较少,就不再提及了,

存储引擎的差别点

存储引擎都有属于本人的个性,它们的差别点大抵上能够归纳如下:

  • 并发性:对锁的粒度操控不一样,有的提供了表锁,有的提供了行锁,甚至有的还提供了快照读。
  • 事务:有的存储引擎反对,有的不反对,并不是每个程序的设计都须要事务,像日志这种流水数据就不须要了。
  • 参照完整性:即是否反对外键,有了外键,则关联性强,在删除的时候会做关联查看。
  • 存储形式:在表和索引的存储形式上不一样,像 MyISAM 会存储成三个文件,InnoDB 所有的表都保留在同一个数据文件中。
  • 索引反对:有的是汇集索引,间接叶子节点上存放数据,有的在叶子节点只存了数据区域的指针。

总结

插件式的存储引擎为咱们带来了多种抉择,应用哪个存储引擎其实并没有指定的规定,只能是依照以后的需要剖析去抉择。像想要全文索引,能够抉择 MyISAM 或 InnoDB,想要数据完整性或者是事务反对,则须要抉择 InnoDB。

当然,很多时候咱们会间接的抉择默认的存储引擎 InnoDB,毕竟在面对随时都会改需要的互联网我的项目而言,大而全是咱们最好的抉择。


感兴趣的敌人能够搜一搜公众号「阅新技术」,关注更多的推送文章。
能够的话,就顺便点个赞、留个言、分享下,感激各位反对!
阅新技术,浏览更多的新常识。

正文完
 0