Mysql深入浅出之架构

她问我:为什么 MySQL 喜欢 B+ 树?我笑着画了 20 张图 「为什么 MySQL 采用 B+ 树作为索引?」这句话,是不是在面试时经常出现。 要解释这个问题,其实不单单要从数据结构的角度出发,还要考虑磁盘 I/O 操作次数,因为 MySQL 的数据是存储在磁盘中的嘛。 这次,就跟大家一层一层的分析这个问题,图中包含大量的动图来帮助大家理解,相信看完你就拿捏这道题目了! 怎样的索引的数据结构是好的? MySQL 的数据是持久化的,意味着数据(索引+记录)是保存到磁盘上的,因为这样即使设备断电了,数据也不会丢失。 磁盘是一个慢的离谱的存储设备,有多离谱呢? 阅读详情

概述

这里写图片描述
在这里插入图片描述

线程模型

  • Master Thread
    Master Thread是一个非常核心的后台线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲(INSERT BUFFER)、UNDO页的回收等。

每秒一次的操作包括:

  • IO Thread
    被存储引擎使用。innodb使用AIO模型(也就是NIO2)。
    这里写图片描述

  • Purge Thread
    事务被提交后用于回收undo页面。

存储引擎

innodb

一、Innodb有两种管理表空间的方法

  • 独立表空间:每一张表都会生成独立的文件来进行存储,每一张表都有一个.frm表描述文件,和一个.ibd文件。其中ibd文件包括了单独一个表的数据内容和索引内容。
  • 共享表空间:某一个数据库的所有表的数据和索引文件都放在一个文件下,默认的文件是.ibdata1文件,初始值是10M,默认是存放在数据文件的根目录下(mysql/var)。

二、两阶段锁定协议

物理存储

  • .frm 与数据库引擎无关,都有这么个与表名同名文件。存储表的结构
  • .myd 即 my data,表数据文件(MyISAM)
  • .myi 即my index,索引文件(MyISAM)
  • ibdata1 即表空间文件。(innodb)
  • .ibd
  • .log 日志文件。
从零组装电赛送药小车:OpenMV视觉核心+STM32控制,我的软硬件联调全记录 本文详细记录了从零构建电赛智能送药小车的全过程,重点解析了OpenMV视觉识别与STM32控制的深度协同方案。通过硬件选型对比、通信协议设计、PID调参等实战经验,解决了巡线精度、十字路口识别等核心问题,最终实现稳定可靠的送药小车系统,助力电子设计竞赛取得优异成绩。 阅读详情

相关推荐

推荐系统召回总结(持续更新)

推荐系统架构 候选池:可供推荐的物料候选池,对于图文、短视频、新闻等来说通常是最近N天的新物料组成的集合,定期进行物料更新。 召回:从候选池中选出和用户相关的物料,交给后面的排序模块进行打分。召回面对的候选集通常是数十万或者百万甚至千万的量级,检索过程必须轻量快速。通常由多路召回组成,保证不遗漏且相关性、多样性尽量好,可以分为非个性化召回和个性化召回。 粗排:对召回选择的几千或者几百候选物料进行排序,快速打分选出topN,减少精排的压力,兼顾精准与效率。 精排:对粗排的结果进行精准排序,这个环节需要特征尽可

whgyxy的博客 2515

深入浅出Mysql

不同存储引擎的表数据存取方式不同,支持的功能也不同,在后面的文章中,我们会讨论到引擎的选择。但是全部使用长连接后,你可能会发现,有些时候 MySQL 占用内存涨得特别快,这是因为 MySQL 在执行过程中临时使用的内存是管理在连接对象里面的。平时我们使用数据库,看到的通常都是一个整体。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。

weixin_43837268的博客 2208

QML 地图修改插件源码(三),Map在Plugin中设置加载地图类型

常用的地图种类分为交通图,地形图,卫星图等等,在QML的Map(以OSM地图为例)中提供activeMapType属性用于读取当前显示的地图类型(注意:该属性为只读属性,不能用于赋值),QML中地图的加载寻找根据瓦片的文件名进行查找,例如名为"osm_100-l-5-2-2-3.png"的瓦片,其中5代表了该地图的类型

zjgo007的专栏 3165

Mysql深入浅出

Mysql优化、索引、事物、引擎

weixin_43489165的博客 944

DeepSeek研发的精算大模型「精卫」已实现98%精算任务覆盖,中国人寿采用后年节约3.2亿元技术采购成本,形成关键技术替代效应

根据现有资料,精算领域关键技术替代效应的行业标准定义尚未明确具体提及。然而,可以从相关文献中提取一些关键概念和方法来推导出可能的定义。​替代效应的基本定义​:替代效应是指一种商品价格变动引起另一种商品的相对价格变动,从而导致消费者在维持原有效用水平不变的条件下对商品需求量做出的调整。​技术替代效应​:在精算领域,技术替代效应可以理解为新技术或新方法对现有技术或方法的替代,从而影响精算模型、数据处理和决策过程。例如,机器学习在精算中的应用日益增长,改变了精算师的工作方式和模型构建方法。​。

百态·数智思维 | 聚焦大数据、量化与未来AI 1712

AI中台系统设计方案探讨

集成JupyterLab、低代码建模工具(如H2O.ai)、预训练模型库(Hugging Face、PaddleHub)。:通过REST/gRPC接口封装AI能力(如OCR、语音识别),支持流量控制与鉴权(如Kong、Apigee)。:服务注册发现(Consul)、熔断降级(Hystrix)、监控告警(Prometheus+Grafana)。:分布式存储(如HDFS、Ceph)与对象存储(如S3、OSS),支持海量数据高速读写。加密传输(TLS)、动态脱敏(如数据掩码)、访问控制(RBAC)。

reset2021的博客 1036

define mysql_MySQL

数据库约束用于限制约定表中的数据完整性, 有效性.数据库提供了”基础的”完整性,有效性检查.主键约束 primary key什么是主键: 表示数据唯一性的字段称为主键什么是约束: 是创建表时给表字段添加的限制条件主键约束: 让该字段的数据唯一且非空(不能重复,不能null)1234格式: create table t1(id int primary key,name varchar(10));in...

weixin_39622587的博客 312

DBeaver配置本地mysql-connector驱动文件

本文摘要:介绍了数据库驱动管理的基本操作步骤:1)新建驱动管理器,填写MySQL驱动名称、类名和类型;2)添加本地MySQL驱动文件;3)创建数据库连接并测试。适用于MySQL5.x和8.x版本,帮助用户快速配置数据库连接。

litlit023的专栏 1697

深度干货 | 万字长文爆肝MySQL,超详细笔记整理

万字长文详解MySQL基础,图文并茂,通俗易懂,超详细笔记整理!

qq_45832461的博客 3452

uniapp - [微信小程序 | 安卓苹果app] 详细实现接入天地图完整流程,提供显示地图、IP 属地定位 / 用户定位的城市名称、用户定位的经纬度超多功能(复制运行示例代码,详细注释及常见问题)

uni-app,微信小程序,安卓app,苹果app,App端,支付宝小程序,nvue,天地图,国家天地图api,接入使用天地图,uniApp小程序端接入天地图,uniapp安卓苹果app端接入天地图,微信小程序平台如何引入天地图,天地图Api使用教程,如何在uniapp里集成天地图,使用天地图获取当前定位,天地图api教程,天地图官方文档,天地图详细使用教程,Uniapp项目如何使用天地图,项目引入天地图配置及使用教程,使用天地图获取用户定位,天地图获取用户当前位置信息(经纬度),如何通过天地图拿到用户定位

🏆 前端领域优质创作者 1万+

PCB铺铜技巧如何铺铜经验总结

铺铜是指在PCB电气层添加整块的铜皮;铺铜包括电源层铺铜,地层铺铜和信号走线层空闲区域铺铜;铺铜是PCB设计的一个重要的环节。

fydar的博客 1万+

《深入浅出MySQL》架构篇

第31章 Mysql复制 复制就是将主数据库的DDL操作和DML操作通过二进制日志的方式传输到从库上,然后在从库上对这些日志进行重做,从而使得从库数据和主库数据保持同步的操作。 MySQL复制的优点: (1)如果主库出现问题,可以迅速切换到从库 (2)在从库执行查询操作,减轻主库压力 (3)可以在从库上执行备份,以避免备份期间影响主库的服务 MySQL实现的是异步复制。主从库数据存在差距。 31....

kaikai_sk的博客 732

基于STM32设计的遥控小车(手机APP+GPS+温湿度+ESP8266)

一、环境介绍 小车主控MCU: STM32F103ZET6 STM32程序开发IDE: keil5 STM32程序风格: 采用寄存器方式开发,注释齐全,执行效率高,方便移植 手机APP: 采用QT设计,程序支持跨平台编译运行(Android、IOS、Windows、Linux都可以编译运行,对应平台上QT的环境搭建,之前博客已经发了文章讲解) 硬件包含: 淘宝购买的完整一套4轮遥控小车(采用STM32F103ZET6作为主控板)、DHT11温湿度传感器、中科微GPS模块、ESP8266 ...

6万+

MySQL 深入浅出系列01—MySQL 架构

MySQL 逻辑架构和存储引擎

m0_45322619的博客 1409

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

深入浅出高性能Mysql之Mysql架构

另外,写锁也比读锁有更高的优先级,因此一个写锁请求可能会被插入到读锁队列的前面(写锁可以插入到锁队列中读锁的前面,反之读锁则不能插入到写锁的前面)。这个级别会导致很多问题,从性能上来说,READ UNCOMMITTED不会比其他的级别好太多,但却缺乏其他级别的很多好处,除非真的有非常必要的理由,在实际应用中一般很少使用。幻读,指的是当某个事务在读取某个范围内的记录时,另外一个事务又在该范围内插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行(Phantom Row)。

muweiyun的博客 367

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Java-87 深入浅出 MySQL 从架构到线程:剖析存储引擎、线程模模型

5.7 实现 Undo 表空间与临时表空间的独立化,支持在线动态调整 Buffer Pool,提高资源调配灵活性。8.0 进一步解耦 InnoDB 表空间结构,增强临时表和 Doublewrite Buffer 管理,支持更灵活的多表空间配置,优化大数据量操作性能。在线程模型方面,InnoDB 使用 IO Thread 并发处理读写、日志、插入缓冲操作;Purge Thread 负责清理 undo 日志,Page Cleaner Thread 定期刷新脏页,Master Thread 则协调所有后台任务。

谢谢你的喜欢 我们一起无限进步 1610

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

深入浅出MySQL系列(1)—MySQL的基础架构分析

MySQL基础架构分析、连接器、查询缓存、分析器、优化器、执行器;各类存储引擎特点;

li2683056515的博客 211

深入浅出MySQL:基础架构、设计与性能调优全解析

亲爱的朋友们,对于MySQL,想必大家都耳熟能详。但关于它的架构,你是否真正了解呢?当你使用Node、PHP、Java或mysql-client等客户端连接MySQL时,你是否思考过MySQL底层是如何运作的呢?每当你发送一条SQL语句,你是否好奇这条语句在内部究竟经历了哪些过程?数据又是如何被存储和检索的呢?现在,我想分享一份珍贵的MySQL架构设计与性能优化笔记文档,希望它能让你重新认识MySQL,引领你深入探索其底层架构的奥秘。这份文档将为你揭示MySQL架构的每一个细节,让你对它的运作方式有更深入的

资料免费分享,点击名片 1068

Spring源码笔记+深入浅出JVM笔记+深入浅出MySQL笔记+Kafka笔记+Tomcat架构解析-阿里P8架构师手写笔记

这一套来自阿里的高级架构师手写笔记!相信其中很多的知识点都值得同学们去学习! 如果你对这些笔记PDF感兴趣的话,欢迎私信我来获取到! 整理不易,笔记获取方式:扫描下方二维码 第一份、Spring源码笔记: 笔记目录: Spring源代码解析(→) : I0C容器 Spring源代码解析(二) : IoC容器在Web容器中的启动 Spring源代码解析(三) : Spring JDBC Spring源代码解析(四) : Spring MVC Spring源代码解析(五) : Spring

javakla的博客 168

Java-82 深入浅出 MySQL 内部架构:服务层、存储引擎与文件系统全覆盖

网络连接层负责客户端连接管理,支持多种协议和连接器(如JDBC、Python、C等),并提供连接池、SSL等功能;服务层是核心处理模块,包含连接池、SQL接口、解析器、查询优化器与缓存系统,负责SQL语句解析与执行;存储引擎层采用插件化设计,支持InnoDB、MyISAM、Memory等多种引擎,实现数据存储、事务控制和索引管理;系统文件层管理所有物理文件,如日志、配置、表结构和数据文件,确保数据持久性与系统稳定运行。 这一分层架构实现了MySQL的灵活性、可扩展性与高性能表现,适应不同场景下的数据库需求。

谢谢你的喜欢 我们一起无限进步 1019

【深入浅出MySQL】「数据同步架构」分析探索Canal开源技术原理和架构

Canal [kə’næl],该名称直译为“水道”或“管道”,形象地描绘了Canal在数据传输中的核心作用,如同水流在渠道中自然流淌,数据也在Canal的引导下顺畅传输。采用纯Java开发,这一选择确保了其跨平台性和广泛的兼容性,使开发者能够轻松集成到各种Java生态系统中。

世界上并没有完美的程序,但是我们并不因此而沮丧,因为写程序就是一个不断追求完美的过程。 1555

还不懂MySQL数据库?阿里p8架构师带你深入浅出MySQL与优化

你有没有想过,如果能够理解MySQL的工作原理,那么在遇到问题的时候,是不是就能更快地直戳问题的本质?比如说,知道了索引的实现原理,那遇到索引问题的时候,你是不是就能从原理的角度,推断可能的解决方案?MySQL及优化在阿里,美团等等大厂面试中一直是高频必问的问题,很多的Java面试者都为此折腰!掌握MySQL与优化技术,除了是你进入大厂的必备技能,更是你成为高级工程师、资深工程师或者架构师的必经之路。为了更好地准备面试,针对MySQL与优化,梳理出了面试中经常出现的考点,以及高频面试真题解析。...

老男孩的架构路 319

MySQL数据库这么火,还不懂?阿里p8架构师带你深入浅出MySQL与优化

都说程序员工资高、待遇好, 2022 金九银十到了,你的小目标是 30K、40K,还是 16薪的 20K?作为一名 Java 开发工程师,当能力可以满足公司业务需求时,拿到超预期的 Offer 并不算难。然而,提升 Java 核心能力最快、最有效,短期内升职加薪的方法,到底是什么?首先,你需要跳出日常工作,接触更有深度、更前沿的顶级项目。一个简单的逻辑:大厂之所以能够给到高于行业水准的薪资,正是因为即使是普通开发人员,也要应对很多复杂的场景。

the shy 149

MySQL数据库这么火,还不懂?阿里p8架构师带你深入浅出MySQL与优化

数据库是一个综合系统, 其背后是发展了几十年的数据库理论。也许你会觉得数据库并不难,因为你可以熟练地写出SQL,也可以在各个客户端里玩得游刃有余。但就以最常见的MySQL为例,作为程序员,你在使用MySQL的过程中,是不是曾经遇到过类似的问题:为什么我的count(*)这么慢?为什么我建了索引,却根本没有效果?为什么我只查-行的语句,也执行这么慢?MySQL对于大表要怎么优化?之前,你大概都是通过搜索别人的经验来解决问题。

公众号:该用户快成仙了 160
上一篇: SpringMVC-web项目和HttpInvoker
下一篇: 数据库原理
define_us
博客等级 码龄14年 157粉丝 531原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值