首页 > 数据库 >mysql 常用存储引擎简介

mysql 常用存储引擎简介

时间:2024-04-08 16:15:07浏览次数:30  
标签:存储 简介 Memory 索引 引擎 InnoDB MyISAM mysql

InnoDB 引擎:具备外键支持功能的食物存储引擎

  • InnoDB 视为处理巨大数据量的最大性能设计的存储引擎。
  • mysql 从 3.23.34a 开始包含 InnoDB 引擎,大于等于5.5之后默认采用 InnoDB 引擎。
  • InnoDB 是 mysql 的默认事务引擎,它被设计用来处理大量短期(short-lived)事务,可以确保事务的完整提交(Commit)和回滚(Rollback)。
  • InnoDB 存储引擎在实际应用中拥有诸多优势,比如操作便利、提高了数据库的性能、维护成本低等。如果由于硬件或软件的原因导致服务器崩溃,那么在重启服务器后不需要进行额外操作,InnoDB 崩溃回复功能能自动将之前提交的内容定型,然后撤销没有提交的进程,重启之后继续从崩溃点开始执行。

MyISAM 引擎:主要的非事务处理存储引擎

  • MyISAM 提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等,但不支持事务、行级锁、外键,是5.5之前默认的存储引擎。
  • MyISAM 的优势是访问的速度快,主要用于对事务的完成新没有要求或以 SELECT、INSERT 为主的应用。
  • MyISAM 针对数据统计有额外的常数存储,因此针对 count(*) 查询效率特别高

InnoDB 引擎和 MyISAM 引擎如何选择?

  • 对比 MyISAM 引擎,InnoDB 处理写操作的效率差一些,并且会占用更多的磁盘空间来保存数据和索引。
  • MyISAM 只缓存索引,不缓存真实数据;InnoDB 不仅缓存索引还要缓存真是数据,对内存要求较高,且内存大小对性能有决定性影响。
  • 如果我们需要频繁的对表中的数据进行增删改查,则应该优先选择 InnoDB 引擎。
  • 如果没有非常特别的原因需要使用其他的存储引擎,则应该优先选择 InnoDB 引擎。

Archive 引擎:用于数据存档的存储引擎

  • archive 是归档的意思,仅仅支持插入和查询两种功能(被插入后不能修改)。
  • 在 mysql5.5 之后支持索引功能。
  • 拥有很好的压缩机制,使用 zlib 压缩库,在记录请求时进行实时压缩,经常被用来作为仓库使用。
  • 创建 ARCHIVE 表时,存储引擎会创建名称以表名开头的文件。数据文件的扩展名为 .ARZ
  • 根据英文的测试结果来看,同样数据量下,Archive 表比 MyISAM 表要小约 75%,比 InnoDB 表小约 83%。
  • Archive 引擎采用了行级锁。支持 AUTO_INCREMENT 列属性。AUTO_INCREMENT 列可以具有唯一索引或非唯一索引,在其他列上创建索引会导致错误。
  • Archive 表适合日志和数据采集(档案)类应用,适合存储大量独立的作为历史记录的数据,拥有很高的插入速度,但对查询的支持较差。

CSV 引擎:存储数据时,以逗号分隔各个数据项

  • CSV 引擎可以将普通 CSV 文件作为 mysql 的表来处理,但不支持索引。
  • CSV 引擎可以作为一种数据交换的机制,非常有用。
  • CSV 引擎存储的数据可以之间在操作系统里用文本编辑器或 excel 读取。
  • CSV 引擎对于数据的快速导入、导出是有明显优势的。
  • CSV 引擎的列不支持 null 值,在创建表时必须将所有列都声明为 not null

Memory 引擎:置于内存的表

  • Memory 采用的逻辑介质是内存,响应速度快,生命周期短,但是当 mysqld 守护进程崩溃的时候数据会丢失,因此选择 Memory 存储引擎时需要特别小心。另外要求存储的数据长度是数据长度不变的格式,像 Blob 和 Text 类型的数据不可用(长度不固定)
  • Memory 同事支持哈希(HASH)索引和 B+树索引
    • 哈希索引进行相等查询时比较快,但是对于范围查询则慢很多。
    • 默认使用哈希索引,其速度要比使用B型树(BTREE)索引快。
    • 如果希望使用B树索引,可以在创建索引时选择使用。
  • Memory 表比 MyISAM 表至少要快一个数量级。
  • Memory 表的大小时收到限制的,表大小取决于 max_rows 和 max_heap_table_size 两个参数的影响。其中 max_rows可以在创建表时指定;max_heap_table_size 大小默认是 16MB,可以按需进行扩大。
  • Memory 表的数据文件和索引文件分开存储(每个机遇 Memory 存储引擎的表实际对应一个磁盘文件,该文件名与表名相同,类型为 .frm 类型,该文件只存储表结构,而其数据文件都是存储在内存中的。这样有利于数据的快速处理,提高整个表的处理效率)
  • 应用场景:
    • 目标数据较小且非常频繁的访问,由于是在内存中存放数据,所以数据太大可能会造成内存溢出。
    • 如果数据是临时的,且必须立即可用,那么就可以放在内存中。
    • 存储在 Memory 表中的尽量是丢失了也没太大关系的数据。

标签:存储,简介,Memory,索引,引擎,InnoDB,MyISAM,mysql
From: https://www.cnblogs.com/ljzy666/p/18121494

相关文章

  • flask+mysql实现基础增删改查
    原文:https://blog.csdn.net/qq_29720657/article/details/124522898?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522171255890916800226584900%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=171255890916800226584900&biz_......
  • MySQL 底层数据结构 聚簇索引以及二级索引 Explain的使用
    数据结构我们知道MySQL的存储引擎Innodb默认底层是使用B+树的变种来存储数据的下面我们来复习一下B树存储+B树存储 +哈希存储的区别哈希存储,只能使用等值查询B树与B+树存储我们知道B+树实际上就是B树的变种那么为啥使用B+树而不是使用B树呢?我们知道效率的高低......
  • java计算机毕业设计书店展销小程序【附源码+远程部署+程序+mysql】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在数字化时代,实体书店面临着前所未有的挑战。随着电子书和在线购书的普及,传统书店的销售模式受到了巨大冲击。为了适应这一变化,许多书店开始探索新的营销......
  • java计算机毕业设计校园图书商城小程序【附源码+远程部署+程序+mysql】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在数字化时代的浪潮下,校园生活亦步入了智能化、便捷化的新篇章。传统的图书借阅和购买方式逐渐让位给更为高效的电子化服务。随着移动互联网技术的飞速发......
  • java计算机毕业设计驾校在线模拟考试小程序【附源码+远程部署+程序+mysql】
    本系统(程序+源码)带文档lw万字以上  文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在现代社会,驾驶汽车已成为人们生活中不可或缺的一部分。随着机动车数量的激增,道路安全问题也日益凸显,因此,掌握正确的驾驶知识和技能对于每位驾驶员来说都......
  • MySQL 主从配置-之-一主一从
    准备首先需要准备好,2台MySQL。用虚拟机或实体机器都可以。如果没有安装,可以查看安装教程:https://www.cnblogs.com/cqpanda/p/16365015.htmlhttps://www.cnblogs.com/cqpanda/p/18044804https://www.cnblogs.com/cqpanda/p/17299234.html测试环境:MySQL8.xLinuxOpenEuler2......
  • MySQL - varchar(N) 的N代表什么?怎么存储?
    varchar(N)的N代表什么?N代表“字符”varchar(32)表示:可以存储32个字符,包括中文和其他字符。跟中英文无关,也就是该字段可以存储32个中文,或者是32个英文,或者是32个中文和英文的混搭都行。但如果字符数超过32个的话就会报错。参考:什么是字符?什么是字节? 原文内容......
  • 探究MySQL8.0驱动的加载
    探究MySQL8.0驱动的加载大家在连接mysql的时候,启动项目,会警告你推荐使用com.mysql.cj.jdbc.Driver而不是com.mysql.jdbc.Driver那么这两者到底有什么区别呢本质区别:com.mysql.jdbc.Driver是mysql-connector-java5中的,需要手动加载驱动com.mysql.cj.jdbc.Driver是mysql......
  • MySQL学习路线一条龙
    引言在当前的IT行业,无论是校园招聘还是社会招聘,MySQL的重要性不言而喻。面试过程中,MySQL相关的问题经常出现,这不仅因为它是最流行的关系型数据库之一,而且在日常的软件开发中,MySQL的应用广泛,尤其是对于Java后端开发者来说,熟练掌握MySQL已成为他们技术能力评估的重要指标。因此,My......
  • Web API(五)之BOM操作&window对象&本地存储
    WebAPI(五)之BOM操作&window对象&本地存储js组成window对象定时器-延迟函数JS执行机制location对象navigator对象histroy对象本地存储localStoragesessionStorage(了解)localStorage存储复杂数据类型综合案例数组map方法数组join方法js组成JavaScript的组成ECMA......