mysql innodb知识记录

官方文档

官网架构图

innodb 特性

内存

buffer pool

在这里插入图片描述
采用优化后的LRU算法,

  • 3/8 of the buffer pool is devoted to the old sublist.
  • The midpoint of the list is the boundary where the tail of the new sublist meets the head of the old sublist.
  • When InnoDB reads a page into the buffer pool, it initially inserts it at the midpoint (the head of the old sublist). A page can be read because it is required for a user-initiated operation such as an SQL query, or as part of a read-ahead operation performed automatically by InnoDB.
  • Accessing a page in the old sublist makes it “young”, moving it to the head of the new sublist. If the page was read because it was required by a user-initiated operation, the first access occurs immediately and the page is made young. If the page was read due to a read-ahead operation, the first access does not occur immediately and might not occur at all before the page is evicted.
  • As the database operates, pages in the buffer pool that are not accessed “age” by moving toward the tail of the list. Pages in both the new and old sublists age as other pages are made new. Pages in the old sublist also age as pages are inserted at the midpoint. Eventually, a page that remains unused reaches the tail of the old sublist and is evicted.

自适应哈希索引

change buffer

在这里插入图片描述

log buffer

redo log buffer

redo log记录的是 对数据页个改动

Insert buffer

数据写入&读取数据

  • 对row来说,有mvcc(一行记录多个版本),同步大内存中也是如此

磁盘

如何保证数据写入成功

  • Doublewrite

doublewrite 由两部分组成:1 doublewriterbuffer 位于内存,大小2M; 2 共享表空间磁盘上,2个连续的区(128页)
脏页预先复制到doublewrite buffer,然后分两次写盘,每次1M写入共享表空间物理磁盘。doublewriter 写完之后,再写入各个表空间

  • redolog

redolog 记录的是对数据页的改动,如果数据页损坏,redolog不能恢复数据,由doublewriter保证数据页完整

  • checkpoint LSN

内存页,redolog、磁盘页军用LSN值,用于判断内存页是否已完成同步

redolog

  • redolog
    • lsn
    • innodb引擎至少有一个重做日志组,每组至少两个文件
    • innodb1.2 之前最大4G,1.2 之后扩大到512G
    • log block 重做日志按扇区写入,每次 512KB,因扇区是最小写入单位,不需要doublewriter

逻辑存储结构

  • 表空间
    • 见架构图
    • 数据段
    • 索引段
    • 回滚段
    • 连续页组成,每个1M,页16KB(连续64页)
    • 每次申请4-5个区
    • 默认大小16KB ,若设置完成不可修改,除非数据重放
    • 页分类
      • 数据页
      • undo 页
      • 系统页
      • 事务数据页
      • 插入缓冲位图
      • 插入缓冲空闲页
      • 未压缩二进制大对像页
      • 压缩二进制大对象页
    • 页结构
      • file header 大小:38B,LSN、页的前后指针、实际存储空间
      • page header 大小:56B,页状态信息、已删除记录数、记录数、最后插入位置、当前页最大事务ID、页在索引的位置
      • infimun+supremum records 页创建时创建,不会被删除。页中主键最大、最小值
      • User records B+树索引组织
      • free space 空闲表空间,链表结构,记录删除后会加入到链表中
      • page dictionary 记录相对位置
      • fill trail 监测页是否完整写入磁盘

索引

  • 聚集索引
  • 辅助索引
  • 全文索引

  • 行级锁
    • 共享锁 S
    • 排它锁 X
  • 表级别锁
    • 意向共享锁 IS
    • 意向排它锁 IX

X 不兼容任何锁,S、IX不兼容

  • infomation schema三张表
    • innodb_trx 表
      • trx_id 事务id
      • trx_state 事务状态
      • trx_started 事务开始时间
      • trx_requested_lock_id 等待事务的锁id, 当 trx_state 为lock wait时有值
      • trx_wait_started 事务等待开始时间
      • trx_weight 事务权重
      • trx_mysql_thread_id 线程id
      • trx_query 事务运行的 sql 语句
    • innodb_locks
      • lock_id 锁id
      • lock_trx_id 事务id
      • lock_mode 锁模式
      • lock_type 锁类型)表、行
      • lock_table 锁住的表
      • lock_index 锁住的索引
      • lock_space 锁对象的space_id
      • lock_page 锁定叶数量,表锁为null
      • lock_rec 锁定记录 表锁为null
      • lock_data 锁定主键值 表锁为null
    • innodb_lock_waits
      • requesting_trx_id 申请锁事务id
      • requesting_lock_id 申请锁id
      • blocking_lock_id 阻塞锁id
      • blocking_trx_id 阻塞事务id
  • 一致性非锁定读
    • read_commit 读取被锁定行最新一份快照
    • repeatable_read 事务开始数据行版本
  • 一致性锁定度
    • select 。。。 for update (X锁)
    • select 。。。 lock in share mode (S锁)
  • 自增锁
  • 行锁3种算法
    • record_lcok 记录锁
    • gap_lock 间隙锁,不包含自身
    • next_key lock :包含自身+范围

事务

  • 实现
    • redolog 持久化
    • undo log
      • Insert undo log
      • update undo log
    • 事务隔离级别
      • reade uncommit
      • reade commite
      • reapteable read
      • serializable

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

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

相关文章

逆向登录(js逆向)

链接: aHR0cHM6Ly9zc28ubHlua2NvLmNvbS9jdXN0b21lci9sb2dpbj9jbGllbnRfaWQ9OGMxNWE2NGY2Nzk0NDY5YjhhNTlmMTBiODNjZWYzYzEmcmVkaXJlY3RfdXJpPWh0dHBzOi8vaDUubHlua2NvLmNuOjQ0My9hdXRoL21hbGwvaDUvbG9naW4mcmVzcG9uc2VfdHlwZT1jb2RlJnNjb3BlPW9wZW5pZCZzdGF0ZT0zNGQ4NGYxNmIwY…

MySQL安装——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

MySQLhttps://www.mysql.com/ 将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码,使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变,同时添加静态分区,分区字段为etl_da…

Dubbo 扩展方法的使用

扩展的目的&#xff1a; Dubbo SPI Extensions 1.0.3 (2022-11-28) Source Release source | asc | sha512 Maven Release <dependency><groupId>org.apache.dubbo.extensions</groupId><artifactId>${component_name}</artifactId><ver…

Win10电脑退出安全模式的两种方法

在Win10电脑中&#xff0c;大家可以点击进入系统安全模式&#xff0c;完成相对应的系统设置。但是&#xff0c;很多用户进入安全模式完成设置后&#xff0c;不知道怎么操作才能成功退出安全模式&#xff1f;接下来小编给大家分享两种简单的方法&#xff0c;帮助大家成功退出Win…

强大的数学软件 GeoGebra 多平台适用

GeoGebra 是一款教育数学软件&#xff0c;可以帮助学生和教师探索、学习和教授各种数学概念和科学领域的知识。GeoGebra 以其灵活性和强大的功能而闻名&#xff0c;它融合了几何、代数、微积分、概率、统计和其他数学领域的工具&#xff0c;以及绘图和计算功能。 功能 GeoGeb…

Java魔法解密:HashMap底层机制大揭秘

文章目录 一、 源码深度解析1.1 窥探Java集合框架中的设计思想1.2 逐行解读HashMap的源代码1.2.1 类信息1.2.2 常量属性1.2.3 变量属性1.2.4 节点信息1.2.5 构造方法1.2.6 put方法1.2.6.1 putVal方法1.2.6.2 putTreeVal方法1.2.6.3 tieBreakOrder方法1.2.6.4 treeifyBin方法1.2…

汽车行业招标采购(系统)数智化建设解决方案

汽车行业是中国国民经济的支柱产业&#xff0c;公安部数据显示&#xff0c;我国平均每百户家庭拥有汽车达到60辆。广阔的市场为行业带来大量需求&#xff0c;以及激烈的市场竞争&#xff1b;同时我国汽车产业正处在从传统工业时代向数字时代迈进的关键时期&#xff0c;急需创新…

python排序

0. 背景 Python排序功能十分强大&#xff0c;可以进行基本排序或自定义排序。Python中提供两种不同的排序方法对各种各样的数据类型进行排序。 1. 使用sorted()函数排序 排序主要是对相同数据类型的元素进行的&#xff0c;包括数值和字符串两种数据类型。 1.1 对数值进行排…

背包系统设计

配置 ItemIdMainTypeSubTypeMaxStackableCount唯一Id大类小类最大堆叠数 MainType&#xff1a; 主要的分类方式&#xff0c;不建议写入数据库 SubType&#xff1a; MainType下面的分类方式&#xff0c;不建议写入数据库 MaxStackableCount: 为0时表示该Item不可堆叠&#xff1…

lua语法

lua语法 1.lua数据类型 lua 脚本输出乱码&#xff0c;将lua脚本改为UTF-8编码&#xff0c;并且需要DOS下修改代码页&#xff1a;CHCP 65001 即可。 基本语法 注释 print("script lua win")-- 单行注释--[[多行注释]]--标识符 类似于&#xff1a;java当中 变量、…

新建vue3项目

三种方法 一. 第一种方式 1、操作步骤&#xff1a; 创建项目目录 vue create 项目名称选择配置方式 ? Please pick a preset: #选择一个配置 Default &#xff08;[Vue 3] babel, eslint&#xff09;Default &#xff08;[Vue 2] babel, eslint&#xff09;Manually select …

Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF?

博客已同步微信公众号&#xff1a;GIS茄子&#xff1b;若博客出现纰漏或有更多问题交流欢迎关注GIS茄子&#xff0c;或者邮箱联系(推荐-见主页). Python&#xff1a;&#xff08;Sentinel-1&#xff09;如何解析SNAP输出的HDF5文件并输出为GeoTIFF&#xff1f; 01 前言 最近…

Spring之容器:IOC(1)

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

【Android Studio】各个版本下载地址

下载地址&#xff1a; https://developer.android.com/studio/archive?hlzh-cn

java期末大作业(星辰对决--五子棋AI)

星辰闪耀星空棋&#xff0c;璀璨洒满宇宙间。 Java编织智慧谱&#xff0c;FindYou翩舞奇妙规。 黑白对弈纵横展&#xff0c;人机较量激荡心。 星光指引胜利路&#xff0c;创造奇迹指尖舞。 代码: 等改好了再放上来 效果图: 日志: 2023/12/17 今天去网上学了一下AI下五子棋…

el-table表格中数据过长如何使用省略号

前提问题&#xff1a;当表格中某一个数据过长&#xff0c;不需要气泡提示&#xff0c;需要省略号显示解决过程&#xff1a;使用el-table时&#xff0c;el-table-column自带show-overflow-tooltip属性可以将不完全展示的内容通过气泡提示进行展示:show-overflow-tooltip"tr…

什么同源策略?

同源 同源指的是URL有相同的协议、主机名和端口号。 同源策略 同源策略指的是浏览器提供的安全功能&#xff0c;非同源的RUL之间不能进行资源交互 跨域 两个非同源之间要进行资源交互就是跨域。 浏览器对跨域请求的拦截 浏览器是允许跨域请求的&#xff0c;但是请求返回…

android 13.0 设置上网应用白名单(上网app白名单)

1.概述 在13.0的产品rom定制开发中,在对产品进行网络模块开发中,有功能需要要求设置某些app可以上网,某些app不可以上网,就是所谓的网络应用白名单功能 接下来就来分析下相关的网络模块,来具体实现相关功能的开发 2.设置上网应用白名单(上网app白名单)核心代码 framewor…

计算机网络(1):开始

计算机网络&#xff08;1&#xff09;&#xff1a;开始 计算机网络在信息时代中的作用 21世纪的一些重要特征就是数字化、网络化和信息化&#xff0c;是一个以网络为核心的信息时代。要实现信息化就必须依靠完善的网络&#xff0c;因为网络可以非常迅速地传递信息。因此网络现…

人工智能原理课后习题(考试相关的)

文章目录 问答题知识表示一阶谓词逻辑表示法语义网络表示法 确定推理谓词公式永真和可满足性内容归结演绎推理 不确定推理主观贝叶斯可信度方法证据理论 搜索策略机器学习 问答题 什么是人工智能&#xff1f; 人工智能就是让机器看起来像人类表现出的智能水平一样 人工智能就是…