什么是数据库存储引擎?存储引擎的概念及作用,玩转MySQL

4747 2616 2023-06-02

本文讲述了什么是数据库存储引擎?存储引擎的概念及作用,玩转MySQL

什么是数据库存储引擎?存储引擎的概念及作用,玩转MySQL

1.所谓存储引擎,就是用于存储数据的核心组件。

2.MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并目最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法,例如如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎,内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。 (MySQL入门教程: 数据存储简)

3.所以我们用SQL语句对数据进行操作,好像是我们的SQL语句对数据进行了直接操作,但是呢,本质上是通过存情引警来真正对数据进行操作。

4.存储引警把怎么对数据操作什么的都封装好了,SQL语句更像是一个接口!你不用管存引警内部到底是怎样实现的,你只要会用SQL语句就好了!

5.例如MySQL有SQL语句分析层和存储引警层,当分析出SQL语句需要执行什么操作后,调用存储引警的接口即可

6.LevelIDB就可以看成是一个存储引警!

7.要用什么存引警是由实际业务决定的,因为不同的业务会对数据组织方式啊、数据操作啊有不同的需求,这要靠不同的存储引警来实现。

一. 存储引擎介绍

1. 什么是存储引擎

数据库最核心的一点就是用来存储数据,数据存储就避免不了和磁盘打交道。那么数据以哪种方式进行存储,如何存储是存储的关键所在。所以存储引擎就相当于是数据存储的发动机,来驱动数据在磁盘层面进行存储。不同的存储引擎功能差别很大。各位小伙伴不要着急,下面我们逐一道来。

2. InnoDB存储引擎

特点:

  • InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。相比较MyISAM存储引擎,InnoDB写的处理效率差一点并且会占用更多的磁盘空间保留数据和索引。

  • 提供了对数据库事务ACID(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)的支持,实现了SQL标准的四种隔离级别。

  • 设计目标就是处理大容量的数据库系统,MySQL运行时InnoDB会在内存中建立缓冲池,用于缓冲数据和索引。

  • 执行“select count(*) from table”语句时需要扫描全表,因为使用innodb引擎的表不会保存表的具体行数,所以需要扫描整个表才能计算多少行。

  • InnoDB引擎是行锁,粒度更小,所以写操作不会锁定全表,在并发较高时,使用InnoDB会提升效率。即存在大量UPDATE/INSERT操作时,效率较高。

  • InnoDB清空数据量大的表时,是非常缓慢,这是因为InnoDB必须处理表中的每一行,根据InnoDB的事务设计原则,首先需要把“删除动作”写入“事务日志”,然后写入实际的表。所以,清空大表的时候,最好直接drop table然后重建。即InnoDB一行一行删除,不会重建表。

使用场景:

  • 经常UPDETE/INSERT的表,使用处理多并发的写请求。

  • 支持事务,必选InnoDB。

  • 可以从灾难中恢复(日志+事务回滚)。

  • 外键约束、列属性AUTO_INCREMENT支持。

3. MyISAM存储引擎

特点:

  • MyISAM不支持事务,不支持外键,SELECT/INSERT为主的应用可以使用该引擎。

  • 每个MyISAM在存储成3个文件,扩展名分别是:

  • frm:存储表定义(表结构等信息)。

    MYD(MYData),存储数据。

    MYI(MYIndex),存储索引。

  • 不同MyISAM表的索引文件和数据文件可以放置到不同的路径下。

  • MyISAM类型的表提供修复的工具,可以用CHECK TABLE语句来检查MyISAM表健康,并用REPAIR TABLE语句修复一个损坏的MyISAM表。

  • 在MySQL5.6以前,只有MyISAM支持Full-text全文索引。

使用场景:

  • 经常SELECT/INSERT的表,插入不频繁,查询非常频繁。

  • 不支持事务。

  • 做很多count 的计算。

4. MyISAM和Innodb区别

下面给各位小伙伴梳理下,敲黑板啦,重点来啦。

InnoDB和MyISAM是许多人在使用MySQL时最常用的两个存储引擎,这两个存储引擎各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理,而InnoDB类型支持。MyISAM类型强调的是性能,其执行速度比InnoDB类型更快,而InnoDB提供事务支持已经外部键等高级数据库功能。

具体实现的差别:

  • MyISAM是非事务安全型的,而InnoDB是事务安全型的。

  • MyISAM锁的粒度是表级,而InnoDB支持行级锁定。

  • MyISAM不支持外键,而InnoDB支持外键。

  • MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。

  • InnoDB表比MyISAM表更安全。

  • 上文就是小编为大家整理的什么是数据库存储引擎?存储引擎的概念及作用,玩转MySQL。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:高并发,你真的理解透彻了吗?高并发三种解决方法,详细教程说明
下一篇:金融级数据库的未来,目前国内外常用的金融数据库的主要优点是什么
相关文章