• MySQL存储引擎的选择


    MySQL存储引擎简介

    数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。简而言之,存储引擎就是指表的类型。数据库的存储引擎决定了表在计算机中的存储方式。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。
    在 MySQL 中,可以对每一个表使用不同的存储引擎。MySQL 5.7 支持的存储引擎有InnoDB、MyISAM、Memory、Merge、Archive、CSV、BLACKHOLE等,下面将简单介绍InnoDB、MyISAM和Memory三种常用的存储引擎。

    常用存储引擎
    MySQL InnoDB存储引擎

    MySQL 5.6及以后的版本,默认的存储引擎是InnoDB。
    InnoDB引擎支持事务(ACID),支持崩溃修复和自增列,支持行锁定和外键。
    其特点如下:

    1. 使用的锁粒度为行级锁,从而支持更高的并发。
    2. 给MySQL提供了具有提交、回滚和崩溃恢复能力的事务安全ACID
    3. InnoDB是为处理大数据量而做的最大性能设计,其CPU计算效率优于其他基于磁盘的关系型数据库引擎。
    4. 支持外键完整性约束,存储表中的数据时按主键顺序存放。
    5. 可以通过auto_increment设置自动增长列。
    MySQL MyISAM存储引擎

    在 MySQL 5.1 版本及之前的版本,MyISAM是默认的存储引擎。
    MyISAM引擎查询效率高,但是不支持事务,也不支持外键。使用此引擎创建数据库会生成3个文件,包括表定义文件frm、表数据文件myd和索引文件myi。
    其特点如下:

    1. 使用的锁粒度为表级锁,不支持行级锁,添加和修改时会进行锁表操作,因此写入效率较低。
    2. 索引会单独存放.myi文件,且它的索引是直接定位到OFFSET的,查询效率较高。
    3. 每个MyISAM表可创建的最大索引数是64,每个索引最大可含列数是16。
    4. BLOB和TEXT列可以被用于索引。
    5. VARCHAR和CHAR列可存储的内容多达64KB。
    MySQL Memory存储引擎

    Memory存储引擎将表中的数据存储到内存RAM中,为查询和引用其他表数据提供快速访问。每个Memory表会与一个磁盘文件frm相关联。
    其特点如下:

    1. 使用的锁粒度为表级锁,在查询量比较大时会出现性能瓶颈。
    2. 支持的数据类型有限制,不支持TEXT和BLOB类型。对于字符串类型的数据,VARCHAR会被自动存储为CHAR,造成空间浪费。
    3. 数据存放在内存中,默认使用HASH索引,查询速率快。
    4. 每个Memory表可创建的索引为32,每个索引可含16列。
    5. 对表的大小有限制,太大的表无法缓存在内存中。如果一个内部表很大,会被转化为磁盘表。
    如何选择存储引擎

    对于上述三种引擎,我们对其支持的特性总结如下表。

    -存储限制事务安全锁机制B树索引哈希索引全文索引数据缓存索引缓存空间使用内存使用写入速度支持外键
    InnoDB行锁××
    MyISAM×表锁××
    Memory×表锁×中等×

    结合上面的表格,有关如何选择运用这三种存储引擎,我们可以得出:

    • InnoDB存储引擎的优势是支持事务,能适应高并发。对于计算逻辑较多或者财务系统等对于数据准确性要求高、并发量较大,并且在并发条件下要求数据一致性的应用,InnoDB是合适的选择。
    • MyISAM存储引擎不支持事务和外键,优势是访问速度比较快。如果系统读取数据的情况多,更新数据的操作少,并且对于业务完整性、并发量要求不是很高的应用,考虑选择MyISAM存储引擎。
    • Memory存储引擎的数据访问速度快,但是由于数据在内存中, 一旦服务器故障数据很容易丢失。对于读写效率要求高,并且涉及数据较少或对数据丢失不敏感的应用,适合使用Memory。

    总的来说,不同的存储引擎适合不同的应用场景,我们需要选择合适的存储引擎来满足性能要求和实际需求。

    参考文章:MySQL数据类型和存储引擎

  • 相关阅读:
    MFC 窗体插入图片
    基于NPN公专网互通的智慧交通专网方案和关键技术
    云原生周报 | CNCF 可观测性白皮书中文版;百度智能云服务网格产品 CSM 发布
    基于蝙蝠算法的无人机航迹规划-附代码
    mysql进阶: mysql中的锁(全局锁/表锁/行锁/间隙锁/临键锁/共享锁/排他锁)
    【无标题】
    【计算机网络】互连网的路由选择协议概述
    Helium自动化框架 元素定位
    深入浅出PyTorch——主要模块和基础实战
    基于Matlab 实现螺旋线 轨迹曲线绘制
  • 原文地址:https://blog.csdn.net/u800820/article/details/128178222