MySQL 的存储引擎有哪些?它们之间有什么区别?
MySQL 支持多种存储引擎,每种存储引擎都有其独特的特性和适用场景。以下是 MySQL 中常见的存储引擎及其主要区别:
1.常见存储引擎及其特点
(1)InnoDB
• 事务支持:支持完整的 ACID 特性,适用于需要事务处理的场景。
• 锁机制:支持行级锁,减少锁冲突,适合高并发写操作。
• 外键支持:支持外键,维护数据完整性。
• 索引类型:支持聚簇索引,主键索引的叶子节点直接存储行数据,适合基于主键的查询。
• 崩溃恢复:通过重做日志(redo log)和撤销日志(undo log)保证数据恢复。
• 适用场景:高并发读写、事务性应用(如银行、支付系统)。
示例:
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,username VARCHAR(100) NOT NULL,password VARCHAR(100) NOT NULL
) ENGINE=InnoDB;
(2)MyISAM
• 事务支持:不支持事务。
• 锁机制:支持表级锁,写操作会锁定整个表,适合读多写少的场景。
• 索引类型:支持非聚簇索引,数据和索引分开存储。
• 全文索引:支持全文索引(FULLTEXT),适合全文搜索。
• 适用场景:日志记录、数据仓库、全文搜索。
示例:
CREATE TABLE articles (id INT AUTO_INCREMENT PRIMARY KEY,title VARCHAR(255) NOT NULL,content TEXT
) ENGINE=MyISAM;
(3)Memory
• 数据存储:数据存储在内存中,访问速度快,但重启后数据丢失。
• 锁机制:支持表级锁。
• 索引类型:支持哈希索引(默认),适合等值查询。
• 适用场景:缓存热点数据、存储临时表数据。
示例:
CREATE TABLE cache (id INT PRIMARY KEY,value VARCHAR(255)
) ENGINE=MEMORY;
(4)Archive
• 数据存储:数据写入后不可修改,支持高效插入和查询,但不支持索引。
• 适用场景:日志存储、历史数据归档。
示例:
CREATE TABLE logs (id INT AUTO_INCREMENT PRIMARY KEY,message TEXT
) ENGINE=ARCHIVE;
(5)CSV
• 数据存储:每个表对应一个.csv
文件,适合轻量级数据存储。
• 适用场景:数据导入/导出。
示例:
CREATE TABLE data (id INT PRIMARY KEY,value VARCHAR(255)
) ENGINE=CSV;
(6)NDB Cluster
• 事务支持:支持事务。
• 锁机制:支持行级锁。
• 适用场景:分布式存储、高可用性要求的场景(如电信、金融)。
(7)Federated
• 数据存储:通过本地表访问远程数据库,本地无数据存储。
• 适用场景:跨服务器查询、分布式数据管理。
示例:
CREATE TABLE remote_table (id INT PRIMARY KEY,value VARCHAR(255)
) ENGINE=FEDERATED
CONNECTION='mysql://user:password@remote_host:port/db_name/table_name';
2.主要存储引擎的对比
特点 InnoDB MyISAM Memory Archive NDB
事务支持 支持 不支持 不支持 不支持 支持
锁机制 行锁 表锁 表锁 表锁 行锁
索引类型 聚簇索引 非聚簇索引 哈希索引 无索引 非聚簇索引
适用场景 高并发读写、事务性应用 读多写少、日志记录 缓存热点数据 日志归档 分布式数据库
数据持久性 持久化 持久化 不持久化(重启丢失) 持久化 持久化
3.如何查看和修改存储引擎
(1)查看支持的存储引擎
SHOW ENGINES;
(2)查看表的存储引擎
SHOW TABLE STATUS LIKE 'table_name';
(3)修改表的存储引擎
ALTER TABLE table_name ENGINE=InnoDB;
4.存储引擎选择建议
• 事务性应用(OLTP):选择InnoDB。
• 读多写少的场景:选择MyISAM。
• 临时数据存储:选择Memory。
• 日志归档:选择Archive。
• 分布式存储:选择NDB Cluster。
• 跨服务器查询:选择Federated。
通过合理选择存储引擎,可以更好地满足不同业务场景的需求,优化数据库性能和可靠性。
相关文章:
MySQL 的存储引擎有哪些?它们之间有什么区别?
MySQL 支持多种存储引擎,每种存储引擎都有其独特的特性和适用场景。以下是 MySQL 中常见的存储引擎及其主要区别: 1.常见存储引擎及其特点 (1)InnoDB • 事务支持:支持完整的 ACID 特性,适用于需要事务处理的场景。 • 锁机制&…...
大语言模型的评测
大语言模型评测是评估这些模型在各种任务和场景下的性能和能力的过程。 能力 1. 基准测试(Benchmarking) GLUE(General Language Understanding Evaluation):包含多个自然语言处理任务,如文本分类、情感分…...
《从零到全栈:Vue2入门宝典》
1. Vue 简介 1.1 什么是 Vue? Vue 是一套用于构建用户界面的渐进式框架。Vue 的核心库专注于视图层,易于与其他库或现有项目集成。Vue 的目标是通过尽可能简单的 API 实现数据双向绑定和组件化开发。 1.2 什么是“渐进式”? “渐进式”意味…...
next.js-学习3
next.js-学习3 6. 设置数据库1. 传代码到github https://github.com/2. github和Vercel链接,用Vercel预览和部署3. 创建数据库4. 初始化数据库 7.读取数据1. 在/app/lib/data.ts中这两行是连接postgres的2. 在/app/dashboard/page.tsx中使用3.在/app/dashboard/page…...
Hadoop第2课(伪分布式集群的搭建)
jdk和hadoop安装包: hadoop-2.9.2.t......等2个文件官方版下载丨最新版下载丨绿色版下载丨APP下载-123云盘 1、用XFTP发送hadoop安装包和jdk到/home/hadoop/目录下(hadoop用户的主目录) 2、解压jdk安装包到~目录 卸载jdk的命令:r…...
Linux——进程池
前言:大佬写博客给别人看,菜鸟写博客给自己看,我是菜鸟。 1.实现思路 思路:通过创建匿名管道,来实现父子进程之间的通信 注1:父写,子读 注2:匿名管道只能用来进行具有血管关系的进程…...
JavaScript 简单类型与复杂类型-简单类型的内存分配
深入理解JavaScript中的简单类型(基本数据类型)和复杂类型(引用数据类型)如何在内存中存储对于编写高效、无误的代码至关重要。本文将专注于探讨简单类型的内存分配机制,即栈(Stack)内存&#x…...
深度生成模型(一)——具身智能综述与算法分类简介
具身智能对于机器人的控制可以分为端到端模型和非端到端模型: 端到端模型:具身模型(如 ACT 和 DP)将视觉感知(Vision)与动作生成(Action)整合为单一神经网络,直接实现从…...
Vue 中,使用模板(Template) 和 Render 函数编写组件的区别
在 Vue 2 中,模板(Template) 和 Render 函数 是两种不同的组件编写方式,它们各有特点和适用场景。以下是它们的核心区别和实际应用场景分析: 1. 基本区别 特性模板(Template)Render 函数语法形…...
【笔记】论文阅读方法(AI大模型)
1 为什么读论文 构建知识体系:通过Related Works快速了解该方向研究现状,追踪经典论文 紧跟前沿技术:了解领域内新技术及效果,快速借鉴到自身项目 培养科研逻辑:熟悉论文体系,了解如何创造新事物&#x…...
JWT+redis实现令牌刷新优化方案
令牌刷新优化方案的详细实现步骤: 1. 令牌服务层改造 1.1 JWT工具类增强 // JwtUtils.java 新增方法 public class JwtUtils {// 生成带动态过期时间的令牌public static String createToken(String subject, String userId, String username, long expirationMi…...
安全面试5
文章目录 sql的二次注入在linux下,现在有一个拥有大量ip地址的txt文本文档,但是里面有很多重复的,如何快速去重?在内网渗透中,通过钓鱼邮件获取到主机权限,但是发现内网拦截了tcp的出网流量,聊一…...
vim临时文件泄露
##解题思路 感觉ctfshow的题目都挺有意思的,大家可以去做做 首先题目提示vim临时文件泄露,一般在vim编辑的时候,会有个swp的中间文件生成,根据这个特性,从而可以猜测,我们可以通过访问一个swp文件路径&am…...
使用Docker将ros1自定义消息通过rosjava_bootstrap生成jar包
文章目录 预准备环境rosjava_bootstrap坏消息好消息 环境安装docker安装rosjava_bootstrap仓库rosjava_center仓库修改rosjava_bootstrap代码拉取docker镜像放置自己的自定义消息 启动docker编译 预准备环境 rosjava_bootstrap rosjava_bootstrap是将自定义的ROS消息生成java…...
本地快速搭建一套AI人脸识别技术研究学习的实验环境
如果你想在本地搭建一套学习和研究AI人脸识别技术的框架,建议使用开源工具和框架进行实验,因为它们通常提供了较为丰富的文档和社区支持,能够帮助你深入理解人脸识别的核心原理。以下是一套可行性强且综合性的方案,涵盖了人脸检测…...
SpringBoot项目连接Oracle视图报错整理
在若依框架中增加连接Oracle视图报错 工具测试连接 通过使用plsql连接数据库测试,连接成功 1. 相关配置内容 连接配置 url: jdbc:oracle:thin:192.168.0.210:1521:HIS username: portal_his password: XXXXXX driver-class-name: oracle.jdbc.driver.OracleDr…...
【我的 PWN 学习手札】House of Husk
House of Husk House of Husk是利用格式化输出函数如printf、vprintf在打印输出时,会解析格式化字符如%x、%lld从而调用不同的格式化打印方法(函数)。同时C语言还提供了注册自定义格式化字符的方法。注册自定义格式化字符串输出方法…...
面试-JVM:JVM的组成及作用
JVM包含两个子系统和两个组件: 两个子系统: 类加载子系统(ClassLoader Subsystem) 作用:根据给定的全限定类名(如:java.long.Object)来装载class文件至运行时数据区的方法区。 核心…...
Node.js项目启动流程以及各个模块执行顺序详解
Node.js项目启动流程以及各个模块执行顺序的问题。首先,我需要仔细阅读并理解我搜索到的资料,从中提取关键信息,然后综合这些信息组织成一个结构化的回答。 首先,根据我搜索到的资料都详细描述了Node.js的启动流程,涉及…...
obj离线加载(vue+threejs)+apk方式浏览
demo需求:移动端,实现obj本地离线浏览 结合需求,利用(vue2threejs173)进行obj的加载,然后采用apk方式(hbuilderX打包发布)移动端浏览; https://github.com/bianbian886/…...
【Python 语法】Python 数据结构
线性结构(Linear Structures)1. 顺序存储列表(List)元组(Tuple)字符串(String) 2. 线性存储栈(Stack)队列(Queue)双端队列(…...
Flutter - 布局Widget
Flutter的布局主要分为 单子组件 和 多子组件 两大类: Container、Padding、Align这些属于单子组件,而Row、Column、ListView这些则是多子组件。 单子组件 Align组件 Align 是一个用于控制子组件位置的单子布局组件。它通过指定对齐方式(…...
AD从原理图到PCB超详细教程
AD超详细教程 前言一、建立一个工程模板二、原理图1.设计原理图。2.使用AD自带库和网上开源原理图库3.画原理图库4.编译原理图三、PCB1.确定元器件尺寸大小2.绘制PCB Library①使用元器件向导绘制元件库②原理图与PCB的映射3.绘制PCB①更新PCB②调整元件位置③布线④漏线检查⑤…...
视频级虚拟试衣技术在淘宝的产品化实践
作为一种新的商品表现形态,内容几乎存在于手淘用户动线全流程,例如信息流种草内容、搜索消费决策内容、详情页种草内容等。通过低成本、高时效的AIGC内容生成能力,能够从供给端缓解内容生产成本高的问题,通过源源不断的低成本供给…...
Redis安装及其AnotherRedisDesktopManagera安装使用
一、Redis安装 1. 下载Redis安装包 通过网盘分享的文件:Redis 链接: https://pan.baidu.com/s/1elAT8mk3EIoYQQ3WoVVoNg?pwd7yrz 提取码: 7yrz 2. 解压Redis安装包 下载完成后,将Redis安装包解压到一个指定的目录,例如:C:\Re…...
2025系统架构师(一考就过):案例之四:架构复用、架构评估、特定架构(DSSA)、架构开发方法(ABSD)
二、软件架构复用 ◆软件产品线是指一组软件密集型系统,它们共享一个公共的、可管理的特性集,满足某个特定市场或任务的具体需要,是以规定的方式用公共的核心资产集成开发出来的。即围绕核心资产库进行管理复用、集成新的系统。 ◆软件架构…...
软件工程应试复习(考试折磨版)
针对学校软件工程考试,参考教材《软件工程导论(第6版)》1-8章 学习的艺术:不断地尝试,我一定会找到高效用的方法,让学习变成一门艺术,从应试备考中解救出我的时间同胞们。 好嘞!既然…...
Kafka可视化工具EFAK(Kafka-eagle)安装部署
Kafka Eagle是什么? Kafka Eagle是一款用于监控和管理Apache Kafka的开源系统,它提供了完善的管理页面,例如Broker详情、性能指标趋势、Topic集合、消费者信息等。 源代码地址:https://github.com/smartloli/kafka-eagle 前置条件…...
本地部署SenseVoice(包括离线设备操作)
Anaconda3 Anaconda Installers and Packages SenseVoice 魔搭社区 FFmpeg FFmpeg 安装Anaconda3(Windows) 下载完成后,自定义路径后安装。在开始菜单中出现Anaconda Prompt说明安装成功。 安装Anaconda3(Linuxÿ…...
sql server 复制从备份初始化数据
参考 : 从备份初始化订阅(事务) - SQL Server | Microsoft Learn sql server 复制默认是用快照初始化数据的,也支持从备份初始化数据,参考如上...
MySQL 复合索引
MySQL 复合索引详解 引言 在实际业务场景中,多条件组合查询是最常见的操作之一。例如,根据“用户ID 时间范围”查询订单,或根据“商品分类 价格区间”筛选商品。此时,单列索引可能无法满足性能需求,而**复合索引&am…...
蓝桥杯备赛(C/C++组)
README: 本笔记是自己的备考笔记,按照官网提纲进行复习!适合有基础,复习用。 一、总考点 试题考查选手解决实际问题的能力,对于结果填空题,选手可以使用手算、软件、编程等方法解决,对于编程大…...
人类驾驶的人脑两种判断模式(反射和预判)-->自动驾驶两种AI模式
一种模式是直觉模式,判断是基于条件反射,视觉感知 触发到 直接条件反射(从经历中沉淀形成的神经信息闭环),类似现在自动驾驶技术的传统AI模式。 另一种模式是物理时空图式推理模式,判断是基于预判预测&…...
C语言机试编程题
编写版本:vc2022 1.求最大/小值 #include<stdio.h> int main(){int a[50],n;int max, min;printf("请输入您要输入几个数");scanf_s("%d", &n);printf("请输入您要比较的%d个数\n",n);for (int i 0; i<n; i) {scanf_…...
SmartMediakit之音视频直播技术的极致体验与广泛应用
引言 在数字化时代,音视频直播技术已经深入到各个行业和领域,成为信息传递和交流的重要手段。视沃科技自2015年成立以来,一直致力于为传统行业提供极致体验的音视频直播技术解决方案,其旗下的大牛直播SDK凭借强大的功能和卓越的性…...
NVIDIA GEFORCE GTX1050显卡如何搭建AI人脸识别技术环境
NVIDIA GEFORCE GTX1050显卡如何搭建AI人脸识别技术环境!实际上,这个显卡虽然是入门级的,但是依然可以满足你的入门学习要求。 你的显卡是 NVIDIA GTX 1050,显存为 2GB,虽然它的性能不如高端显卡(如RTX 3060、3090等),但对于学习和研究 人脸识别技术,尤其是进行基础的…...
华为数通Datacom认证体系详解:从HCIA到HCIE的进阶路径
华为数通Datacom(Data Communication)课程是华为认证体系中的核心方向之一,聚焦企业网络通信与数据通信技术,适合从事网络规划、部署和运维的人员。 一、数通Datacom课程体系 华为数通Datacom认证分为 三个级别,逐级递…...
【运维】内网服务器借助通过某台可上外网的服务器实现公网访问
背景: 内网服务器无法连接公网,但是办公电脑可以连接内网服务器又可以连接公网。 安装软件 1、frp 2、ccproxy 配置 1、内网服务器 # 内网服务器启动frp服务配置文件参考vi frps.ini# frps.ini [common] bind_port 7000# 备注: bind_port端口可以随意配置。配置完…...
Spring之Bean的生命周期过程中调用的方法
1。这个部分除了6,9都在这了 package com.example.springbootdemo3.lifebeean;import org.springframework.beans.BeansException; import org.springframework.beans.factory.*; import org.springframework.beans.factory.annotation.Value; import org.springframework.con…...
Vue 中动态实现进度条
在 Vue 中动态实现进度条,基本上有两种常见的方法:直接通过 Vue 数据绑定控制样式,或者利用外部库来实现更复杂的功能。我们会深入探讨这两种方式,并且详细说明每种方法的实现步骤、优缺点以及使用场景。 1. 使用 Vue 数据绑定来…...
Qt互斥锁(QMutex)的使用、QMutexLocker的使用
Qt互斥锁【QMutex】的使用、QMutexLocker的使用 Chapter1 Qt互斥锁(QMutex)的使用、QMutexLocker的使用一、QMutexLocker和QMutex实现示例图二、QMutex和QMutexLocker的关系(个人理解)三、QMutex使用和QMutexLocker使用1.QMutex的使用2.QMutexLocker的使…...
Python开发 Flask框架面试题及参考答案
目录 Flask 的核心设计理念是什么?与 Django 相比有哪些显著差异? 解释 Flask 框架的核心理念及其作为 “微框架” 的优缺点 Flask 的依赖库有哪些?简述 Werkzeug 和 Jinja2 的作用 什么是 WSGI?Flask 如何基于 WSGI 实现服务端与应用的交互 解释 RESTful API 的设计原…...
DeepSeek模型昇腾部署优秀实践
2024年12月26日,DeepSeek-V3横空出世,以其卓越性能备受瞩目。该模型发布即支持昇腾,用户可在昇腾硬件和MindIE推理引擎上实现高效推理,但在实际操作中,部署流程与常见问题困扰着不少开发者。本文将为你详细阐述昇腾 De…...
【cv】vs2022配置opencv
release下配置包含目录和库目录 E:\sdk\sdk_cuda12.3\opencv490\include E:\sdk\sdk_cuda12.3\opencv490\include\opencv2 E:\sdk\sdk_cuda12.3\opencv490\lib release下配置包含链接器输入的依附依赖项 opencv_world490.lib release编译文件夹下需手动复制opencv_world49…...
RabbitMQ系列(五)基本概念之Queue
在 RabbitMQ 中,Queue(队列) 是存储消息的容器,也是消息传递的核心载体。以下是其核心特性与作用的全方位解析: 一、Queue 的定义与核心作用 消息存储容器 Queue 是 RabbitMQ 中实际存储消息的实体,生产者…...
从二维随机变量到多维随机变量
二维随机变量 设 X X X和 Y Y Y是定义在同一样本空间 Ω \varOmega Ω上的两个随机变量,称由它们组成的向量 ( X , Y ) (X, Y) (X,Y)为二维随机变量,亦称为二维随机向量,其中称 X X X和 Y Y Y是二维随机变量的分量。 采用多个随机变量去描述…...
IP-----动态路由OSPF
这只是IP的其中一块内容,IP还有更多内容可以查看IP专栏,前一章内容为GRE和MGRE ,可通过以下路径查看IP-------GRE和MGRE-CSDN博客,欢迎指正 注意!!!本部分内容较多所以分成了两部分在下一章 5.动态路由OS…...
RabbitMQ操作实战
1.RabbitMQ安装 RabbitMQ Windows 安装、配置、使用 - 小白教程-腾讯云开发者社区-腾讯云下载erlang:http://www.erlang.org/downloads/https://cloud.tencent.com/developer/article/2192340 Windows 10安装RabbitMQ及延时消息插件rabbitmq_delayed_message_exch…...
python-leetcode-不同路径
62. 不同路径 - 力扣(LeetCode) class Solution:def uniquePaths(self, m: int, n: int) -> int:dp [1] * n # 仅保留一行for i in range(1, m):for j in range(1, n):dp[j] dp[j-1]return dp[-1]...
【react】快速上手基础教程
目录 一、React 简介 1.什么是 React 2.React 核心特性 二、环境搭建 1. 创建 React 项目 2.关键配置 三、核心概念 1. JSX 语法 表达式嵌入 样式处理 2. 组件 (Component) 3. 状态 (State) 与属性 (Props) 4. 事件处理 合成事件(SyntheticEvent) 5. …...