性能测试告诉你 mysql 数据库存储引擎该如何选?

简介

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

查看引擎

可以使用 SHOW ENGINES; 查看当前数据库支持的所有存储引擎

 

Engine列,代表存储引擎类型;Support列代表对应存储引擎是否能用,YES表示可以用,NO表示不能用,DEFAULT表示当前默认的存储引擎

myql提供了多种不同存储引擎,也可以在一个数据库中,针对不同的要求,使用不同的存储引擎。

SHOW VARIABLES LIKE '%storage_engine%'; 可以查看当前数据库默认的存储引擎

 

引擎介绍

  • InnoDB存储引擎 InnoDB是事务型数据库首选引擎,支持事务安全表(ACID),其它存储引擎都是非事务安全表,支持行锁定外键,MySQL5.5以后默认使用InnoDB存储引擎。 InnoDB为MySQL提供了具有提交回滚崩溃恢复能力的事务安全(ACID兼容)存储引擎。 InnoDB表,自动增长列必须是索引,如果是组合索引,也必须是组合索引的第一列。 InnoDB设计的目标是处理大容量的数据库系统,这种引擎的表会在内存中建立缓冲池,用来缓冲数据和索引。 MySQL外键的存储引擎只有InnoDB 适用场景: 经常更新的表,多并发的表 大数据量 支持事务 容灾恢复 外键约束
  • MyISAM存储引擎 MyISAM基于ISAM存储引擎,并对其进行扩展。它是在Web、数据仓储和其他应用环境下最常使用的存储引擎之一。MyISAM拥有较高的插入、查询速度,但不支持事务,不支持外键。 MYD文件是存MyISAM的数据文件;MYI文件是存MyISAM的索引文件;frm文件是存MyISAM的表结构 MyISAM的表支持3种不同的存储格式:静态(固定长度)表,动态表,压缩表 静态表:表中的字段都是非变长字段,这样每个记录都是固定长度的,优点存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多 动态表:记录不是固定长度的,这样存储的优点是占用的空间相对较少;缺点:频繁的更新、删除数据容易产生碎片,需要定期执行OPTIMIZE TABLE或者myisamchk-r命令来改善性能 压缩表:因为每个记录是被单独压缩的,所以只有非常小的访问开支 适用场景 不支持事务、外键的设计 查询速度很快,极度强调操作,而且不占用大量的内存和存储资源 整表加锁
  • MEMORY存储引擎 Memory存储引擎使用存在于内存中的内容来创建表,所以也有叫HEAP堆内存引擎。每个memory表只实际对应一个磁盘文件,格式是.frm。memory类型的表访问非常的快,因为它的数据是放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失掉。 MEMORY存储引擎的表可以选择使用BTREE索引或者HASH索引 Hash索引优点:Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,查询效率要远高于 B-Tree 索引;但是,hash算法是基于等值计算的,所以模糊查询,hash索引无效,不支持 适用场景: Memory类型的存储引擎主要用于内容变化低、不频繁的,如代码表 目标数据比较小,而且非常频繁的进行访问的 数据是临时的,而且必须立即可用得到的

对存储引擎为memory的表进行更新操作要谨慎,因为数据并没有实际写入到磁盘中

  • MERGE \ MRG-MYISAM存储引擎 Merge存储引擎是一组MyISAM表的组合,这些MyISAM表必须结构完全相同,merge表本身并没有数据,对merge类型的表可以进行查询,更新,删除操作,这些操作实际上是对内部的MyISAM表进行的 MRG-MYISAM是一种水平分表方式存储引擎,把多个myisam的表聚合起来,但是他内部没有数据,真正的数据依然是myisam引擎。 使用场景: 水平分表
  • BLACKHOLE黑洞引擎 任何写入此引擎的数据均会被丢弃,不做实际存储,select结果永远为空 使用场景 复制数据到备份数据库 验证dump file命令的正确性 检测binlog功能所需的额外负载 充当日志服务器

存储引擎对比

  • MyISAM引擎不支持事务等高级处理,Innodb支持,提供事务支持、外键等高级功能 Innodb引擎是行锁,但是也不是绝对的,当不确定范围时,Innodb还是会锁表的
  • MyISAM引擎强调的是性能,读性能非常好,比Innodb速度要快。 mysql数据库默认是开启事务的,Innodb引擎表,要在提交大量数据时,可以先关闭自动提交事务set autocommit=0;待数据执行完后,再开启事务自动提交set autocommit=1; 以此来提高速度,不然,大数据提交非常慢
  • 对于auto_increment类型的字段, Innodb中必须包含只有该字段的索引,而MyISAM表中,可以和其他字段一起建立联合索引。
  • MyISAM支持全文索引(fulltext)、压缩引擎,Innodb不支持
  • MyISAM引擎表索引和数据分开存在两个不同格式文件中,并且索引是压缩的;而Innodb表的索引和数据是捆绑在一起的,没有压缩,所以,同等数据量,Innodb引擎表占用的存储空间更大。
  • Innodb表数据备份,要先到处sql备份,load table from master操作对Innodb不起作用。要解决这个问题,需要先把表的引擎Innodb改成MyISAM,导入数据后,再改成Innodb。但要注意,外键只有Innodb支持,MyISAM不支持。


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/52592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Wireshark数据抓包分析之互联网控制报文协议_ICMP

一、实验目的: 通过使用wireshark抓取的ICMP数据包对这个ICMP控制报文进行分析 二、预备知识: 1.ICMP协议概述:ICMP是Internet Control Message Protocol的缩写,即互联网控制报文协议。它是TCP/IP协议族的一个子协议,用于IP主机、…

HDLBits-Verilog学习记录 | Verilog Language-Vectors

文章目录 11.vectors | vector012.vectors in more detail | vector113.Vector part select | Vector214.Bitwise operators | Vectorgates15.Four-input gates | Gates416.Vector concatenation operator | Vector317.Vector reversal 1 | Vectorr18. Replication operator | …

SD-WebUI和ComfyUI的局域网访问设置!

如何通过局域网访问AI绘画软件,这是星球成员提的一个问题,而且两个软件都问到了,我也回答过了。现在把内容整理一下发出来,大家可能用得着。 SD-WebUI和ComfyUI这两个AI绘画工具都是通过浏览器来使用,但是默认情况下并…

Request对象和response对象

一、概念 request对象和response对象是通过Servlet容器(如Tomcat)自动创建并传递给Servlet的。 Servlet容器负责接收客户端的请求,并将请求信息封装到request对象中,然后将request对象传 递给相应的Servlet进行处理。类似地&…

低代码赋能| 智慧园区项目开发痛点及解决方案

智慧园区是一个综合体,集技术开发、产业发展和学术研究于一体。作为未来智慧城市建设的核心,智慧园区充当着“产业大脑”和“指挥中心”的角色。它通过整合园区内的制造资源和第三方服务能力,实现园区各组成部分的协调运作、良性循环和相互促…

PHP文字转图片功能把文字描边功能

要实现把文字描边的功能&#xff0c;可以使用PHP的GD库来进行操作。GD库是一个用于生成图像的扩展库&#xff0c;可以在PHP中用来处理图像。 以下是一个示例代码&#xff0c;用于将文字描边并生成图片&#xff1a; php <?php // 创建画布 $image imagecreatetruecolor(4…

redis 基础篇(redis 理解)

目录 redis 特性介绍 redis 的一些特性&#xff08;优点&#xff09; 1. 在内存中存储数据 2. 可编程的 3. 可扩展 4. 持久化 5. 支持集群 6. 高可用 redis 的应用场景 数据库 作缓存 会话存储 作消息队列 redis 不适合做的事情 redis 介绍 redis 客户端形态 命…

UBI管理开销

什么是管理开销呢&#xff1f;为了管理Nand的空间&#xff0c;实现磨损平衡、坏块管理等等功能&#xff0c;必须占用一部分空间来存储关键数据&#xff0c;就好像文件系统的元数据。管理占用的空间是不会呈现给用户空间使用的&#xff0c;这空间即为管理的开销。 对Nand来说&a…

【数学建模】清风数模中正课4 拟合算法

拟合算法 在插值算法中&#xff0c;我们得到的曲线一定是要经过所有的函数点的&#xff1b;而用拟合所得到的曲线则不一样&#xff0c;拟合问题中&#xff0c;不需要得到的曲线一定经过给定的点。 拟合的目的是寻求一个函数曲线&#xff0c;使得该曲线在某种准则下与所有的数…

TCP可靠性机制

确认号/序列号/ACK TCP帮助确保数据的准确传递。为了做到这一点&#xff0c;其使用了一些特殊的标记和信息&#xff0c;其中包括序号、确认号和ACK字段。 其中&#xff0c;它将每个字节的数据都进行了编号. 即为序列号. 序列号&#xff1a;就像给书中的每一页都编了号码一样&a…

EMR电子病历系统 SaaS电子病历编辑器源码 电子病历模板编辑器

EMR&#xff08;Electronic Medical Record&#xff09;指的是电子病历。它是一种基于电子文档的个人医疗记录&#xff0c;可以包括病人的病史、诊断、治疗方案、药物处方、检查报告和护理计划等信息。EMR采用计算机化的方式来存储、管理和共享这些信息&#xff0c;以便医生和医…

RISC-V中国峰会 | 256核服务器高调亮相,谁与争锋?

8月23日&#xff0c;第三届RISC-V中国峰会&#xff08;RISC-V Summit China 2023&#xff09;在北京香格里拉饭店正式开幕&#xff0c;来自世界各地的行业精英汇聚一堂&#xff0c;为RISC-V生态系统建言献策&#xff0c;凝心聚力&#xff01; 中国工程院院士倪光南、RISC-V国际…

高等数学(上)【基础学科、极限部分】

学习【高等数学&#xff08;上&#xff09;】6小时从0基础直追满绩&#xff01;_哔哩哔哩_bilibili 高数基础 高等数学无非分为三个部分&#xff1a;极限、导数&#xff08;微分&#xff09;和积分——构成了微积分 高等数学学的就是 微积分&#xff0c;整体其实只是一个思想 …

K8S cluster with multi-masters on Azure VM

拓扑参考&#xff1a; 在 Azure VM 实例上部署 KubeSphere 基础模板 需要修改 IP 地址和 VM Image的可以在模板中修改。 {"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#","contentVersion": &q…

(GPT、GEE)遥感云大数据、洪涝灾害监测、红树林遥感制图、河道轮廓监测、洪涝灾害监测、GRACE重力卫星、源遥感影像

近年来遥感技术得到了突飞猛进的发展&#xff0c;航天、航空、临近空间等多遥感平台不断增加&#xff0c;数据的空间、时间、光谱分辨率不断提高&#xff0c;数据量猛增&#xff0c;遥感数据已经越来越具有大数据特征。遥感大数据的出现为相关研究提供了前所未有的机遇&#xf…

达梦数据库分区表介绍

概述 本文将对达梦数据库分区表概念、创建、维护进行介绍。 1.分区表概念 1.1 分区表使用场景 近几年&#xff0c;随着移动支付快速发展&#xff0c;银行交易系统中【移动小微支付场景】使用越来越多&#xff0c;系统中流水账单表数据量巨大&#xff0c;往往上TB。 为了提高…

Embedding 向量生成GPT数据使用相关

如果使用python3.6的版本&#xff0c;使用pycharm创建工程&#xff0c;那么默认会使用 docx包&#xff0c;这样运行程序会爆异常&#xff0c;突然想起以前请教的一个大神&#xff0c;想当 初&#xff0c;这个问题困扰了我 两天时间&#xff0c;在此记录一下&#xff1a; pytho…

Linux上实现分片压缩及解压分片zip压缩包 - 及zip、unzip命令详解

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

AI夏令营第三期 - 基于论文摘要的文本分类与关键词抽取挑战赛笔记

赛题&#xff1a;基于论文摘要的文本分类与关键词抽取 背景&#xff1a;高效的从海量医学文献中提取疾病诊断和治疗关键信息 任务&#xff1a;通过论文摘要判断论文是否为医学文献 样例 数据集&#xff1a;csv文件&#xff0c;字段&#xff1a;标题、作者、摘要、关键词 评价指…

Bootstrap的类container与类container-fluid有什么区别?

阅读本文前建议先阅读下面两篇博文&#xff1a; 怎么样通过Bootstrap已经编译好(压缩好)的源码去查看符合阅读习惯的源码【通过Source Map(源映射)文件实现】 在CSS中&#xff0c;盒模型中的padding、border、margin是什么意思&#xff1f; 以下是Bootstrap的类 container 的盒…