MySQL8中的存储引擎以及文件解析

 更新时间:2023年09月05日 09:09:46   作者:wangJiaLun-china  
这篇文章主要介绍了MySQL8中的存储引擎以及文件使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

MySQL存储引擎以及文件解析

服务器中的目录及文件

查看mysql的文件存储路径, 除了information_schema这个数据库之外,其他数据库都在当前目录存在文件夹

[root@MiWiFi-R3P-srv mysql]# pwd
/var/lib/mysql
[root@MiWiFi-R3P-srv mysql]# ll
总用量 188880
-rw-r-----. 1 mysql mysql       56 2月  14 21:09  auto.cnf
-rw-r-----. 1 mysql mysql     1954 3月  18 03:49  binlog.000003
-rw-r-----. 1 mysql mysql      179 3月  18 04:40  binlog.000004
-rw-r-----. 1 mysql mysql      156 3月  18 04:41  binlog.000005
-rw-r-----. 1 mysql mysql       48 3月  18 04:41  binlog.index
-rw-------. 1 mysql mysql     1680 2月  14 21:09  ca-key.pem
-rw-r--r--. 1 mysql mysql     1112 2月  14 21:09  ca.pem
-rw-r--r--. 1 mysql mysql     1112 2月  14 21:09  client-cert.pem
-rw-------. 1 mysql mysql     1676 2月  14 21:09  client-key.pem
-rw-r-----. 1 mysql mysql   196608 3月  18 05:28 '#ib_16384_0.dblwr'
-rw-r-----. 1 mysql mysql  8585216 2月  14 21:09 '#ib_16384_1.dblwr'
-rw-r-----. 1 mysql mysql     3515 3月  18 04:40  ib_buffer_pool
-rw-r-----. 1 mysql mysql 12582912 3月  18 05:26  ibdata1
-rw-r-----. 1 mysql mysql 50331648 3月  18 05:28  ib_logfile0
-rw-r-----. 1 mysql mysql 50331648 2月  14 21:09  ib_logfile1
-rw-r-----. 1 mysql mysql 12582912 3月  18 04:41  ibtmp1
drwxr-x---. 2 mysql mysql      187 3月  18 04:41 '#innodb_temp'
drwxr-x---. 2 mysql mysql      143 2月  14 21:09  mysql
-rw-r-----. 1 mysql mysql 25165824 3月  18 05:26  mysql.ibd
srwxrwxrwx. 1 mysql mysql        0 3月  18 04:41  mysql.sock
-rw-------. 1 mysql mysql        5 3月  18 04:41  mysql.sock.lock
-rw-r--r--. 1 mysql mysql        7 2月  14 21:09  mysql_upgrade_info
srwxrwxrwx. 1 mysql mysql        0 3月  18 04:41  mysqlx.sock
-rw-------. 1 mysql mysql        6 3月  18 04:41  mysqlx.sock.lock
drwxr-x---. 2 mysql mysql     8192 2月  14 21:09  performance_schema
-rw-------. 1 mysql mysql     1680 2月  14 21:09  private_key.pem
-rw-r--r--. 1 mysql mysql      452 2月  14 21:09  public_key.pem
-rw-r--r--. 1 mysql mysql     1112 2月  14 21:09  server-cert.pem
-rw-------. 1 mysql mysql     1680 2月  14 21:09  server-key.pem
drwxr-x---. 2 mysql mysql       48 2月  21 21:15  sharding_order
drwxr-x---. 2 mysql mysql       28 2月  14 21:09  sys
-rw-r-----. 1 mysql mysql 16777216 3月  18 05:28  undo_001
-rw-r-----. 1 mysql mysql 16777216 3月  18 05:28  undo_002
drwxr-x---. 2 mysql mysql       22 2月  14 22:53  user_149

进入user_149数据库中查看每一个表对应有一个表示独立表空间 .ibd 结尾的文件进行存储

[root@MiWiFi-R3P-srv mysql]# cd user_149/
[root@MiWiFi-R3P-srv user_149]# ll
-rw-r-----. 1 mysql mysql 114688 3月  18 05:39 role.ibd
-rw-r-----. 1 mysql mysql 114688 2月  21 00:42 user.ibd

存储引擎

InnoDB存储引擎模式

表结构

  • 为了保存表结构,InnoDB在数据目录下对应的数据库子目录下
  • 创建了一个专门用于描述表结构的文件 表名.frm
  • ps: MySQL8.0中不存在表名.frm(表结构文件),并到了表名.ibd

表中数据和索引

  • 含MySQL 5.6.6之后版本中,InnoDB新建表不会默认存到系统表空间,默认使用独立表空间
  • 系统表空间(system tablespace)
  • 默认情况下,存放在 ibdata1 文件
  • 独立表空间(file-per-table tablespace)
  • 会在数据库子目录下创建表名.ibd的文件

配置

[server]
# 配置系统表空间对应文件路径以及大小,这个文件是自扩展文件。
innodb_data_file_path=data1:512M;data2:512M:autoextend
# 配置默认表空间 0:代表使用系统表空间; 1:代表使用独立表空间
innodb_file_per_table=0

MyISAM存储引擎模式

默认是使用InnoDB,需要创表时通过指定引擎

CREATE TABLE `user` (
	`id` INT NOT NULL AUTO_INCREMENT,
	`username` VARCHAR (255) COLLATE utf8mb4_german2_ci DEFAULT NULL,
	PRIMARY KEY (`id`)
) ENGINE = MYISAM DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_german2_ci;

表结构

  • MySQL5.7中和InnoDB一样,存储在表名.frm
  • MySQL8.0中存储在表名.xxx.sdi

表中数据和索引

  • MyISAM中索引都是二级索引数据和索引分开存放
  • 表名.MYD(MYData)
  • ​ 数据信息文件,存储数据信息
  • 表名.MYI(MYIndex)
  • ​ 存放索引信息文件

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • MySQL对数据库数据进行复制的基本过程详解

    MySQL对数据库数据进行复制的基本过程详解

    这篇文章主要介绍了MySQL对数据库数据进行复制的基本过程,解读了Slave的一些相关配置,需要的朋友可以参考下
    2015-11-11
  • Xampp中mysql无法启动问题的解决方法

    Xampp中mysql无法启动问题的解决方法

    最近有朋友反映遇到了xampp的mysql启动不了这种情况,该怎么办呢,所以下面这篇文章主要给大家介绍了关于Xampp中mysql无法启动问题的解决方法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 逐步分析MySQL从库com_insert无变化的原因

    逐步分析MySQL从库com_insert无变化的原因

    大家都知道com_insert等com_xxx参数可以用来监控数据库实例的访问量,也就是我们常说的QPS。并且基于MySQL的复制原理,所有主库执行的操作都会在从库重放一遍保证数据一致,那么主库的com_insert和从库的com_insert理论上应该是相等的。
    2014-05-05
  • 解决mysql不是内部或外部命令的问题

    解决mysql不是内部或外部命令的问题

    这篇文章主要介绍了解决mysql不是内部或外部命令的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • DBeaver连接MySQL提示"Public Key Retrieval is not allowed"问题解决方式

    DBeaver连接MySQL提示"Public Key Retrieval is

    dbeaver数据库连接工具,可以支持几乎所有的主流数据库.mysql,oracle.sqlserver,db2 等等,这篇文章主要给大家介绍了关于DBeaver连接MySQL提示"Public Key Retrieval is not allowed"问题的解决方式,需要的朋友可以参考下
    2023-10-10
  • Navicat 远程连接 MySQL实现步骤解析

    Navicat 远程连接 MySQL实现步骤解析

    这篇文章主要介绍了Navicat 远程连接 MySQL实现步骤解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • MySQL中@i:=@i+1表达式用法详解

    MySQL中@i:=@i+1表达式用法详解

    这篇文章主要给大家介绍了关于MySQL中@i:=@i+1表达式用法的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者使用mysql具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 深入解析半同步与异步的MySQL主从复制配置

    深入解析半同步与异步的MySQL主从复制配置

    这篇文章主要介绍了半同步与异步的MySQL主从复制配置,包括不同的连接方案的讨论,需要的朋友可以参考下
    2015-12-12
  • mysql 模糊搜索的方法介绍

    mysql 模糊搜索的方法介绍

    本文将提供两种方法,第一种最土的方法:使用like语句第二种用全文索引,接下来将为你详细介绍
    2012-11-11
  • mysql 5.7更改数据库的数据存储位置的解决方法

    mysql 5.7更改数据库的数据存储位置的解决方法

    随着MySQL数据库存储的数据逐渐变大,已经将原来的存储数据的空间占满了,导致mysql已经链接不上了。所以要给存放的数据换个地方,下面小编给大家分享mysql 5.7更改数据库的数据存储位置的解决方法,一起看看吧
    2017-04-04

最新评论