• MySQL存储引擎



    数据库存储引擎是数据库底层软件组件,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能。使用不同的存储引擎,还可以获得特定的功能。现在许多不同的数据库管理系统都支持多种不同的数据引擎。Mysql的核心就是存储引擎。

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

    Mysql支持多种存储引擎,如InnoDB、MylSAM、Memory、Merge、Archive、CSV、Federated等等。

    一、MylSAM存储引擎

    1.1 MylSAM存储引擎的特点

    • Mysql 5.5之前默认使用MylSAM引擎,Mysql5.5之后默认使用InnoDB引擎;
    • MylSAM引擎读取数据较快,占用资源较少,不支持事务,不支持外键约束,但支持全文索引;
    • 读写相互阻塞,也就是说读数据时就不可写数据,学数据时就不可读数据;
    • MylSAM引擎只能缓存索引,而不能缓存数据;

    1.2 MylSAM使用场景

    • 不需要事务支持的业务;
    • 适用于读数据较多的业务;
    • 并发相对较低、数据修改相对较少的业务;
      -硬件资源较差的机器可以考虑使用MylSAM引擎;

    二、InnoDB存储引擎

    2.1 InnoDB存储引擎的特点

    • 事务型数据库的首选引擎,支持事务安全表,支持行锁定和外键,Mysql5.5.5版本之后,InnoDB作为默认存储引擎;
    • 具有提交、回滚和崩溃恢复能力的事务安全存储引擎,能处理巨大数据量,性能及效率高,完全支持外键完整性约束;
    • 具有非常高效的缓存特性,可以缓存索引也可缓存数据,对硬件要求较高;
    • 使用InnoDB时,将在Mysql数据目录下的创建一个名为ibdata1的10M大小的自动扩展数据文件,以及两个ib_logfile0和ib_logfile1的5M大小的日志文件;

    2.2 InnoDB使用场景

    • 需要数据支持的业务,高并发的业务;
    • 数据更新较为频繁的场景,比如BBS、SNS、微博等;
    • 数据一致性要求较高的业务,比如充值转账、银行卡转账;

    三、Memory存储引擎

    3.1 Memory存储引擎的特点

    • Memory存储引擎将表中的数据存储到内存中,为查询和引用其他表数据提供快速访问;
    • Memory存储引擎执行HASH和BTREE索引,不支持BLOB和TEXT列,支持AUTO_INCREMENT列和对可包含NULL值的列的索引;
    • 当不再需要Memory表的内容时,要释放被Memory表使用的内存,应该执行DELETE FROM或TRUNCATE TABLE,或者删除整个表;

    四、如何选择合适的存储引擎

    不同的业务需要选择不同的而存储引擎,可以参考以下几点进行选择:

    • 如果要提供提交、回滚和崩溃恢复能力的事务安全能力,并要求实现并发控制,InnoDB是个很好的选择;
    • 如果数据表主要用来插入和查询记录,则MylSAM引擎能提供较高的处理效率;
    • 如果只是临时存放数据,数据量不大,并且不需要较高的安全性,可以选择将数据保存在内存中的Memory引擎,使用该引擎作为临时表,存放查询的中间结果;
    • 如果只有INSERT和SELECT操作,可以选择Archive引擎,支持高并发的插入操作,如记录日志信息,可以使用Archive引擎;

    主要的三个数据引擎所支持的功能如下表:

    功能 MylSAM Memory InnoDB
    存储限制 256TB RAM 64TB
    支持事务 NO NO YES
    支持全文索引 YES NO NO
    支持数据索引 YES YES YES
    支持哈希缓存 NO YES NO
    支持数据缓存 NO N/A YES
    支持外键 NO NO YES

    五、查看及修改表的默认存储引擎

    show enginesG;         #查看数据库支持的索引
    show variables like 'default_storage_engine';       #查看数据库默认的存储引擎
    show variables like '%engine%';        #查看全部的默认引擎
    show create table t1G;            #查看t1表默认的引擎
    alter table t1 engine=myisam;      #修改t1表的默认引擎为MylSAM
    
    *************** 当你发现自己的才华撑不起野心时,就请安静下来学习吧!***************
  • 相关阅读:
    MPTCP iperf 发包方式
    Java 中的覆盖@Override注解 写与不写的一点点理解
    servlet 方法有哪些
    java 获取HTTP 头部信息
    七种访问方式(get post及上传文件)
    Enumeration接口的用法
    HTTP头部详解及使用Java套接字处理HTTP请求
    以debug模式启动tomcat服务器
    第一个servlet 使用out输出html文档
    基于Servlet3.0的文件上传
  • 原文地址:https://www.cnblogs.com/lvzhenjiang/p/14197164.html
Copyright © 2020-2023  润新知