MySql 数据库逻辑架构

2023-11-08

    与其他数据库相比,MySql 数据库有自己独特的地方,它的架构可以在不同的场景中应用并发挥良好的作用。主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其他的系统任务以及数据的存储提取相分离。这种架构的最大优点是可以根据业务和实际需求选择适当的存储引擎。下面是MySql 的逻辑架构图:



这里写图片描述


一:连接层:
    最上层是客户端和连接服务,包括本地sock 通信和大多数基于客户端/服务端工具实现的类似于tcp/ip 的通信。主要完成一些类似于链接处理、授权认证、以及相关的安全方案。在该层上引入了连接池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL 的安全链接。服务器也会为安全接入的每个客户端验证它所具有的操作权限。

二:服务层:
    第二层架构主要完成大多数的核心服务功能,如SQL 接口,并完成缓存的查询,SQL 的分析和优化及部分内置函数的执行。所有跨存储引擎的功能也在这一层上实现,如过程,函数等。在该层,服务器会解析并创建相应的内部解析树,并完成相应的优化如确定查询表的顺序,是否利用索引等,最后生成对应的执行操作。如果是select 语句,服务器还会查询内部的缓存。如果缓存空间足够大,这样在解决大量读操作的环境中能够很好的提升系统的性能。

三:引擎层:
    在存储引擎层,存储引擎真正的负责了MySql 中数据的存储和提取,服务器通过API 与存储引擎进行通信。不同的存储引擎具有不同的功能,这样使得我们可以根据自己的实际需求选取合适的存储引擎。

四:存储层:
    数据存储层,主要将数据存储在运行于裸设备上的文件系统上,并完成与存储引擎的交互。


根据上图我们可以知道MySql 至少十种以上的存储引擎,但是一般我们使用的存储引擎主要是MyISAM 与 InnoDB 。下面主要对比一下两种存储引擎:

对比项 MyISAM InnoDB
主外键 不支持 支持
事务 不支持 支持
行表锁 表锁,即使操作一条记录会锁住整个表,不适合高并发的操作 行锁,操作时只锁某一行,不对其他行有影响,适合高并发的操作
缓存 只缓存索引,不缓存真实数据 不仅缓存索引还缓存真实数据,对内存要求较高,并且存储大小对性能有决定性的影响
表空间
关注点 性能 事务
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySql 数据库逻辑架构 的相关文章

  • SQLAlchemy - 批量插入忽略:“重复条目”

    我有一个名为user data 列id and user id作为唯一的密钥 我想将一些历史数据导入到该表中 我用批量插入映射 http docs sqlalchemy org en rel 1 0 orm session api html
  • 删除表的重复项

    In my activity logs 它包含列 material name user id mod result 这标志着测试是否通过 失败 cert links 不知何故 用户生成了两倍的条目material name与cert lin
  • Magento --“SQLSTATE[23000]:违反完整性约束..”客户更新

    迁移服务器后 每次尝试更新客户信息时都会出现错误 我正在使用一个客户激活插件 http www magentocommerce com magento connect vinai extension 489 customer activat
  • 计算 mysql 数据库行数的最佳方法

    在遇到 mysql 查询加载时间慢的问题后 我现在正在寻找计算行数的最佳方法 我曾经愚蠢地使用过mysql num rows 函数来做到这一点 现在意识到这是最糟糕的方法 我实际上正在制作一个分页来用 PHP 制作页面 我找到了几种计算行数
  • 如何在 codeigniter 查询中使用 FIND_IN_SET?

    array array classesID gt 6 this gt db gt select gt from this gt table name gt where array gt order by this gt order by q
  • 无法连接到 Node.js 上的 MySQL 数据库

    我仍然不明白为什么在尝试连接到 Node js 上的 MYSQL Server 时仍然收到此错误消息 ERROR Error ER ACCESS DENIED ERROR Access denied for user root localh
  • 如何使用wireshark清晰捕获mysql查询sql

    因为我们使用远程开发Mysql服务器 所以不能轻易检查查询sql 如果使用本地服务器可以tail f general log file查看调用某个http接口时执行了哪些sql 所以我安装了一个wireshark捕获这些从本地发送的查询sq
  • 如何导出带有数据的 MySQL 架构?

    我有一个完整的架构 其中有许多表 其中包含 MySQL 查询浏览器中的数据 现在我想将这个包含所有表 数据的完整数据库发送给我的同事 我怎样才能将其发送给我的同事 以便他可以将这个完整的架构放入他的 MySQL 查询浏览器中 Thanks
  • MySQL集群启动失败

    这不是我第一次创建ndbcluster 但我没有收到这样的问题 我正在关注本手册 https hub docker com r mysql mysql cluster by mysql团队 我正在使用回显的默认配置在此 GitHub 存储库
  • 如何为我的整个 Node.js 应用程序使用相同的 MySQL 连接?

    我有一个app js 我从那里运行我的整个应用程序 在 app js 内部 我require许多文件中都有代码 对于每个文件 我都这样做 var mysql require mysql var mclient mysql createCon
  • PDO语法错误

    我在一个项目中使用 PDO 但提交时出现语法错误 这是我的代码
  • 连接到 OpenShift (Redhat Paas) mysql 实例

    我正在尝试将我的 C 应用程序与 openshift 数据库连接 但我得到了这个例外conn Open Eccezione gt MySql Data MySqlClient MySqlException 0x80004005 Unable
  • 没有提示指令的直连接中表的顺序是否会影响性能?

    所有基于 SQL 的 RDBMS 10 年前的版本 直接连接查询 没有提示指令 中的表顺序是否会对最佳性能和内存管理产生影响 听说最后一个join应该是最大的表 您的数据库的查询优化器如何处理这种情况 回答你的问题 是的 表的顺序在连接中有
  • MVCC 如何与 MySql 中的 Lock 配合使用?

    我知道Mysql中使用锁或者MVCC可以实现并发控制 比如可重复读 但我不知道MVCC如何避免幻读 在其他地方了解到一般是通过MVCC和Gap Lock来实现的 但是目前我理解的是MVCC不需要锁 即更新和删除都是使用undo log来实现
  • MySQL正则表达式:如何将字符串中的数字与\d匹配?

    我有一个专栏release date它以字符串格式存储日期 不是 DATETIME 格式 因为它们有时可以是任何其他字符串文字 我想根据给定的月份和年份查找任意日期的所有记录 尝试遵循但对我不起作用 gt Post find all con
  • MySQL - 从数字列表中选择在表的 id 字段中没有对应项的数字

    我有一个数字列表 例如 2 4 5 6 7 我有一个表 foos 带有 foos ID 包括 1 2 3 4 8 9 我想获取我的号码列表 并在我的表的 ID 字段中找到那些没有对应项的号码 实现此目的的一种方法是创建一个表格栏 在 ID
  • Django 将 JSON 数据传递给静态 getJSON/Javascript

    我正在尝试从 models py 中获取数据并将其序列化为views py 中的 JSON 对象 模型 py class Platform models Model platformtype models CharField max len
  • 使用用户定义函数 MySql 时出错

    您好 请帮我解决这个问题 提前致谢 我在数据库中定义了这些函数 CREATE FUNCTION levenshtein s1 VARCHAR 255 s2 VARCHAR 255 RETURNS INT DETERMINISTIC BEGI
  • 无法连接到 MAMP 上的 phpMyAdmin

    我收到此错误消息 MySQL 说道 无法连接 设置无效 phpMyAdmin 尝试连接 MySQL 服务器 但服务器拒绝连接 您应该检查配置中的主机 用户名和密码 并确保它们与 MySQL 服务器管理员提供的信息相对应 用户和通行证是默认的
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in

随机推荐

  • 2021计算机考硕复试线,2021考研复试线汇总:国家线+34所中5所院校复试线①

    原标题 2021考研复试线汇总 国家线 34所中5所院校复试线 突如其来 昨天晚上 中国教育发布 公布了2021年硕士研究生考试学术学位类和专业学位类的国家线 随后 34中的5所院校也更新了2021年复试线成绩 包含以下这5所院校 清华大学
  • vue项目Error: Cannot find module ‘xxx’类报错的解决方法

    现发现只要是报错 Error Cannot find module xxx 例如 Error Cannot find module webpack 这类的问题都可以用下面的方法解决 报错内容如下 运行 npm install 没问题 运行
  • 消息队列的两种模式

    Java消息服务 Java Message Service JMS 应用程序接口是一个Java平台中关于面向消息中间件 MOM 的API 用于在两个应用程序之间 或分布式系统中发送消息 进行异步通信 点对点与发布订阅最初是由JMS定义的 这
  • Box2D C++ 教程-物体

    Box2D C 教程 物体 物体 Bodies 物体是物理场景中的基本对象 但是这里的物体并不是你看到的实际互相弹跳碰撞的实物 听起来很费解吗 挺住 马上做解释 http ohcoder com blog 2012 11 29 bodies
  • springboot+log4j2遇到的坑

    情景再现 按照网上一般的教程 这样 并添加 去除 common logging的jar 实际过程中 仍然报错会发出警告 大概意思如下 slfj仍然用着springboot默认的logback 包有冲突 所以第一图并没有起作用 而且logba
  • 【20200326】数据挖掘课程课业打卡三

    20200326 数据挖掘课业打卡三之数据质量 数据挖掘课业打卡三之数据质量 一 单选题 二 填空题 三 判断题 知识点汇总 1 数据中可能存在的问题 2 数据预处理方法 3 关于欧几里得距离 叮嘟 这里是小啊呜的学习课程资料整理 好记性不
  • the host '192.168.2.100'is unreachable,The host may be down,or there may be a problem with......解决办法

    我这里遇到这样的问题 是因为网关和网络IP没有配置对造成的 解决办法如下 第一步 打开VM 点中要操作的虚拟机 鼠标点击左上角 编辑 虚拟网络编辑器 如下图所示 第二步 若是选择自定义网关 即选择如上图的VMnet8模式 选中VMnet8
  • WebSocket整合spring 一文全部搞定

    文章声明 本文简单整合了webSocket 组件 涉及到的源码分解 原理什么的以后再说 本文只适合入门小白体验 不涉及复杂业务逻辑 文章目录 1 引入webSocket依赖包 2 声明式整合WebSocket 这是一道硬菜 2 1 webS
  • C++STL模板库——deque容器

    今天介绍的是双端队列deque 也是STL中非常重要的内容 include
  • QT/QTCreator开发/使用技巧

    调试模式完整的展示过长的字符串 如图 当字符串过长时在调试模式下 无法非常清晰的看到全部的字符串 此时可以通过 右键菜单 change value display format spearate Window 此时字符串将单独显示在一个独立
  • 自己动手实现java 动态代理

    前言 上一篇讲到jdk动态代理的实现 现在来讲一下自己动手实现java 动态代理 上一篇 jdk 动态代理 2 自定义实现 分析 想要自定义实现 有5个步骤 生成增强类源代码 把源代码输出到磁盘 编译成class文件 加载到jvm中 返回被
  • stream的.findAny().orElse (null) 是什么意思?

    List
  • 判断当前浏览器环境是否是移动端

    一 直接上代码 测试移动端环境 function isMobileNavigator let flag navigator userAgent match phone pad pod iPhone iPod ios iPad Android
  • SET的用法

    写给自己看的小tips set set中插入一个元素 insert s1 str1 set中删除一个元素可以这样写 1 2 3 4 5 6 7 8 9 for set
  • Opencv(C++)学习系列---Sobel索贝尔算子边缘检测

    目录 1 算法简介 2 算子参数介绍 3 完整代码 1 算法简介 Sobel算子是一种用于边缘检测的线性滤波器 如果把图像看做是一个二维函数 那么Sobel算子就是图像在垂直和水平方向上变化的速度 即梯度 Sobel算子在水平和垂直方向上做
  • java 替换指定位置的字符_java Sting 如何替换指定位置的 字符?

    展开全部 include include include 此处空一行 using namespace std int main string str 123 421657 abcd 456789 此处空一行 cout lt lt str l
  • spring-mvc 用注解实现spring-mvc的基本开发

    用注解实现spring mvc的基本开发 maven的配置
  • Day20【元宇宙的实践构想06】—— 元宇宙与Web3.0

    本人简介 男 年龄 18 作者 那就叫我亮亮叭 专栏 元宇宙 部分资料参考文献 成生辉教授的 元宇宙 概念 技术及生态 和百度相关资料 0 0 写在前面 元宇宙 在2021年成为时髦的概念 元宇宙到底是什么 元宇宙是否是互联网技术的下一次革
  • Unity 摄像机自适应

    脚本挂在摄像机下 using System Collections using System Collections Generic using UnityEngine 摄像机显示结果一致 拉伸 public class CameraAda
  • MySql 数据库逻辑架构

    与其他数据库相比 MySql 数据库有自己独特的地方 它的架构可以在不同的场景中应用并发挥良好的作用 主要体现在存储引擎的架构上 插件式的存储引擎架构将查询处理和其他的系统任务以及数据的存储提取相分离 这种架构的最大优点是可以根据业务和实际