美文网首页
MySQL存储引擎

MySQL存储引擎

作者: robot_test_boy | 来源:发表于2020-10-21 07:32 被阅读0次

    数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。简而言之,存储引擎就是指表的类型数据库的存储引擎决定了表在计算机中的存储方式不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。

    现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎

    有哪些存储引擎

    MySQL 提供了多个不同的存储引擎,包括处理事务安全表的引擎处理非事务安全表的引擎。在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎

    MySQL 5.7 支持的存储引擎有 InnoDB、MyISAM、Memory、Merge、Archive、CSV、BLACKHOLE 等。可以使用SHOW ENGINES;语句查看系统所支持的引擎类型以及引擎是否支持事务等。

    Support 列的值表示某种引擎是否能使用,YES表示可以使用,NO表示不能使用,DEFAULT表示该引擎为当前默认的存储引擎。

    下面简要描写几种存储引擎,后面会对其中的几种(主要是 InnoDB 和 MyISAM )进行详细讲解。

    MySQL如何查看和修改默认存储引擎

    如果需要操作默认存储引擎,首先需要查看默认存储引擎,如下:SHOW VARIABLES LIKE 'default_storage_engine%';

    修改数据库临时的默认存储引擎:SET default_storage_engine=< 存储引擎名 >

    可以发现 MySQL 的默认存储引擎已经变成了 MyISAM。但是当再次重启客户端时,默认存储引擎仍然是 InnoDB。

    如何选择MySQL存储引擎?

    在使用 MySQL 数据库管理系统时,选择一个合适的存储引擎是一个非常复杂的问题。不同的存储引擎都有各自的特性、优势和使用的场合,正确的选择存储引擎可以提高应用的使用效率。

    为了能够正确地选择存储引擎,必须掌握各种存储引擎的特性。

    1) MyISAM

    在 MySQL 5.1 版本及之前的版本,MyISAM 是默认的存储引擎。

    MyISAM 存储引擎不支持事务和外键,所以访问速度比较快。如果应用主要以读取和写入为主,只有少量的更新和删除操作,并且对事务的完整性、并发性要求不是很高,那么选择 MyISAM 存储引擎是非常适合的。

    MyISAM 是在 Web 数据仓储和其他应用环境下最常使用的存储引擎之一。

    2) InnoDB

    MySQL 5.5 版本之后默认的事务型引擎修改为 InnoDB。

    InnoDB 存储引擎在事务上具有优势,即支持具有提交、回滚和崩溃恢复能力的事务安装,所以比 MyISAM 存储引擎占用更多的磁盘空间。

    如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询以外,还包括很多的更新、删除操作,那么 InnoDB 存储引擎是比较合适的选择。

    InnoDB 存储引擎除了可以有效地降低由于删除和更新导致的锁定,还可以确保事务的完整提交(Commit)和回滚(Rollback),对于类似计费系统或者财务系统等对数据准确性要求比较高的系统,InnoDB 都是合适的选择。

    3) MEMORY

    MEMORY 存储引擎将所有数据保存在 RAM 中,所以该存储引擎的数据访问速度快,但是安全上没有保障。

    MEMORY 对表的大小有限制,太大的表无法缓存在内存中。由于使用 MEMORY 存储引擎没有安全保障,所以要确保数据库异常终止后表中的数据可以恢复。

    如果应用中涉及数据比较少,且需要进行快速访问,则适合使用 MEMORY 存储引擎。

    MySQL修改数据表的存储引擎

    MySQL 中修改数据表的存储引擎的:ALTER TABLE <表名> ENGINE=<存储引擎名>;

    在修改存储引擎之前,先使用 SHOW CREATE TABLE 语句查看 student 表当前的存储引擎。

    以上这种方法适用于修改单个表的存储引擎,如果希望修改默认的存储引擎,在my.cnf配置文件的 [mysqld] 后面加入:

    default-storage-engine=存储引擎名称

    然后保存就可以了。

    总结思考

    1) 存储引擎很重要,数据库系统有个存储引擎,每张表也可以设置相应的存储引擎。

    2) 如何选择存储引擎是门科学,根据业务场景选择适合自己的。

    3) 上边只是简单入门,存储引擎的原理是什么呢?不同存储引擎的数据表在磁盘中是如何存储的?

    本篇文章转载自c语言中文网,仅仅学习,如有侵权,请告知删除。

    吐槽下:今天文章被锁定了,怀疑是有营销连接,比如上边转自哪个网站。哎,这个主要是声明下,以示尊重作者的劳动成果。简书设置的规则是好的,看执行效果了。

    相关文章

      网友评论

          本文标题:MySQL存储引擎

          本文链接:https://www.haomeiwen.com/subject/voyjmktx.html