• MySQL----常见的存储引擎


    存储引擎

    存储引擎就是数据库如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。

    MySQL存储引擎

    MySql数据库提供了多种存储引擎。用户可以根据不同的需求为数据表选择不同的存储引擎,用户也可以根据自己的需要编写自己的存储引擎。相比于Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。

    MySQL常见存储引擎

    • MyISAM:这种引擎是mysql最早提供的。这种引擎又可以分为静态MyISAM、动态MyISAM 和压缩MyISAM三种,不管是何种MyISAM表,目前它都不支持事务,行级锁和外键约束的功能。
      MyISAM的表在磁盘上存储成3个文件,其文件名都和表名相同,扩展名分别是:
      .frm(存储表定义)
      .MYD(MYData,存储数据)
      .MYI(MYIndex,存储索引)
    • InnoDB:InnoDB表类型可以看作是对MyISAM的进一步更新产品,它提供了事务、行级锁机制和外键约束的功能,也是目前MySQL默认的存储引擎。
      InnoDB中索引和数据存储在同一个文件,所以InnoDB的表在磁盘上有两个文件,其文件名都和表名相同,扩展名分别是:
      .frm(存储表的定义)
      .ibd(存储数据和索引)
    • Memory(heap):这种类型的数据表只存在于内存中。它使用散列索引,所以数据的存取速度非常快。因为是存在于内存中,所以这种类型常应用于临时表中。
      每个MEMORY表实际只对应一个磁盘文件,格式是
      .frm(表结构定义)。

    三者区别

    在这里插入图片描述

    表名解释:

    • 锁机制:表示数据库在并发请求访问的时候,多个事务在操作时,并发操作的粒度。
    • B-树索引和哈希索引:主要是加速SQL的查询速度,其中B-代表B树和B+数。
    • 外键:子表的字段依赖父表的主键,设置两张表的依赖关系。
    • 事务:多个SQL语句,保证它们共同执行的原子操作,要么成功,要么失败,不能只成功一部分,失败需要回滚事务。
    • 索引缓存和数据缓存:和MySQLServer的查询缓存相关,在没有对数据和索引做修改之前,重复查询可以不用进行磁盘!/0(数据库的性能提升,目的是为了减少磁盘I/0操作来提升数据库访问效率),读取上一次内存中查询的缓存就可以了。

    总结

    • InnoDB: 支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

    • MyISAM: 插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比较低,也可以使用。

    • MEMORY: 所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。

    查看MySQL存储引擎

    可以通过engine关键字在创建或修改数据库时指定所使用到引擎。

    show engines;
    

    在这里插入图片描述

    查看表的存储引擎

    show create table student\G
    

    在这里插入图片描述

    指定存储引擎

    在创建表的时候通过engine=...或type=...来指定所要使用的引擎。

    create table user(
    id int unsigned primary key not null auto_increment,
    name varchar(50) unique not null,
    age tinyint not null,
    sex enum('M','W') not null
    )engine=INNODB default  charset=utf8;
    
  • 相关阅读:
    「免费申请」基于Arm Cortex-M4的兆易创新GD32F427高性能开发板试用活动
    业务需求不用等!低代码开发平台随需响应、快速搭建
    【大数据报告】2022年空调产品研究报告
    【POJ No. 1182】 食物链
    Python-GIL锁(全局解释器锁)
    有偿找proteus51单片机仿真代做
    (中)苹果有开源,但又怎样呢?
    Linux驱动模型之Kobjects、kset和ktype
    菜鸟学习第一天
    Sentinel简介
  • 原文地址:https://blog.csdn.net/m0_73537205/article/details/139640833