当前位置: 首页 > news >正文

disryptor和rabbitmq

disryptor和rabbitmq

Disruptor 是什么?

Disruptor 是一个由 LMAX Exchange 开发的高性能、低延迟的进程内(in-process)并发编程框架/库。它最初是为了解决金融交易系统中高吞吐量、低延迟消息传递的需求而设计的。

核心特点和设计理念:

  1. Ring Buffer(环形缓冲区):

    • Disruptor 的核心数据结构是一个预先分配的环形数组(Ring Buffer)。

    • 所有事件(消息)都存储在这个缓冲区中。

    • 生产者将数据放入 Ring Buffer,消费者从 Ring Buffer 中读取数据。

    • 预分配避免了动态内存分配和垃圾回收(GC)的开销。

  2. Sequence Numbers(序列号):

    • 每个事件在 Ring Buffer 中都有一个唯一的、单调递增的序列号。

    • 生产者和消费者都通过追踪这些序列号来协调工作,而不是使用传统的锁。

    • 这大大减少了锁竞争,提高了并发性能。

  3. 无锁设计 (Lock-Free / Wait-Free):

    • Disruptor 尽量避免使用锁。它通过 CAS (Compare-And-Swap) 操作和内存屏障(Memory Barriers)来保证数据的一致性和可见性。

    • 某些等待策略可能是“自旋等待”(busy-spin)或“让出CPU”(yielding),以适应不同的延迟和CPU使用需求。

  4. 机械共鸣 (Mechanical Sympathy):

    • 设计上充分考虑了现代 CPU 硬件的特性,如缓存行(Cache Lines)、内存屏障、分支预测等。

    • 例如,通过填充(padding)来避免伪共享(False Sharing),从而提高缓存效率。

  5. 事件处理器 (Event Processors) / 消费者 (Consumers):

    • 消费者被称为 Event Processors。

    • 可以有多个消费者,它们可以独立处理事件,也可以形成依赖关系链(DAG -有向无环图)。

    • 例如,一个消费者处理完事件后,另一个消费者才能开始处理同一个事件。

Disruptor 的主要应用场景:

  • 高频交易系统

  • 实时数据分析

  • 游戏服务器的事件处理

  • 高性能日志系统

  • 任何需要在单个JVM进程内实现极低延迟、高吞吐量消息传递的场景。

RabbitMQ 是什么?

RabbitMQ 是一个开源的消息代理(Message Broker),也称为消息队列(Message Queue)中间件。它实现了 AMQP (Advanced Message Queuing Protocol) 协议,并支持其他协议如 MQTT, STOMP 等。

核心特点和设计理念:

  1. 消息代理 (Broker):

    • RabbitMQ 作为一个独立的服务器(或集群)运行,应用程序(生产者和消费者)通过网络连接到它。

    • 它负责接收、存储和转发消息。

  2. 生产者 (Producers) 和消费者 (Consumers):

    • 生产者发送消息到 RabbitMQ。

    • 消费者从 RabbitMQ 订阅并接收消息。

    • 生产者和消费者是解耦的,它们不需要知道对方的存在,也不需要同时在线。

  3. 队列 (Queues):

    • 消息存储在队列中,直到被消费者取走。

    • 队列可以持久化,确保即使 RabbitMQ 服务器重启,消息也不会丢失。

  4. 交换机 (Exchanges):

    • 生产者实际上是将消息发送到交换机。

    • 交换机根据路由规则(Routing Keys, Bindings)将消息分发到一个或多个队列。

    • 常见的交换机类型有:Direct, Topic, Fanout, Headers。

  5. 持久化 (Persistence):

    • 消息和队列都可以被标记为持久化,以确保在服务器故障时数据不丢失。

  6. 可靠性与可用性:

    • 支持消息确认(Acknowledgements)机制,确保消息被成功处理。

    • 支持集群(Clustering)和镜像队列(Mirrored Queues)以实现高可用性和负载均衡。

  7. 跨语言、跨平台:

    • 由于基于标准协议,RabbitMQ 可以被多种编程语言(Java, Python, Ruby, .NET, Node.js 等)和不同平台的应用使用。

RabbitMQ 的主要应用场景:

  • 微服务架构: 服务间的异步通信和解耦。

  • 任务队列: 将耗时的任务(如发送邮件、生成报表、图像处理)异步化处理,提高系统响应速度。

  • 事件驱动架构: 系统组件通过发布和订阅事件来进行交互。

  • 数据复制与同步: 在不同系统间同步数据。

  • 流量削峰: 在高并发场景下,将请求放入队列,后端服务按能力处理,防止系统过载。

Disruptor vs. RabbitMQ:主要区别

特性DisruptorRabbitMQ
核心目的进程内高性能并发、低延迟消息传递跨进程/分布式应用间的消息传递和解耦
通信方式内存共享 (Ring Buffer)网络通信 (TCP/IP, AMQP等协议)
部署作为集成在应用程序内部 (单个JVM)作为独立的服务部署 (可集群)
性能/延迟极低 (纳秒级),因为是内存操作,无网络开销相对较高 (毫秒级或更高),有网络开销和序列化开销
持久化默认不提供 (内存数据结构),需自行实现内建支持消息和队列的持久化到磁盘
可靠性依赖于JVM进程的存亡。如果JVM崩溃,数据丢失。通过消息确认、持久化、集群等机制提供高可靠性
跨语言/平台主要是 Java 库 (有其他语言的移植版但不如Java成熟)协议标准,天然支持多语言、跨平台
数据结构Ring Buffer (环形数组)Queues (队列)
使用场景单体应用内部模块间高速通信,日志,金融交易等微服务通信,异步任务处理,系统解耦,事件驱动等
复杂性使用模式相对复杂,需要理解其底层机制才能发挥最佳性能概念较多 (Exchange, Queue, Binding),但API使用相对直接
“事务”支持自身不直接提供类似数据库事务的概念支持 AMQP 事务 (但性能影响大,不常用),或通过发布者确认和消费者确认实现可靠性

总结:

  • Disruptor 是一个“轮子”,用于在单个应用程序内部构建超高性能的并发组件。你可以把它看作是 Java BlockingQueue 的一个极致性能替代品。

  • RabbitMQ 是一个“邮局系统”,用于在不同的应用程序或服务之间可靠地传递消息。它是一个完整的、独立的消息中间件。

它们解决的问题域完全不同:

  • 如果你需要在同一个JVM进程内的不同线程间以极低的延迟传递大量数据,Disruptor 是一个强大的选择。

  • 如果你需要解耦不同的服务,实现异步通信,保证消息的可靠传递(即使某个服务暂时下线),或者在多种语言编写的应用间通信,那么 RabbitMQ (或其他消息队列如 Kafka, ActiveMQ) 是合适的选择。

相关文章:

disryptor和rabbitmq

disryptor和rabbitmq Disruptor 是什么? Disruptor 是一个由 LMAX Exchange 开发的高性能、低延迟的进程内(in-process)并发编程框架/库。它最初是为了解决金融交易系统中高吞吐量、低延迟消息传递的需求而设计的。 核心特点和设计理念&am…...

java基础-关键字:static、单例模式

1.例如:我们创造一个人的类,我们希望他是中国人类,所以我们希望所有对象都共有中国人的属性; import org.w3c.dom.ls.LSOutput;import java.sql.Connection; import java.sql.SQLOutput; import java.util.Arrays;public class Ma…...

深入解析PyTorch中MultiheadAttention的参数key_padding_mask与attn_mask

1. 基本背景 在multiheadattention中存在两个mask,一个参数是key_padding_mask,另外一个是attn_mask,尽管这两个参数是被人们所熟知的填充掩码和注意力掩码,但是深度理解以便清晰区分对于深刻理解该架构非常重要。 2. 参数Key_p…...

【Hadoop】--HA高可用搭建--3.2.2

修改环境配置文件 hadoop-env.sh # 在文件末尾添加以下内容: # java_home记得修改 export JAVA_HOME/usr/java/jdk1.8.0xxxx export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_ZKFC_USERroot export HDFS_JOURNALNODE_USERroot export YA…...

OpenCv(7.0)——银行卡号识别

文章目录 前言1.1 模板处理模块读取模板图像并预处理轮廓检测与处理构建数字模板库 1.2 银行卡图像预处理图像尺寸标准化形态学操作二值化与闭操作 1.3 卡号区域定位轮廓筛选逻辑 1.4 数字识别与结果展示完整代码展示总结 前言 本代码实现基于传统图像处理技术,通过…...

新手怎么样制作网站?

如果你是没有任何的建站基础,又没有任何的网站管理经验,那么应该如何开展网站制作呢?今天由我给大家分享一下网站制作的步骤和流程: 一、制定网站的核心主题: 在用户开展网站制作的之前,先确定一下以下的内…...

React集成百度【JSAPI Three】教程(002):设置不同的环境效果

文章目录 2、设置不同的天气2.1 安装antd前端UI库2.2 是否开启动态天空2.3 创建天气组件2.4 代码2.0版本下载2、设置不同的天气 2.1 安装antd前端UI库 安装命令: npm install antd --save2.2 是否开启动态天空 天气中的阴天、多云需要在开启动态天空后才能有效显示。在页面…...

Helm Chart 中配置多个 Docker Registry 地址以实现备用访问

在 Helm Chart 中配置多个 Docker Registry 地址以实现备用访问,可以通过以下几种方式实现: 1. 在 values.yaml 中定义多个 Registry 在 values.yaml 中定义主 Registry 和备用 Registry,以便在部署时灵活切换: # values.yaml …...

星云智控v1.0.0产品发布会圆满举行:以创新技术重构物联网监控新生态

星云智控v1.0.0产品发布会圆满举行:以创新技术重构物联网监控新生态 2024年5月15日,成都双流蛟龙社区党群服务中心迎来了一场备受业界瞩目的发布会——优雅草科技旗下”星云智控v1.0.0”物联网AI智控系统正式发布。本次发布会吸引了包括沃尔沃集团、新希…...

利用ffmpeg截图和生成gif

ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 output.jpgffmpeg -i input.mp4 -ss 00:00:10 -vframes 180 output.jpg -vframes 180代表截取180帧, 实测后发现如果视频是60fps,那么会从第10秒截取到第13秒-i input.mp4:指定输入视频文件。-ss 00:00:10:…...

OpenCV CUDA 模块中的矩阵算术运算-----在频域中执行两个复数频谱的逐元素乘法的函数mulSpectrums()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 mulSpectrums()是OpenCV CUDA 模块中用于在频域中执行两个复数频谱的逐元素乘法的函数。 该函数实现了以下运算: d s t s r c 1 ⋅…...

可视化图解算法41:搜索二维矩阵(二维数组中的查找)

1. 题目 牛客网 面试笔试TOP101 | LeetCode 74. 搜索二维矩阵 描述 在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数&#xf…...

OpenCV CUDA模块中的矩阵算术运算------创建卷积操作对象的工厂方法 cv::cuda::createConvolution

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 createConvolution函数是OpenCV CUDA 模块中用于创建卷积操作对象的工厂方法。它返回一个指向 cv::cuda::Convolution 接口的智能指针&#xff0…...

从代码学习深度学习 - 用于预训练词嵌入的数据集 PyTorch版

文章目录 前言辅助工具代码绘图工具 (utils\_for\_huitu.py)数据处理工具 (utils\_for\_data.py)读取数据集 (PTB)构建词表下采样高频词中心词和上下文词的提取负采样小批量加载训练实例整合代码:构建数据加载器总结前言 词嵌入(Word Embedding)是将词语映射到低维连续向量…...

基于jsp+mysql+Spring的Springboot旅游网站管理系统设计和实现

基于jspmysqlSpring的Springboot旅游网站管理系统设计和实现 🍅 作者主页 网顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定…...

【Rust迭代器】Rust迭代器用法解析与应用实战

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

嵌入式学习笔记DAY23(树,哈希表)

一、树 1.树的概念 之前我们一直在谈的是一对一的线性结构,现实中,还存在很多一对多的情况需要处理,一对多的线性结构——树。 树的结点包括一个数据元素及若干指向其子树的分支,结点拥有的子树数称为结点的度。度为0的结点称为叶…...

操作系统————五种页面置换算法(OPT,FIFO,LRU,NRU,加强版NRU)大总结

❤️❤️❤️算法1:最佳置换算法(OPT) 算法思想: 值得注意的是这是一种理想型算法,实际上并不可能实现,读者需要注意 下面我们来解析一下它的原理: 我们假设有三个内存块,对于页面…...

数据结构(二) 线性表

一. 线性表 1.定义 线性表是由n(n>0)个具有相同数据类型的数据元素构成的有限序列。其中,元素之间通过顺序关系排列,每个元素有且只有一个直接前驱和一个直接后继(除首尾元素外) 二.线性表的顺序表示(顺序表) 1.存储方式 使用连续的内存空间(数组)存储…...

TS04:高性能四通道自动灵敏度校准电容触摸传感器

在现代电子设备中,电容触摸传感器的应用越来越广泛,而高性能的传感器芯片是实现良好用户体验的关键。 TS04 四通道电容触摸传感器,凭借其自动灵敏度校准功能和多种特性,成为理想的解决方案。本文将简要介绍 TS04 的主要特性、功能…...

鸿蒙 系统-安全-程序访问控制-应用权限管控

Ability Kit 提供了一种允许应用访问系统资源(如:通讯录等)和系统能力(如:访问摄像头、麦克风等)的通用权限访问方式,来保护系统数据(包括用户个人数据)或功能&#xff0…...

ArcGIS Pro 3.4 二次开发 - 框架

环境:ArcGIS Pro SDK 3.4 .NET 8 文章目录 框架1 框架1.1 如何在 DockPane 可见或隐藏时订阅和取消订阅事件1.2 执行命令1.3 设置当前工具1.4 激活选项卡1.5 激活/停用状态 - 修改条件1.6 判断应用程序是否繁忙1.7 获取应用程序主窗口1.8 关闭 ArcGIS Pro1.9 获取 …...

打破传统仓库管理困局:WMS如何重构出入库全流程

引言 在制造业与零售业高速发展的今天,仓库管理仍普遍面临效率低、错发漏发频发、库存数据滞后等痛点。人工登记导致30%的错单率,货位混乱让拣货耗时增加50%,而账实不符引发的二次采购成本更吞噬着企业利润。如何突破传统管理桎梏&#xff1…...

npm 安装时 SSL 证书过期问题笔记

问题描述: npm error code CERT_HAS_EXPIRED npm error errno CERT_HAS_EXPIRED npm error request to https://registry.npm.taobao.org/axios failed, reason: certificate has expired 这表明当前配置的 npm 镜像源(淘宝镜像 https://registry.npm.taobao.org&…...

【大数据】MapReduce 编程-- PageRank--网页排名算法,用于衡量网页“重要性”-排序网页

PageRank 是 Google 创始人拉里佩奇(Larry Page)和谢尔盖布林(Sergey Brin)在 1998 年提出的一种网页排名算法,用于衡量网页“重要性”的一种方式。它是搜索引擎中用于排序网页的一种基础算法 一个网页越是被其他重要…...

Craw4AI:LLM友好的网页爬虫

GitHub:https://github.com/unclecode/crawl4ai 更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI Crawl4AI旨在让网页爬取和数据提取变得简单而高效。无论构建复杂的 AI 应用程序还是增强大语言模型,Crawl4AI 都能…...

idea 安装飞算-javaAI 插件使用

文章目录 前言idea 安装飞算-javaAI 插件使用1. 介绍一下飞算-AI2. 安装使用 前言 如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差,实在白嫖的…...

Lombok

Lombok Lombok 是一个 Java 库,通过注解自动生成样板代码(如 Getter/Setter、构造函数等),从而简化开发。在你提供的代码中,AllArgsConstructor 就是一个 Lombok 注解。以下是 Lombok 常用注解及其作用的详细说明&…...

起点与破圈

写了多年代码,我为什么开始转向算法,直到如今投身于大模型领域? 作为一名拥有 10 年经验的开发者,我的职业路径几乎覆盖了技术发展的多个阶段。从最早使用 Flask/Django 开发网站,到后来构建大数据系统、设计服务器架…...

基于AI的Web数据管道,使用n8n、Scrapeless和Claude

引言 在当今数据驱动的环境中,组织需要高效的方法来提取、处理和分析网络内容。传统的网络抓取面临着诸多挑战:反机器人保护、复杂的JavaScript渲染以及持续的维护需求。此外,理解非结构化的网络数据则需要复杂的处理能力。 本指南演示了如…...

7GB显存如何部署bf16精度的DeepSeek-R1 70B大模型?

构建RAG混合开发---PythonAIJavaEEVue.js前端的实践-CSDN博客 服务容错治理框架resilience4j&sentinel基础应用---微服务的限流/熔断/降级解决方案-CSDN博客 conda管理python环境-CSDN博客 快速搭建对象存储服务 - Minio,并解决临时地址暴露ip、短链接请求改…...

初识函数------了解函数的定义、函数的参数、函数的返回值、说明文档的书写、函数的嵌套使用、变量的作用域(全局变量与局部变量)

文章目录 一、什么是函数?二、函数定义与调用2.1 基本语法2.2 示例演示 三、函数参数详解3.1 位置参数3.2 默认参数3.3 可变参数3.4 关键字参数 四、返回值与文档说明4.1 返回多个值4.2 编写文档字符串 五、函数嵌套与作用域5.1 嵌套函数示例5.2 变量作用域5.3 glob…...

Java常见API文档(下)

格式化的时间形式的常用模式对应关系如下: 空参构造创造simdateformate对象,默认格式 练习.按照指定格式展示 package kl002;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;public class Date3 {publi…...

ubuntu 20.04 ping baidu.coom可以通,ping www.baidu.com不通 【DNS出现问题】解决方案

ping baidu.coom可以通,ping www.baidu.com不通【DNS出现问题】解决方案 检查IPV6是否有问题 # 1. 检查 IPv6 地址,记住网络接口的名称 ip -6 addr show# 2. 测试本地 IPv6,eth0换成自己的网络接口名称 ping6 ff02::1%eth0# 3. 检查路由 ip…...

Oracle 中 open_cursors 参数详解:原理、配置与性能测试

#Oracle #参数 # open_cursors #ORA-01000 在 Oracle 数据库的众多参数中,open_cursors是一个对应用程序性能和资源管理有着重要影响的参数。它直接关系到数据库与应用程序之间游标资源的使用与分配,合理配置open_cursors参数,能够避免应用程…...

线程调度与单例模式:wait、notify与懒汉模式解析

一.wait 和 notify(等待 和 通知) 引入 wait notify 就是为了能够从应用层面,干预到多个不同线程代码的执行顺序,可以让后执行的线程主动放弃被调度的机会,等先执行的线程完成后通知放弃调度的线程重新执行。 自助取…...

AGI大模型(27):LangChain向量存储

1 安装依赖 使用一个简单的本地向量存储 FAISS,首先需要安装它 pip install faiss-cpu -i https://pypi.tuna.tsinghua.edu.cn/simple pip install langchain_community==0.3.7 -i https://pypi.tuna.tsinghua.edu.cn/simple 由于演示过程中用到了爬虫,需要安装依赖库,如…...

Qwen3 - 0.6B与Bert文本分类实验:深度见解与性能剖析

Changelog [25/04/28] 新增Qwen3-0.6B在Ag_news数据集Zero-Shot的效果。新增Qwen3-0.6B线性层分类方法的效果。调整Bert训练参数(epoch、eval_steps),以实现更细致的观察,避免严重过拟合的情况。 TODO: 利用Qwen3-0.6…...

Oracle 的 PGA_AGGREGATE_LIMIT 参数

Oracle 的 PGA_AGGREGATE_LIMIT 参数 基本概念 PGA_AGGREGATE_LIMIT 是 Oracle 数据库 12c 引入的一个重要内存管理参数,用于限制所有服务器进程使用的 PGA(Program Global Area)内存总量。 参数作用 硬性限制:设置 PGA 内存使…...

# idea 中如何将 java 项目打包成 jar 包?

idea 中如何将 java 项目打包成 jar 包? 例如如何将项目dzs168-dashboard-generate打包成 dzs168-dashboard-generate.jar 1、打开项目结构 Project Structure 在IDEA的顶部菜单栏中选择【File】,然后选择【Project Structure】(或者使用快…...

JVM(Java 虚拟机)深度解析

JVM(Java 虚拟机)深度解析 作为 Java 生态系统的核心,JVM(Java Virtual Machine)是 Java 语言 "一次编写,到处运行" 的关键。它不仅是 Java 程序的运行环境,更是一个复杂的系统软件&…...

算法题(150):拼数

审题: 本题需要我们将数组中的数据经过排序,使得他们拼接后得到的数是所有拼接方案中最大的 思路: 方法一:排序贪心 贪心策略1:直接排序 如果我们直接按照数组数据的字典序进行排序,会导致部分情况出错 eg&…...

怎么样进行定性分析

本文章将教会你如何对实验结果进行定性分析,其需要一定的论文基础,文末有论文撰写小技巧,不想看基础原理的人可以直接调到文章末尾。 一、什么是定性分析 定性分析是一种在众多领域广泛应用的研究方法,它致力于对事物的性质、特…...

RLᵛ_ Better Test-Time Scaling by Unifying LLM Reasoners With Verifiers

RLᵛ: Better Test-Time Scaling by Unifying LLM Reasoners With Verifiers 在人工智能领域,大语言模型(LLM)的推理能力提升一直是研究热点。今天要解读的论文提出了一种全新的强化学习框架RLᵛ,通过融合推理与验证能力&#xf…...

关于百度地图JSAPI自定义标注的图标显示不完整的问题(其实只是因为图片尺寸问题)

下载了几个阿里矢量图标库里的图标作为百度地图的自定义图标,结果百度地图显示的图标一直不完整。下载的PNG图标已经被正常引入到前端代码,anchor也设置为了图标底部中心,结果还是显示不完整。 if (iconUrl) {const icon new mapClass.Icon(…...

海思22AP70集超强算力、4K60编解码与多元特性于一体的智能SoC可替代3559V200、3516AV300、3556A

嘿,朋友们!在这个对视觉效果有着极致追求的时代,海思半导体带着满满的诚意,为大家呈上一款堪称惊艳的专业超高清智能网络录像机SoC——22AP70,它就像一颗闪耀的科技新星,即将在各个领域掀起一场视觉革命&am…...

网络协议之一根网线就能连接两台电脑?

写在前面 ~~~~ 如果有两台电脑,通过一根网线可以实现网络互通吗?三台电脑呢?N台电脑呢?本文就以此作为主线来看下吧! 1:正文 ~~~~ 如标题,一根网线就能连接两台电脑?答案是肯定的&a…...

为 Windows 和 Ubuntu 中设定代理服务器的详细方法

有时下载大模型总是下载不出来,要配置代理才行 一、Windows代理设置 ① 系统全局代理设置 打开【设置】→【网络和Internet】→【代理】。 在【手动设置代理】下,打开开关,输入: 地址:10.10.10.215 端口:…...

cmd里可以使用npm,vscode里使用npm 报错

cmd里可以使用npm,vscode里使用npm 报错 报错提示原因解决方法 报错提示 npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系 统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/ fwlink/?LinkID135170 中的 about_Executi…...

MySQL数据库基础 -- SQL 语句的分类,存储引擎

目录 1. 什么是数据库 2. 基本使用 2.1 进入 mysql 2.2 服务器、数据库以及表的关系 2.3 使用案例 2.4 数据逻辑存储 3. SQL 语句分类 4. 存储引擎 4.1 查看存储引擎 4.2 存储引擎的对比 1. 什么是数据库 安装完 MySQL 之后,会有 mysql 和 mysqld。 MySQL …...