InnoDB 磁盘结构及表空间 ( Tablespaces )

news2024/10/6 22:23:07

InnoDB磁盘主要包含Tablespaces,InnoDB Data Dictionary、Doublewrite Buffer、redo log和Undo Logs

Tablespaces: 表空间分为系统表空间(ibdata1文件)、临时表空间、常规表空间、Undo表空间以及file-per-table表空间。系统表空间又包括双写缓冲区(Doublewrite Buffer)ChangeBuffer等
Doublewrite buffer:innodb 将数据页写到文件之前存放的位置。8.0.20版本之前,double write buffer存放在InnoDB系统表空间中,8.0.20版本后存放在double write中
Redo log:存储的是log buffer刷到磁盘的数据
Undo log:存在于global临时表空间中,用于事务的回滚
在这里插入图片描述

表空间 ( Tablespaces )

表空间(Tablespaces) : 用于存储表结构和数据, InnoDB表空间类型包括系统表空间、File-Per-Table表空间,常规表空间,Undo表空间,临时表空间等

  • 系统(共享)表空间(The System Tablespace)

    • 共享表空间: 包含InnoDB数据字典,Doublewrite Buffer,Change Buffer,Undo Logs的存储区域。系统表空间也默认包含任何用户在系统表空间创建的表数据和索引数据
    • 物理文件查看
      在这里插入图片描述
    • 系统表空间是一个共享的表空间因为它是被多个表共享的。该空间的数据文件通过参数innodb_data_file_path 控制,默认值是 ibdata1:12M:autoextend (文件名为ibdata1、12MB、自动扩展)
      在这里插入图片描述
  • 独立表空间(File-Per-Table Tablespaces)

    • 默认开启,独立表空间是一个单表表空间,该表创建于自己的数据文件中,而非创建于系统表空间中。当 innodb_file_per_table 选项开启时,表将被创建于表空间中。否则,innodb将被创建于系统表空间中
      在这里插入图片描述
    • 每个表空间由一个.ibd数据文件代表,该文件默认被创建于数据库目录中
      在这里插入图片描述
  • 两种表空间的优缺点

    • 共享表空间
      • 优点:可以将表空间分成多个文件存放到各个磁盘上(表空间文件大小不受表大小的限制,如一个表可以分布在不同的文件上)。数据和文件放在一起方便管理
      • 缺点:所有的数据和索引存放到一个文件中,虽然可以把一个大文件分成多个小文件,但是多个表及索引在表空间中混合存储,这样对于一个表做了大量删除操作后表空间中将会有大量的空隙,特别是对于统计分析,日志系统这类应用最不适合用共享表空间
    • 独立表空间
      • 优点:1. 每个表都有自已独立的表空间,每个表的数据和索引都会存在自已的表空间中。2. 可以实现单表在不同的数据库中移动(复制File-per-table表空间的对应表的数据文件到其他mysql数据库实例的表空间下,实现表的导入迁移)。3. 空间可以回收(在独立表空间下,删除或者清空表后,存储空间会立刻返回给操作系统。而在共享表空间下,表空间数据文件的大小不会缩小)
      • 缺点:单表增加过大,如超过100个G
  • 通用表空间(General Tablespaces)

    • MySQL 5.7开始支持通用表空间管理功能,类似于系统表空间,也是共享表空间,可以存储多个表的数据。

    • 通用表空间为通过create tablespace语法创建的共享表空间。通用表空间可以创建于mysql数据目录外的其他表空间(自定义存储路径),其可以容纳多张表,且其支持所有的行格式。

    • 相比File-per-table表空间,通用表空间由于多表共享表空间,消耗的内存会更少一点,具有潜在的内存优势。(占用的磁盘空间会更小)

    • 案例:指定存储路径创建一张表
      方式1: 指定 data directory
      在这里插入图片描述
      方式2: 使用通用表空间
      在这里插入图片描述
      在这里插入图片描述

  • 撤销表空间(Undo Tablespaces)

    • 撤销表空间,用来保存回滚日志,即undo logs, undo Log 的数据默认在系统表空间ibdata1文件中

    • 可以通过 innodb_undo_directory 属性 查看回滚表空间的位置。默认路径是mysql的数据存储路径
      在这里插入图片描述

    • InnoDB使用的undo表空间由 innodb_undo_tablespaces 配置选项控制,设置undo独立表空间个数,范围为0-128, 默认为0,0表示不开启独立undo表空间 ,且 undo日志存储在ibdata1文件中
      在这里插入图片描述

      什么时候需要来设置这个参数 ?

      当DB写压力较大时,可以设置独立undo表空间,把undo从 ibdata文件中分离开来,指定innodb_undo_directory 目录存放,可以制定到高速磁盘上,加快undo log 的读写性能

    • undo日志使用共享表空间存在的问题

      • 因为共享表空间不会自动收缩,即使事务关闭,undo log也会一直占用空间, 所以可能会出现因为大事物而导致ibdata1文件过大的问题

      • MySQL5.7中引入了一个新的参数 innodb_undo_log_truncate

      • 表示是否开启自动收缩undo log的表空间的操作。如果配置为 ON ,并且配置了2个或2个以上的undolog表空间数据文件,当某一个日志文件大小超过设置的最大值之后,就会自动的收缩表空间数据文件

        在这里插入图片描述

    • 8.0版本 对于undo log存储的进一步优化

      从MySQL8.0版本开始,MySQL默认对undo进行了分离操作,也就是说,不需要在初始化中手动配置参数,默认会在datadir目录下生成两个undo表空间文件undo_001 和 undo002 并且可以在线的增加和删除undo表空间文件, 进行动态扩容和收缩

      查询undo log信息
      在这里插入图片描述

  • 临时表空间(Temporary Tablespaces)

    • 用户创建的临时表和磁盘内部临时表创建于共享临时表空间中。MySQL 5.7起,开始采用独立的临时表空间,命名ibtmp1文件,初始化12M,且默认无上限

    • 全局临时表空间默认是数据目录的ibtmp1文件,所有临时表共享,可以通过innodb_temp_data_file_path 属性指定临时表空间的位置
      在这里插入图片描述

    • 需要注意的是: 临时表空间最好是设置最大增长限制,否则可能会导致 ibtmp1文件过大,占用过多的磁盘空间
      在这里插入图片描述

    • tmp_table_size 参数配置内部内存临时表的大小
      在这里插入图片描述

    • 如何监控临时表与临时表空间使用情况
      在这里插入图片描述
      建议Created_tmp_disk_tables / Created_tmp_tables不要超过25%。如果Created_tmp_disk_tables数量很大,查看是否有很多慢sql,是否有很多使用临时表的语句。加大tmp_table_size的值

      还可以选择择机重启实例,释放 ibtmp1 文件,和 ibdata1 不同,ibtmp1 重启时会被重新初始化而 ibdata1 则不可以

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

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

相关文章

CDH6.3.2-组件安装安全认证

HDFS 1.选择自定义。 2.选择HDFS ZK YARN然后点继续。 3.选择安装的主机。 4.审核更改默认就行,点继续。 5.配置HDFS的HA。 安装好以后点击hdfs进入实例就能够看到启动了高可用。 6.启动YARN的高可用。 KAFKA 更具需求修改资源 一直点继续就行了 FlUME HI…

CTF权威指南 笔记 -第二章二进制文件- 2.3 -静态链接

目录 地址空间分配 两个链接的方式 按序叠加 相似节合并 静态链接的详细过程 虚拟内存 重定位文件 静态链接库 地址空间分配 我们把之前的两函数分为两个文件 main.c extern int shared extern vooid fun(int *a,int *b); int main(){int a100;func(&a,&share…

MySQL监控告警及可视化:Zabbix+Percona PMP实现(Part III)

MySQL监控告警及可视化:ZabbixPercona PMP实现(Part III) 告警配置配置告警邮箱配置告警消息模板配置告警用户配置告警规则告警测试 告警配置 配置告警邮箱 在Zabbix Web前端的 Administration - Media Types - Email 中配置发送告警信息的…

什么是恺撒密码?如何用Python实现它(36)

小朋友们好,大朋友们好! 我是猫妹,一名爱上Python编程的小学生。 欢迎和猫妹一起,趣味学Python。 今日主题 猫妹目前在看的,ycl Python等级考试五级教材,有一章是介绍恺撒密码的。 今天,咱们…

2023-5-2面试题学习

1、内存的可见性你了解吗,讲述一下? 内存可见性是指多个线程访问同一共享变量时,在一个线程修改了该变量值后,下一个线程能立即看到这种变化的能力。 如果一个变量在多个线程间共享,那么为了避免出现数据不一致的情况&…

为什么DDD难落地?

为什么DDD难落地? lorne 2023-04-23 视频地址: 为什么DDD难落地?_哔哩哔哩_bilibili 洋葱架构图: DDD能解决什么问题? 其实DDD的核心是:提升业务的聚合性、提升业务的拓展性。 DDD的错误认知&#xff…

CentOS7安装和部署Jenkins

安装Java环境 检查旧版: rpm -qa | grep java若已经安装了旧版本,则需要先删除,删除方法: rpm -qa nodeps [java package]安装新版: yum install java-11-openjdk yum install java-11-openjdk-devel(开…

07 KVM虚拟机引导固件安装

文章目录 07 KVM虚拟机引导固件安装7.1 概述7.2 安装方法7.2.1 安装edk软件包7.2.2 查询edk软件是否安装成功 07 KVM虚拟机引导固件安装 7.1 概述 针对不同的架构,引导的方式有所差异。x86支持UEFI(Unified Extensible Firmware Interface)…

MySQL示例数据库(MySQL Sample Databases) 之 World数据库

文章目录 MySQL示例数据库(MySQL Sample Databases) 之 World数据库官方示例数据介绍World数据库World 数据库安装world-db/world.sql的脚本内容参考 MySQL示例数据库(MySQL Sample Databases) 之 World数据库 官方示例数据介绍 MySQL 官方提供了多个示例数据库,在…

【致敬未来的攻城狮计划】— 连续打卡第十九天:RA2E1串口通信基础知识

系列文章目录 1.连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下 2.开发环境的选择和调试(从零开始,加油) 3.欲速则不达,今天是对RA2E1 基础知识的补充学习。 4.e2 studio 使用教程 5.…

什么是GPT模型,GPT下载和国内镜像

什么是GPT模型,GPT模型是通过预训练的方式,采用无监督学习方式,大量语料输入,经过多次训练后得到模型。它能够自动学习并理解自然语言中的语义、句法和语法信息,并可以用于文本生成、对话系统、情感分析、机器翻译等自…

HTTP第二讲——HTTP相关概念

与HTTP 相关的各种应用 1.网络世界 实际的互联网是由许许多多个规模略小的网络连接而成的,这些“小网络”可能是只有几百台电脑的局域网,可能是有几万、几十万 台电脑的广域网,可能是用电缆、光纤构成的固定网络,也可能是用基站、…

SQL之SQL索引

文章目录 一、索引概述介绍演示优缺点 二、索引结构二叉树B-Tree (多路平衡查找树)BTreeHash 三、索引分类四、索引语法五、SQL性能分析SQL执行频率慢查询日志profile详情 索引使用原则验证索引效率最左前缀法则索引列运算字符串不加引号模糊查询or连接的条件数据分布影响 .SQL…

[LeetCode周赛复盘] 第 103 场双周赛20230429

[LeetCode周赛复盘] 第 103 场双周赛20230429 一、本周周赛总结2656. K 个元素的最大和1. 题目描述2. 思路分析3. 代码实现 2657. 找到两个数组的前缀公共数组1. 题目描述2. 思路分析3. 代码实现 2658. 网格图中鱼的最大数目1. 题目描述2. 思路分析3. 代码实现 2659. 将数组清…

二分(整数二分 浮点数二分)

目录 一、整数二分 模板 右边界二分查找(左开右闭) 左边界二分查找(左闭右开) 应用 数的范围 二、浮点数的二分 模板 应用 算术平方根 三、习题 1.数的三次方根 一、整数二分 tip:满足单调性的数组一定可以…

【Linux】进程优先级 + 环境变量

文章目录 📖 前言1. 进程优先级1.1 什么是优先级:1.2 如何修改优先级: 2. 进程的其他概念2.1 竞争性与独立性:2.2 并行与并发:2.3 进程间优先级的体现:2.4 O(1) 调度算法:2.4 进程上下文&#x…

C语言进阶——数据在内存中的存储,你知道吗?

今天我们深度剖析数据在内存中的存储: 重点知识: 1、数据类型详细介绍 2、整形在内存中的存储:原码、反码、补码 3、大小端字节序介绍及判断 4、浮点型在内存中的存储解析 之前我们涉及关于这一部分的知识只是大致的进行讲解&#xff0…

网络编程:UDP socket

文章目录 阅读前导 服务端定义日志框架成员属性服务端框架 初始化服务器创建套接字绑定 运行服务端读取数据参数解读 处理数据向客户端发送响应数据关闭文件描述符 客户端定义创建套接字绑定发送数据接收服务器的响应数据关闭文件描述符 测试1本地环回作用 本地测试netstat 指令…

继续科普:ChatGPT 最新写论文使用方法

这两天发现了几个国内就能用的ChatGPT,不需要魔法! 给大家推荐两种方法,大家自行选择: 1、电脑端安装VSCode软件,使用GPT插件: 优点: 无需魔法、无需付费、软件简单易用(稍懂电脑就会用) 缺点: ① 只支持电脑端,不支持手机:软件安装虽简单,但不一定所有人都…

行业常识_RFID

文章目录 1 RF2 RFID2.1 RFID的应用场景2.2 RFID工作原理 1 RF RF,是Radio Frequency的缩写, Radio,n. 收音机;无线电通讯; v. 用无线电通讯(或发送消息) Frequency,n. 频率 RF中文…