mysql的各种存储引擎

news2024/10/19 17:40:31

文章目录

  • 前言
  • 1. InnoDB
    • 特点
  • 2. MyISAM
    • 特点
    • innodb与myisam引擎之间的区别
  • 3. MEMORY
    • 特点
  • 4. ARCHIVE
    • 特点
  • 5. NDBCluster
    • 特点
  • 6. FEDERATED
    • 特点
  • 7. CSV
    • 特点
  • 总结


前言

MySQL 支持多种存储引擎,每种引擎都有其独特的功能和适用场景。存储引擎是指数据库管理系统用来存储、检索和索引数据的方法。不同的存储引擎提供了不同的特性,例如事务支持、并发控制、锁定粒度等。以下是 MySQL 中常用的几种存储引擎及其特点:

在这里插入图片描述

1. InnoDB

InnoDB 是 MySQL 默认的存储引擎,支持事务(ACID)、外键约束、行级锁定和 MVCC(多版本并发控制)。InnoDB 被广泛应用于需要高可靠性的应用程序中,尤其是在需要事务支持的情况下。

特点

  1. 支持事务处理(ACID)。
  • 原子性(Atomicity):事务作为一个整体被执行,包含在事务中的所有操作要么都完成,要么都不完成。
  • 一致性(Consistency):事务开始前和结束后,数据库都必须处于一致性状态。
  • 隔离性(Isolation):并发执行的事务彼此隔离,一个事务的执行不应影响另一个事务。
  • 持久性(Durability):一旦事务提交,它对数据库的影响将是永久的,即使系统发生故障也是如此
  1. 支持外键约束。
    InnoDB 支持外键约束,这有助于维护数据库的一致性和完整性。通过定义外键,可以确保引用完整性,即在一个表中引用的记录在另一个表中确实存在。
  2. 行级锁定,有利于高并发应用。
    InnoDB 使用行级锁定机制,这允许在并发环境中提高数据的并发访问能力。行级锁只锁定实际涉及的行,而不会锁定整个表,从而减少了锁争用的情况。
  3. MVCC(多版本并发控制)
    InnoDB 使用多版本并发控制来支持读取未提交的事务数据而不干扰正在进行的事务。这意味着多个事务可以同时读取同一份数据的不同版本,而不会互相阻塞。
  4. 索引
    InnoDB 使用 B+ 树作为索引结构,支持唯一索引和非唯一索引。此外,InnoDB 还支持空间索引(用于地理信息系统)。
  5. BufferPool缓冲池
    InnoDB 使用缓冲池来缓存表和索引的数据,以减少磁盘 I/O 操作,提高查询性能。

2. MyISAM

MyISAM 是 MySQL 较早使用的默认存储引擎,不支持事务处理,但是提供了高速的存储和检索功能。MyISAM 通常用于读取密集型的应用场景。

特点

  • 不支持事务处理。
  • 支持全文索引。
  • 表级锁定(整个表被锁定),并发性能较差。
  • 支持压缩表(COMPRESSED TABLES)。
  • 支持自动增量。

innodb与myisam引擎之间的区别

1.myisam没有事务
2.myisam没有行锁,只有表锁(使用不当会导致锁表)
mysql8去除了myisam引擎
3.innoDB存在事务acid原则
4.innoDB有行锁
5.innoDB使用聚集索引(主键索引)方式进行数据存储,myisam使用非聚集索引叶子节点存储的是数据的内存地址。
6.innoDB支持外键关系保证数据完整性(不常用)

3. MEMORY

MEMORY 引擎将所有数据存储在内存中,提供极高的读写速度,但是不适合存储大量的数据或持久化数据。适用于临时表和高速缓存。

特点

  • 数据存储在内存中,速度快。
  • 支持哈希索引。
  • 适合小规模数据和临时表。
  • 数据在 MySQL 重启后丢失。

4. ARCHIVE

ARCHIVE 引擎主要用于数据归档,提供极高的压缩率,只支持 SELECT 和 INSERT 操作。

特点

  • 极高的压缩率。
  • 只支持 SELECT 和 INSERT 操作。
  • 适合存储大量很少查询的历史数据。

5. NDBCluster

NDBCluster 是 MySQL 用于集群环境的存储引擎,提供了高可用性和可扩展性。

特点

  • 支持分布式的集群环境。
  • 数据和索引存储在内存中。
  • 提供高可用性和故障转移机制。
  • 适合读写密集型应用。

6. FEDERATED

FEDERATED 存储引擎允许在本地 MySQL 服务器上访问远程 MySQL 服务器上的数据。

特点

  • 透明地访问远程数据。
  • 需要远程服务器的支持。
  • 安全性问题需要注意。

7. CSV

CSV 引擎将数据存储为纯文本文件,每行一条记录,字段之间用逗号分隔。

特点

  • 简单的数据存储格式。
  • 便于导入导出数据。
  • 不支持索引。

总结

选择哪种存储引擎取决于你的应用需求。如果需要支持事务处理并且对数据的一致性要求较高,那么 InnoDB 是最合适的选择。如果你的应用主要是读取操作,并且不需要事务支持,那么 MyISAM 就是一个不错的选择。对于临时数据存储或者需要极高性能的场景,MEMORY 引擎可能更适合。而对于历史数据归档,可以考虑使用 ARCHIVE 引擎。
在这里插入图片描述


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

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

相关文章

Apache Seatunnel Zeta引擎-启动脚本分析

Apache SeaTunnel Zeta引擎的集群模式启动的第一步是执行bin/seatunnel-cluster.sh脚本,所以先来学习下这个脚本。 脚本执行流程分析 脚本简要注释 #!/bin/bash # # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license a…

【Tinymce】富文本编辑器在vue项目中的使用;引入付费格式刷,上传视频、图片

引言 富文本编辑器有很多,对比了一下,还是决定用tinymce(号称宇宙最强),基础的插件确实好用,但是一些更好用的插件,比如格式刷等都是高级版(付费),当然也有人…

day-69 构成整天的下标对数目 II

思路 根据题意,每个元素可以重复使用,所以只需统计对24取余后值值相同的个数,如当前数字对24取余后是3,那么只需知道取余后为21的元素个数即可知道当前元素可与,多少个元素构成整天的下标的数目 解题过程 从左往右遍历…

数据结构编程实践20讲(Python版)—20并查集

本文目录 20 并查集(Union-Find Set)S1 说明并查集的定义并查集基本操作并查集优化并查集特点应用领域 S2 示例S3 问题1:朋友圈问题S4 问题2:网络连接恢复问题S5 问题3:随机生成迷宫 往期链接 01 数组02 链表03 栈04 …

023_Layout_and_Containers_in_Matlab界面布局与容器

容器 基于uifigure进行的图形用户界面设计,可以分为以下几种容器类型: 图窗:uifigure布局:uigridlayout面板:uipanel标签页:uitabgroup、uitab 这几个对象除uifigure外相互可以形成嵌套的关系&#xff0…

【新人系列】Python 入门(二):Python IDE 介绍

✍ 个人博客:https://blog.csdn.net/Newin2020?typeblog 📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们…

leetcode.204.计数质数

#中等#枚举 给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。 埃氏筛 枚举没有考虑到数与数的关联性,因此难以再继续优化时间复杂度。接下来我们介绍一个常见的算法,该算法由希腊数学家厄拉多塞(Eratosthenes)提…

Python爬虫:自动化获取商品评论数据

为什么选择Python爬虫API 高效的数据处理:Python的数据处理能力,结合Pandas等库,可以轻松处理和分析大量的评论数据。丰富的库支持:Python拥有丰富的库,如requests用于发送HTTP请求,BeautifulSoup用于解析…

初识MySQL · 数据库

目录 前言: 数据库 简单使用 存储引擎 前言: 本文也是MySQL的第一篇文章了,新的知识点已经出现,怎么能够停止不前,穿越时空……(迪迦奥特曼乱入哈哈哈)。 言归正传,我们在本文的目标有: …

工厂生成中关于WiFi的一些问题

一 背景: 主要做高通和MTK,工厂生成中通过使用adb wifi,因为这样生产效率高并且避免了新机器有划痕,但是也经常碰到adb wifi无法连接的问题,那么是什么原因导致呢? 二 案例 测试步骤: 使用adb wifi连接手机测试工厂case adb usb adb tcpip 5555 adb connect DU…

高效监控系统:Nightingale本地化部署与远程访问指南

文章目录 前言1. Linux 部署Nightingale2. 本地访问测试3. Linux 安装cpolar4. 配置Nightingale公网访问地址5. 公网远程访问Nightingale管理界面6. 固定Nightingale公网地址 前言 本文主要介绍如何在本地Linux系统部署 Nightingale 夜莺监控并结合cpolar内网穿透工具实现远程…

Android组件化、模块化、Catalogs

前言 下载代码-----》码云下载 下载代码-----》github下载 本篇是Android最新的依赖架构设计,gradle版本要8.0以上,代码实现基于8.5.1。好多年开发过程中,我们碰到config.gradle,buildSrc,composing builds等依赖编译…

新款任天堂switch游戏机方案,支持4K60HZ投屏方案,显示器,手柄方案

据传任天堂将推出新的一代的switch掌机,而新款掌机将支持4K60HZ投屏 都2402年了再做1080P确实有点不太象话了 4K60HZ相较于1080P能够提升很多游戏体验,这时不管是HDMI显示器或者是VR眼睛清晰度都会让人舒服很多。 不过新一代的任天堂似乎也在PD协议上…

用作曲的手法写旋律 什么是动机 ​动机扩大 单音重复 移八度

【你怎么还不会写旋律!!!猴子都听的懂的旋律教程来了!两分钟让你快速上手!】 你怎么还不会写旋律!!!猴子都听的懂的旋律教程来了!两分钟让你快速上手!_哔哩哔…

同济子豪兄--图的基本表示【斯坦福CS224W图机器学习】

无向图(Undirected Graph): 在无向图中,边没有方向,即如果顶点A和顶点B之间有一条边,那么这条边既表示A到B的关系,也表示B到A的关系。换句话说,边是双向的。无向图的边通常用一条线段…

WPF基础权限系统

一.开发环境 VisualStudio 2022NET SDK 8.0Prism 版本 8.1.97Sqlite 二. 功能介绍 WPF 基础权限系统,是一个支持前后端分离设计的 客户端(C/S)项目,该示例项目前端xaml使用UI库 ,Material Design Themes UI 来构建用户界面,确保…

Ubuntu如何显示pcl版本

终端输入: apt-cache show libpcl-dev可以看到,Ubuntu20.04,下载的pcl,应该都是1.10版本的

一次性入门三款分布式定时任务调度框架:Quartz、ElasticJob3.0、xxl-job

分布式定时任务调度框架(文末有源码) 前言1、Quartz1.1 数据库1.2 maven依赖1.3 代码实现1.3.1 创建一个job1.3.1 为job设置trigger 1.4 配置文件1.5 启动、测试1.1 单机1.2 集群 2、ElasticJob2.1 下载zk2.2 新建三个类型的作业2.3 配置文件2.4 启动项目…

Windows下配置Nginx和PHP

之前在Windows开发php项目用的是phpstudy,好用的很。但是phpstudy好久没有更新了,感觉PHP像没有人再用了一样。但是PHP拿来开发小系统,还是很高效的,今天记录如何在Windows环境下配置Nginx和PHP。 1. 配置nginx Nginx软件下载解压…

基于Springboot+Vue的宠物管理系统(含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…