【数据库】MySql基本引擎InnoDB、MyISAM、MEMORY、CSV、ARCHIVE(详细说明)

在这里插入图片描述

文章目录

  • 如何选择引擎
  • 存储引擎的作用
  • 修改引擎方式
  • InnoDB
  • MyISAM
  • MEMORY
  • CSV
  • ARCHIVE
  • 总结

更多相关内容可查看

如何选择引擎

合理选择数据库存储引擎对于系统的性能、数据完整性、维护成本等方面都具有重要影响

  • 高并发的事务性应用:选择 InnoDB。
  • 以读操作为主的应用:选择 MyISAM。
  • 临时数据处理:选择 MEMORY。
  • 数据交换和简易存储:选择 CSV。
  • 大量归档数据:选择 ARCHIVE。

存储引擎的作用

在数据库管理系统(DBMS)中,存储引擎(Storage Engine)扮演着至关重要的角色。它是处理数据存储、检索、管理和维护的基础组件。存储引擎的作用包括以下几个方面:

数据存储和检索

  • 存储方式:存储引擎决定了数据如何在物理存储介质上布局。例如,InnoDB 使用表空间管理数据,而 MyISAM 使用独立的文件存储每个表的数据。
  • 索引支持:存储引擎定义了索引的类型和管理方式。例如,InnoDB 支持聚簇索引和非聚簇索引,而 MyISAM 支持全文索引。

事务管理

  • 事务支持:存储引擎负责处理事务的开始、提交和回滚操作。事务是对数据库的一组操作,要么全部成功,要么全部失败。只有支持事务的引擎(如 InnoDB)能够确保事务的 ACID 特性(原子性、一致性、隔离性、持久性)。
  • 隔离级别:存储引擎还支持不同的事务隔离级别(如 READ COMMITTED、REPEATABLE READ、SERIALIZABLE),影响事务之间的可见性和数据一致性。

锁机制

  • 锁类型:存储引擎决定了使用的锁机制,如行级锁、表级锁、页级锁等。InnoDB 支持行级锁,适合高并发的环境,而 MyISAM 使用表级锁,可能会在高并发写入时出现性能瓶颈。
  • 锁管理:存储引擎负责管理锁的获取、释放和冲突解决,影响数据库操作的并发性能。

数据完整性

  • 约束支持:存储引擎定义了如何实现数据完整性约束,如外键约束、唯一约束等。InnoDB 支持外键约束,确保数据的关联完整性,而 MyISAM 不支持外键约束。
  • 崩溃恢复:存储引擎决定了在系统崩溃或故障后的数据恢复机制。例如,InnoDB 提供了崩溃恢复功能,而 MyISAM 可能需要额外的恢复操作。

性能优化

  • 查询优化:不同存储引擎优化查询的方式不同。例如,InnoDB 使用聚簇索引来优化主键的查询性能,而 MyISAM 可能在全表扫描和简单查询中表现更好。
  • 存储格式:存储引擎可能支持数据压缩和优化,以节省存储空间和提高访问速度。例如,MyISAM 支持表压缩,而 InnoDB 提供了多种行格式来优化存储。

数据备份和恢复

  • 备份工具:存储引擎影响可用的备份和恢复工具。例如,InnoDB 支持 mysqldumpinnobackupex 等备份工具,而 MyISAM 主要依赖于 myisamchkmydumper 等工具。
  • 恢复机制:存储引擎决定了数据恢复的机制,如 InnoDB 的崩溃恢复和事务日志功能。

特定功能支持

  • 全文索引:MyISAM 支持全文索引,适用于全文搜索应用,而 InnoDB 从 MySQL 5.6 版本开始也支持全文索引。
  • 数据压缩:ARCHIVE 引擎自动压缩数据,适用于存储大量的归档数据,减少存储空间的使用。

修改引擎方式

方式有很多,例如

  • 可以修改配置文件my.ini,在[mysqld]后面添加default-storage-engine=InnoDB,重启服务
  • 建表的时候指定
create table mytbl(   id int primary key,   name varchar(50)   
)type=MyISAM;
  • 建表后修改
alter table table_name type = InnoDB;

查看修改后成功

show table status from table_name; 

InnoDB

有兴趣可以看一些官网资料:https://mysql.net.cn/doc/refman/8.0/en/innodb-benefits.html

InnoDB是当前市面使用最广泛的一种引擎,也是一个默认的存储引擎

概述
InnoDB 是 MySQL 的默认存储引擎,以其支持事务处理、行级锁定和外键约束而闻名。它适用于需要高可靠性和高并发的场景。

特点

  • 事务支持:支持 ACID(原子性、一致性、隔离性、持久性)事务。
  • 行级锁定:减少了锁争用,提高了并发性能。
  • 外键支持:能够维护数据的完整性。
  • 崩溃恢复:通过重做日志和撤销日志,能够在系统崩溃后恢复数据。
  • 自适应哈希索引:提升查询性能。

实战案例

  • 实战案例 1: 电商平台 如京东或淘宝,使用 InnoDB 来管理用户订单、支付和库存。这些操作需要事务支持和高并发处理能力,InnoDB 的行级锁定和事务机制能够有效处理这些需求。
  • 实战案例 2: 银行系统 应用场景:账户交易处理 描述:银行应用中,账户余额的增减需要事务处理,以防止数据丢失或不一致。InnoDB 的行级锁和事务支持确保了操作的原子性和数据的完整性。
  • 实战案例 3: 社交媒体平台 应用场景:用户帖子和评论 描述:社交平台如 Facebook 使用 InnoDB 存储用户帖子和评论。InnoDB 支持高并发的读写操作,适合处理大量的用户互动和实时更新。

MyISAM

概述
MyISAM 是 MySQL 的早期默认存储引擎,以其简单和高效的性能而著称,但不支持事务处理和外键约束。

特点

  • 表级锁定:适合读操作远多于写操作的场景。
  • 全文索引:支持全文搜索,适合需要文本检索的应用。
  • 压缩表:支持表压缩以节省存储空间。
  • 事务不支持:不支持 ACID 事务,不能提供数据一致性保证。

实战案例

  • 实战案例 1: 网站访问日志 应用场景:日志记录和分析 描述:网站访问日志数据主要用于分析和查询,MyISAM 的全文索引功能可以高效地搜索特定的访问记录和日志内容。

  • 实战案例 2: 内容管理系统 应用场景:文章和评论管理 描述:在一个内容管理系统(如博客平台)中,MyISAM 适合用于存储大量的文章和评论。其简单的表结构和良好的读性能非常适合这种主要以读为主的场景。

  • 实战案例 3: 论坛系统 应用场景:帖子和回复 描述:论坛系统中,MyISAM 用于存储论坛帖子和回复。尽管写操作较少,但由于其简单的锁机制,MyISAM 能够提供较快的读取速度,适合低并发的写操作环境。

MEMORY

概述
MEMORY 引擎(也称为 HEAP 引擎)将所有数据存储在内存中,适用于需要快速访问数据的场景,但数据在服务器重启后会丢失。

特点

  • 高速存取:由于数据存储在内存中,读写速度非常快。
  • 临时存储:适合用于临时数据存储,如会话数据和临时表。
  • 数据丢失:服务器重启后数据会丢失,适用于不需要持久性的场景。

实战案例

  • 实战案例 1: 实时会话存储 应用场景:用户会话数据 描述:在线应用如即时聊天系统使用 MEMORY 引擎存储会话数据,以确保快速访问和处理。由于会话数据是临时的,不需要持久化存储。
  • 实战案例 2: 临时数据计算 应用场景:中间计算结果 描述:在数据处理过程中,临时计算结果(如数据聚合)存储在 MEMORY 表中,可以加速计算和分析过程,因为数据存储在内存中,读写速度极快。
  • 实战案例 3: 缓存系统 应用场景:缓存热点数据 描述:用于缓存热点数据(如热门商品信息)可以提高访问速度,减少数据库负担。MEMORY 引擎通过高速的内存存储实现快速数据访问。

CSV

概述
CSV 引擎将数据存储在逗号分隔值(CSV)格式的文本文件中,主要用于导出和导入数据,不适合高性能的读写操作。

特点

  • 简单格式:数据以 CSV 格式存储,可以方便地与其他应用程序进行数据交换。
  • 不支持索引:由于数据是以文本文件存储,没有索引,查询性能较差。
  • 只读性:对于大数据量的操作效率不高。

实战案例

  • 实战案例 1: 数据迁移 应用场景:从旧系统迁移数据 描述:将旧系统中的数据导出为 CSV 文件,然后导入到新系统中。CSV 格式简单易用,方便在不同系统之间进行数据迁移。
  • 实战案例 2: 数据备份 应用场景:生成数据备份文件 描述:使用 CSV 引擎将数据导出为 CSV 文件,以便进行数据备份或创建数据的快照。适合处理数据导出需求,但不适合频繁操作。
  • 实战案例 3: 简单数据分析 应用场景:数据分析和共享 描述:用于从数据库中导出简单的数据集(如销售数据),以便在 Excel 或其他数据分析工具中进行进一步分析。

ARCHIVE

概述
ARCHIVE 引擎用于存储大量的归档数据,主要目的是为了节省空间。它适用于仅需要进行数据存储和偶尔读取的场景。

特点

  • 数据压缩:存储的数据经过压缩,能够节省磁盘空间。
  • 不支持索引:无法进行高效的检索,主要用于存储大量的归档数据。
  • 写性能优越:适合插入大量数据,但不适合频繁更新或删除数据。

实战案例

  • 实战案例 1: 日志归档 应用场景:存储历史日志数据 描述:日志管理系统将历史日志存储在 ARCHIVE 表中,以节省空间。由于这些日志不常修改,ARCHIVE 的压缩功能非常适合长期存储。
  • 实战案例 2: 归档处理 应用场景:归档过期数据 描述:在数据仓库中,使用 ARCHIVE 引擎存储长期不需要频繁访问的数据,如旧的业务记录,以节省存储空间并降低存储成本。
  • 实战案例 3: 备份数据 应用场景:数据备份存储 描述:备份过期或不活跃的数据。ARCHIVE 引擎的压缩特性能够有效节省存储空间,适用于大规模的数据备份任务。

总结

说句实话一般用不上,所以大体有个概念就行,基本上用innoDB较多,更何况目前形势华为数据库,Oracle等等都已经在企业流行

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

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

相关文章

【python】Python中小巧的异步web框架Sanic快速上手实战

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

【SQL】连续出现的数字

目录 题目 分析 代码 题目 表:Logs ---------------------- | Column Name | Type | ---------------------- | id | int | | num | varchar | ---------------------- 在 SQL 中,id 是该表的主键。 id 是一个自增列。找出…

Langchain4J从AI Agent开始

前言 AI Agent是智能体的概念,以大模型为核心,集决策能力、记忆能力、工具调用能力为一体的智能体。 langchain框架是python写的,它是一个大语言模型智能框架,Langchain4J是langchain框架对应的java语言编写的。 langchain框架中…

Linux | vim编辑器的使用技巧:自动缩进、补全括号、光标定位、批量注释

文章目录 vim编辑器的使用技巧1、配置自动缩进、自动显示行号、自动补全括号2、光标定位3、批量注释、解除注释批量注释:批量解除注释 vim编辑器的使用技巧 1、配置自动缩进、自动显示行号、自动补全括号 打开vimrc配置文件 vim ~/.vimrc //如果没有编辑权限的&…

140页满分PPT | 一套完整的数字化转型+蓝图路线图规划项目案例

这份PPT文档是一个全面而深入的IT蓝图规划和实施路线图,为某大型制造企业的信息化建设和发展提供了详尽的框架和指导。 1. 业务战略与IT战略对接 在数字化转型过程中,应从企业的业务战略出发,强调了IT战略规划的重要性,指出IT战…

【计算机三级-数据库技术】数据库及数据库对象

数据库及数据库对象 第一节 创建及维护数据库 一、SQL server数据库分类 1)系统数据库(系统自动创建): master、msdb、tempdb、model、resource 2)用户数据库 保存与用户业务有关的数据。 二、SQL server数据库组成…

一建证书哪个专业好?一建各专业含金量排行一览表

2024年一建考试将于9月7日、8日举行,距离现在已经不足五个月,今年一建考试大纲全新修订,教材也随之大改,加之一建考试难度较大,相信考生友友们都已经开启备考了吧? 近期也有小伙伴在跟小佑提问&#xff0c…

Is it possible to modify OpenAI environments?

题意:“是否可以修改 OpenAI 环境?” 问题背景: There are some things that I would like to modify in the OpenAI environments. If we use the Cartpole example then we can edit things that are in the class init function but with…

[数据集][目标检测]agvs仓储机器人检测数据集VOC+YOLO格式967张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):967 标注数量(xml文件个数):967 标注数量(txt文件个数):967 标注类别…

想要畅玩《黑神话:悟空》?上赞奇云工作站,仅需3步,直面天命!

全世界畅玩《黑神话:悟空》的时候 一批受害者们也迎来了属于他们的“九九八十一难” 这个时候,天命人才意识到 原来世界上最远的距离,不是天涯海角 而是《黑神话:悟空》就在我面前,旁边的电脑却带不动 作为被广泛视…

超维机器人在工业与能源领域的具身智能探索和应用

具身智能(Embodied AI)是指机器人能够通过其物理形态与环境的交互,进行感知、学习、决策和执行,从而完成复杂任务的能力。具身智能强调机器人不仅要具备感知环境和分析数据的能力,还要能够通过身体的行为和物理互动来适…

Cesium 视频纹理

Cesium 视频纹理 话不多说&#xff0c;直接上代码 <video id"video_dom"><source src"./video.mp4" type"video/mp4" /></video>var videoElement document.getElementById("video_dom");videoElement.play();vie…

145. 二叉树的后序遍历(递归法)

目录 一&#xff1a;题目&#xff1a; 二&#xff1a;代码&#xff1a; 三&#xff1a;结果&#xff1a; 一&#xff1a;题目&#xff1a; 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 二&#xff1a;代码&#xff1a; /*** Definition for a bin…

多进程和多线程基础概念LINUX

进程和程序的区别 程序是静态的&#xff0c;它是保存在磁盘上的指令的有序集合&#xff0c;没有任何执行的概念进程是一个动态的概念&#xff0c;它是程序执行的过程&#xff0c;包括了动态创建、调度和销毁的整个过程 并行&#xff1a;在 cpu 多核的支持下&#xff0c;实现物…

Linux--网络层 IP协议

目录 0.往期文章 1.IP基本概念 2. IP协议报头格式 3.网段划分 两种网段划分的方式 为什么要进行网段划分 4.特殊的IP 地址 5.IP 地址的数量限制 6.私有 IP 地址和公网 IP 地址*** NAT技术 认识公网 运营商扮演的角色 7.路由 8.16位标识&#xff0c;3为标志和13位…

SpringCloud之一注册中心(Eureka)

一、Eureka概述 Eureka是Netflix公司开源的一个服务注册与发现的中间组件。 在微服务架构系统之中&#xff0c;我们经常提三个角色&#xff1a;注册中心 (Register)、服务提供者(Provider)、服务消费者(Consumer)。 1.注册中心&#xff1a;服务提供者可以将服务发布到注册中心…

ClkLog常见问题-埋点集成篇Sec. 1

本篇主要解答ClkLog使用过程中【埋点集成】阶段的常见问题。 1.【指标项数据统计】 问&#xff1a;数据概览无法看到数据。 答&#xff1a;如果数据概览所有指标项都没有数据&#xff0c;则需要先检查埋点数据是否接收成功&#xff1b;如果只是会话相关数据&#xff08;访问次数…

《基于 Spark 的平替药品智能推荐方法》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; CSDN入驻不久&#xff0c;希望大家多多支持&#xff0c;后续会继续提升文章质量&#xff0c;绝不滥竽充数…

大型物流运输无人机技术详解

随着科技的不断进步和电子商务的蓬勃发展&#xff0c;大型物流运输无人机作为未来物流体系的重要组成部分&#xff0c;正逐步从概念走向实际应用。这类无人机以其超大的载重能力、高效的运输效率和广泛的覆盖范围&#xff0c;为解决远距离、大批量货物运输难题提供了创新方案。…

电机知识汇总

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言1、电机发展史2、电机入门①、书籍②、视频③、开发文档④、博客 3、什么是步进电机4、基本结构和工作原理4、负载…