iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >Mysql文件存储图文详解
  • 420
分享到

Mysql文件存储图文详解

2024-04-02 19:04:59 420人浏览 独家记忆
摘要

什么是文件系统 我们知道像 InnoDB、MyIASM 这样的存储引擎都是把表存储在磁盘上的(持久化)。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们, 当

什么是文件系统

我们知道像 InnoDB、MyIASM 这样的存储引擎都是把表存储在磁盘上的(持久化)。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们, 当我们想写入数据的时候,这些存储引擎会把这些数据又写回文件系统。

当然,Mysql除了存储实际的数据,还存储了一系列其他的日志,在这些也属于文件系统。

存储引擎的落盘文件地址

使用客户端与服务器建立连接之后查看这个系统变量的值就可以了:

show variables like 'datadir';

image.png

当然这个目录可以通过配置文件进行修改,由我们自己进行指定。

磁盘文件中的内容都是些什么

MySOL 在运行过程中都会产生哪些数据呢?当然会包含我们创建的数据库、 表、视图和触发器等用户数据,除了这些用户数据,为了程序更好的运行,mysql也会创建一些其他的额外数据。

数据库Date目录下的表信息

每当我们使用 CREATE DATABASE 语句创建一个数据库的时候,在文件系统上实际发生了什么呢?其实很简单,每个数据库都对应数据目录下的一个子目录, 或者说对应一个文件夹,我们每当我们新建一个数据库时,Mysql 会帮我们做这两件事儿:

  • 在数据目录下创建一个和数据库名同名的子目录(或者说是文件夹)。
  • 在该与数据库名同名的子目录下创建一个名为 db.opt 的文件,这个文件 中包含了该数据库的各种属性,比方说该数据库的字符集和比较规则是个啥。 比方说我们查看一下在我的计算机上当前有哪些数据库︰

image.png

可以看到在当前有 5 个数据库,其中 mysqladv 数据库是我们自定义的,其余 4 个数据库是属于 MySQL 自带的系统数据库。我们再看一下数据目录下的内容:

image.png

当然这个数据目录下的文件和子目录比较多,但是如果仔细看的话,除了 infORMation_schema 这个系统数据库外,其他的数据库在数居目录下都有对应的 子目录。这个 information_schema 比较特殊,我们后面再讲它的作用。

InnoDB是如何存储数据的

我们的InnoDB在添加一个数据库,就会在日志根目录中添加一个文件夹。

image.png

每一个文件夹中又存储对应的所有表数据。每一个表的数据一般根据以下两种规则进行划分:

表结构的定义

我们以自己建立的study库中的index_condition_pushdown表为例:

image.png

image.png

表结构就是这些数据,对应存储的文件名为:

image.png

表结构就是该表的名称是啥,表里边有多少列,每个列的数据类型是啥,有啥约束条件和索引,用的是啥字符集和比较规则各种信息,这些信息都体现在了 我们的建表语句中了。为了保存这些信息,InnoDB 和 MyIASM 这两种存储引擎 都在数据目录下对应的数据库子目录下创建了一个专门用于描述表结构的文件, 文件名是这样:表名.frm

表中的数据

表所属数据库对应的子目录下创建一个表示该独立表空间的文件,文件名和表名相同,只不过添加了一个.ibd 的扩展名而已,所以完整的文件名称长这样:表名.ibd。

image.png

MyISAM是如何存储表数据的

在 MyISAM 中的数据和索引是分开存放的。所以在文件系统中也是使用不同的文件来存储数据文件和索引文件。(相比于InnoDB中,ibd文件存储了数据+索引,MyISAM再次进行了拆分)。

image.png

如图,我们更换存储引擎。

image.png

文件目录更换为了上图。可以简单理解为将InnoDB的.ibd文件进行了拆分,变为了以下两个文件》

.MYD 代表表的数据文件。

.MYI 代表表的索引文件。

这里,也就总结除了InnoDB和MyISAM的一个重要区别。就是InnoDB的索引和数据都在一个文件夹中,而MyISAM则是将数据文件和索引文件分开存放在两个文件中的。

日志文件

在服务器运行过程中,会产生各种各样的日志,比如常规的查询日志、错误日志、binlog日志、redo 日志、Undo 日志等等,日志文件记录了影响 MySQL 数据库的各种类型活动。 常见的日志文件有:错误日志(error log)、慢查询日志(slow query log)、 查询日志(query log)、二进制文件(bin log)。

错误日志

错误日志文件对 MySQL 的启动、运行、关闭过程进行了记录。遇到问题时 应该首先查看该文件以便定位问题。该文件不仅记录了所有的错误信息,也记录一些警告信息或正确的信息用户可以通过下面命令来查看错误日志文件的位置:

show variables like 'log_error'\G;

image.png

当 MySQL 不能正常启动时,第一个必须查找的文件应该就是错误日志文件, 该文件记录了错误信息。

慢查询日志

慢查询日志可以帮助定位可能存在问题的 SQL 语句,从而进行 SQL 语句层面的优化

查询日志

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

默认文件名:主机名.log

image.png

从 MySQL 5.1 开始,可以将查询日志的记录放入 mysql 架构下的 general_log表

image.png

二进制日志(binlog)

image.png

二进制日志记录了对 MySQL 数据库执行更改的所有操作,若操作本身没有 导致数据库发生变化,该操作可能也会写入二进制文件。但是不包括 select 和 show 这类操作(因为这些操作对数据本身不会进行修改)

binlog几种作用

恢复(recovery)

某些数据的恢复需要二进制日志。

复制

其原理与恢复类似,通过复制和执行二进制日志使一 台远程的 MySQL 数据库(一般称为 slave 或 standby)与一台 MySQL 数据库(一 般称为 master 或 primary)进行实时同步。

审计(有点冷门,db负责)

用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击。

总结

到此这篇关于Mysql文件存储的文章就介绍到这了,更多相关Mysql文件存储内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

您可能感兴趣的文档:

--结束END--

本文标题: Mysql文件存储图文详解

本文链接: http://www.lsjlt.com/news/127280.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mysql文件存储图文详解
    什么是文件系统 我们知道像 InnoDB、MyIASM 这样的存储引擎都是把表存储在磁盘上的(持久化)。当我们想读取数据的时候,这些存储引擎会从文件系统中把数据读出来返回给我们, 当...
    99+
    2024-04-02
  • 详解Android 中的文件存储
    目录概要 独立文件 专属文件 internal storage external storage 概要 当我们查看手机的文件管理器的时候,会发现里面的文件五花八门,想要找到自己项目...
    99+
    2024-04-02
  • MySQL存储过程图文实例讲解
    目录MySQL的存储过程MySQL存储过程的创建1、简单实例2、通过游标遍历结果集总结 MySQL的存储过程 存储过程是数据库的一个重要的功能,MySQL 5.0以前并不支...
    99+
    2024-04-02
  • Android 文件存储与SharedPreferences存储方式详解用法
    目录持久化技术简介文件存储1. 将数据存储到文件中2. 从文件中读取数据SharedPreferences 存储1. 将数据存储到 SharedPreferences 中2. 从 S...
    99+
    2024-04-02
  • Win10禁止生成系统错误内存转储文件图文详解
    如今硬盘的容量已经普遍很大了,不过也有部分win10用户仍会遇到C盘系统盘空间紧张的问题。就算系统盘空间不紧张,能减少系统文件体积的话也利于于Win10系统轻装运行啊。今天小编带来了Win10禁止生成系统错误内存转储文件...
    99+
    2023-05-20
    Win10 系统错误内存转储文件
  • MySQL之my.cnf配置文件图文详解
    目录引言问题1.mysql.server,mysqld,mysqld_safe的区别mysql.servermysql_safe问题2.mysql的三种启动方式:问题3.socket...
    99+
    2024-04-02
  • Android - 文件存储
    一、概念 机身存储在概念上被分为了内置存储和外置存储,插存储卡或外接U盘硬盘都属于外置存储(这年头几乎都不支持插卡,就算外接这种场景属于用户主动转移文件,而不是APP要考虑往那里存)。含有包名的路径都可以使用Context中的方法,不含...
    99+
    2023-09-09
    android
  • mongodb存储文件怎么存储
    MongoDB可以通过两种方法存储文件:1. 将文件存储为二进制数据(BSON):可以将文件转换为二进制格式,然后将其存储在Mong...
    99+
    2023-09-01
    mongodb
  • MySQL存储富文本
    MySQL可以使用以下两种格式来存储富文本: 文本格式(Text):这是一种用于存储较短文本的数据类型,最大存储长度为65,535个字符。适合存储较小的文本,例如文章摘要、评论等。但是对于较长的富文...
    99+
    2023-10-01
    mysql 数据库
  • 怎么在MySQL中存储文本和图片
    本篇文章为大家展示了怎么在MySQL中存储文本和图片,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Oracle中大文本数据类型Clob  长文本...
    99+
    2024-04-02
  • ASP 文件 path 存储:如何在 ASP 中存储文件路径?
    在 ASP 开发中,我们经常需要存储文件路径。这些路径可能是用于文件上传、文件下载、文件保存等操作。如何在 ASP 中存储文件路径呢?本文将为您介绍 ASP 文件 path 存储的几种方式。 一、使用 Application 对象 App...
    99+
    2023-07-07
    文件 path 存储
  • MySQL存储过程详解 mysql 存储过程
    mysql存储过程详解 1.      存储过程简介   我们常用的操作数据库语言SQL语句在执行的时候需要要先编译,然后执行,而存储过程(Stored Proce...
    99+
    2024-04-02
  • ASP 文件 path 存储:如何使用 ASP 存储文件路径?
    在 ASP 中,path 存储是一个非常重要的概念,尤其是在存储文件路径时。在本篇文章中,我们将介绍 ASP 中如何使用 path 存储来存储文件路径,并演示如何在代码中使用它。 一、什么是 path 存储? 在 ASP 中,path 存...
    99+
    2023-07-07
    文件 path 存储
  • mysql sock文件存储了什么信息
    mysql.sock到底存储了什么东西? mysql.sock作为mysql的套接字一般用于本地连接数据库,在速度上优于TCP/IP连接。一般放置在/tmp/mysql.sock目录...
    99+
    2024-04-02
  • Oracle存储过程的几种调用方式图文详解
    目录一、案例场景1.基础环境2.SQL窗口中调用存储过程3.命令窗口中调用存储过程4.Procedures菜单列表中调用存储过程5.Package或Package Bodies菜单列表中调用存储过程6.Jobs菜单列表调...
    99+
    2023-04-14
    oracle存储过程怎么调用 oracle调用存储过程语句 oracle存储过程实例
  • Android文件存储SharedPreferences源码解析
    1.我们都知道SharedPreferences 是android可以用来存放key value的的文件。 SharedPreferences sp = getSha...
    99+
    2024-04-02
  • ASP 文件 path 存储:如何将文件路径存储在 ASP 中?
    在 ASP 程序中,我们经常需要存储文件路径,例如图片、文档等等。如何将文件路径存储在 ASP 中,是一个非常重要的问题。在本文中,我们将介绍几种方法来实现文件路径存储。 一、使用 Application 对象 Application 对...
    99+
    2023-07-07
    文件 path 存储
  • 实现向MYSQL数据库中存储或提取图片文件
    一些情况下,需要向数据库中存储一些2进制文件,比如图片文件等,这时候,向数据库存储数据不同于普通的字符串存储,我们需要对这个2进制文件使用JAVA处理2进制流的API进行处理,然后再进行存储。我们需要进行以...
    99+
    2024-04-02
  • MySQL 视图、函数和存储过程详解
    目录一、视图二、函数三、存储过程MySQL 是一种流行的关系型数据库管理系统,其具有强大的功能和灵活性,使其成为了许多企业和个人喜爱的数据库选择。在 MySQL 中,视图、函数和存储...
    99+
    2023-05-18
    MySQL 视图 函数和存储过程 MySQL 函数和存储过程
  • 浅析Android文件存储
    目录一、内部存储二、外部存储2.1、外部公有2.2、外部私有一、内部存储 内部存储,位于data/data/包名/路径下 是否需要用户权限:否 是否能被其他应用访问:否 卸载应用数据...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作