IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL----浅谈InnoDB存储引擎的文件(1) -> 正文阅读

[大数据]MySQL----浅谈InnoDB存储引擎的文件(1)

1,前言

MySQL数据库和InnoDB存储引擎有这样几种文件:

  • 参数文件
  • 日志文件
    • 错误日志文件
    • 二进制日志文件
    • 慢查询日志文件
    • 查询文件
  • socket文件
  • pid文件
  • MySQL表结构文件
  • 存储引擎文件
    • 表空间文件
    • 重做日志文件

2,文件

2.1,参数文件

2.1.1,参数文件的读取

当MySQL启动时,会去读取配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数。MySQL实例启动的时候也可以不需要参数文件,这时所有的参数值取决于编译MySQL时指定的默认值和源代码中指定参数的默认值。但是如果MySQL在默认的数据库目录中没有找到mysql架构的话,则会启动失败,mysql架构中记录了访问该实例权限的权限,若找不到,实例就不会启动成功。

2.1.2,参数类型

MySQL参数文件中的参数有两种:

  • 静态参数
  • 动态参数
    • 基于会话:当前会话内有效,如autocommit
    • 基于实例:整个MySQL实例生命周期内有效

静态参数表示在整个生命周期内都不得进行修改;而动态参数则可以在MySQL实例运行过程中进行修改。
值得一提的是,在实例中修改了参数,这个参数在这个实例运行期间都会生效,一旦实例重启,MySQL还是会按照参数文件里的参数进行设置。要想永久的修改某些设置,可以修改MySQL的参数文件。

2.2,日志文件

日志文件记录了MySQL数据库的各种类型活动

2.2.1,错误日志

错误日志对MySQL的启动、运行、关闭过程进行了记录。MySQL DBA在遇到问题时应该首先查看该文件。
可以通过查看参数:log_error来寻找错误日志的存放位置

show variables like 'log_error'

2.2.2,慢查询日志

慢查询日志能为SQL语句的优化带来很好的帮助。设置一个阈值,运行时间超过这个阈值的SQL语句都会被记录到这个文件。
MySQL默认不启动慢查询日志,所以需要手动修改参数:log_slow_queries,将其修改为ON

# 查看是否开启
show variables like 'log_slow_queries';

SQL执行时间超过阈值(大于阈值才会被记录,小于或等于并不会被记录),就会被记录到慢查询日志,与这个阈值有关的参数是:long_query_time

show variables like 'long_query_time';

还可以将没有使用索引的SQL执行语句记录到慢查询日志,只需要设置参数:log_queries_not_using_indexes为ON

show variables like 'log_queries_not_using_indexes';

2.2.3,查询日志

查询日志记录了所有对MySQL数据库请求的信息,不论这些请求是否得到了正确的执行

2.2.4,二进制日志

二进制日志记录了对数据库执行更改的所有操作,当然并不包括SELECT和SHOW这类的操作,因为这类命令并不会更改数据库。
二进制日志的主要作用有:

  • 恢复(recovery):某些数据的恢复需要二进制日志,如当一个数据库全备文件恢复后,可以通过二进制文件进行point-in-time的恢复(恢复到某个时间点下的数据库状态)
  • 复制(replication):原理与恢复类似,通过复制和执行二进制日志使得主从数据库间进行实时同步

二进制日志文件在默认情况下是没有启动的,需要手动指定参数来启动。开启这个功能会影响性能,但影响十分有限,在考虑可以使用复制和point-in-time恢复的情况下,这些性能损失是值得的

2.3,套接字文件

Unix系统下本地连接MySQL可以采用Unix域套接字方式,这种方式需要一个套接字文件。套接字文件可由参数socket控制。一般在/tmp目录下,名为mysql.sock

2.4,pid文件

当MySQL实例启动时,会将自己的进程ID写入一个文件中----即为pid文件,该文件可由参数pid_file控制,默认路径位于数据库目录下,文件名为:主机名.pid

2.5,表结构定义文件

因为MySQL插件式存储引擎的体系结构的关系,MySQL对于数据的存储是按照表的,并非按照存储引擎。无论是使用任何存储引擎,MySQL都有一个.frm后缀的文件,这个文件记录了该表的表结构定义(也可以记录视图的定义)

2.6,InnoDB存储引擎文件

上面介绍的文件都是MySQL数据库本身的文件,和存储引擎无关。除了这些文件外,每个表存储引擎都还有其自己独有的文件。

2.6.1,表空间文件

InnoDB存储引擎在存储设计上模仿了Oracle,将存储的数据按表空间进行存放。

可以这样简单粗暴的理解:

  1. 有一个表空间A,有这么一个表B
  2. 假设A是B的表空间
  3. 那么A下面会有表B的定义文件、表B的数据文件

2.6.2,重做日志文件

重做日志的主要目的是,万一实例或者介质失败,InnoDB存储引擎会使用重做日志恢复到断电前的时刻,以此来保证数据的完整性。
同样是记录事务日志,重做日志文件只记录InnoDB存储引擎本身的事务日志;而前文提到的二进制日志会记录所有与MySQL有关的日志记录,包括InnoDB、MyISAM、Heap等其他存储引擎的日志。

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-18 17:42:19  更:2022-05-18 17:45:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 12:21:56-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码