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自增列解析(Auto_increment)

    MySQL自增列解析(Auto_increment)

    MySQL数据库为列提供了一种自增属性,本文主要介绍了MySQL自增列解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-09-09
  • Mysql查询优化的一些实用方法总结

    Mysql查询优化的一些实用方法总结

    对于MySQL查询语句来说,效率是最重要的,下面这篇文章主要给大家介绍了关于Mysql查询优化的一些实用方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • MySQL校对规则(COLLATION)的具体使用

    MySQL校对规则(COLLATION)的具体使用

    本文主要介绍了MySQL校对规则(COLLATION)的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-08-08
  • MySQL重复数据提取最新一条技术方法详解

    MySQL重复数据提取最新一条技术方法详解

    在MySQL数据库中清除重复数据是一项常见的任务,下面这篇文章主要给大家介绍了关于MySQL重复数据提取最新一条的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-07-07
  • 数据库中的SELECT语句逻辑执行顺序分析

    数据库中的SELECT语句逻辑执行顺序分析

    这篇文章主要介绍了数据库中的SELECT语句逻辑执行顺序分析,并列出了一些例子,需要的朋友可以参考下
    2014-07-07
  • mysql开启远程连接(mysql开启远程访问)

    mysql开启远程连接(mysql开启远程访问)

    开启MYSQL远程连接权限的方法,大家参考使用吧
    2013-12-12
  • MySQL中having关键字详解以及与where的区别

    MySQL中having关键字详解以及与where的区别

    在MySQL中HAVING和WHERE是用于过滤数据的两个重要的关键字,它们在查询语句中的位置和功能有所不同,这篇文章主要给大家介绍了关于MySQL中having关键字详解以及与where区别的相关资料,需要的朋友可以参考下
    2024-07-07
  • MySQL内连接和外连接及七种SQL JOINS的实现

    MySQL内连接和外连接及七种SQL JOINS的实现

    这篇文章主要介绍了Mysql内连接和外连接的区别以及七种SQL Joins的实现,相信看完这篇文章你对SQL内外连接的多表查询就足够理解了,需要的朋友可以参考下
    2023-03-03
  • 解析如何使用Zend Framework 连接数据库

    解析如何使用Zend Framework 连接数据库

    本篇文章是对如何使用Zend Framework 连接数据库的方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MYSQL如何查看进程和kill进程

    MYSQL如何查看进程和kill进程

    这篇文章主要介绍了MYSQL如何查看进程和kill进程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论