跳到主要内容

MySQL 目录

一、MySQL 主要目录及文件

1、数据目录

show variables like '%datadir%';
/var/lib/mysql/

2、程序文件

ls /usr/bin/mysql*
ls /usr/sbin/mysql*

3、配置文件

my.cnf
/usr/share/mysql-8.0

二、数据库与文件的关系

常用的存储引擎:InnoDBMyISAM

查看数据库

show databases;

在 MySQL 中,一个数据库对应一个文件夹。

1、MySQL

  • 用户
  • 权限
  • 存储过程、事件的定义信息
  • 日志信息
  • 帮助信息
  • 时区信息

2、information_schema

3、sys

4、performance_schema

三、InnoDBMyISAM 存储引擎

1、MySQL5.7 InnoDB

MySQL5.7 中,表结构放在 .frm 文件中,数据默认放在 .ibd 中。也可以放在文件 ibdata1 中。

ibdata1 称为系统表空间。默认大小 12M。当随着数据量增大时,文件大小会自动扩容。

.ibd 文件称为独立表空间。

db.opt : 主要用来存储当前数据库的默认字符集和字符检验规则的。在 MySQL8.0 中,这些是放在 .ibd 文件中的。

[server]
# 0:代表使用系统表空间,1:代表使用独立表空间。
innodb_file_per_table=0

2、MySQL8 InnoDB

3、MyISAM

  • .frm 文件存储表的定义
  • .MYD (MYData)存储数据
  • .MYI (MYIndex)存储索引

4、InnoDBMyISAM 的区别

#MySQL #interview

  • InnoDB 支持事务,MyISAM 不支持事务。所以 InnoDB 适合频繁修改以及涉及到安全性较高的应用,MyISAM 适合查询以及插入为主的应用。
  • InnoDB 支持外键,MyISAM 不支持外键。
  • InnoDB 不支持 fulltext 类型的索引。
  • InnoDB 不保存表的行数,MyISAM 保存整表的行数。在进行不到条件的count(*) 时,MyISAM 的速度快。带 where 条件时,两者差不多。
  • 对于自增长字段,InnoDB 必须是索引字段。在 MyISAM 中可以是联合索引字段。
  • 清空表时,InnoDB 是一行一行删除,效率较慢,MyISAM 会重建表。
  • InnoDB 支持行锁,但在某些情况下会锁整表。例如(update table set a=1 where user like '%lee%';)
  • MyISAM 的索引和数据是分开的,且索引是压缩的。InnoDB 索引和数据是放在一起的,没有压缩。
  • MyISAM 缓存在内存的是索引,不是数据。而 InnoDB 缓存在内存的是数据,相对来说,服务器内存越大,InnoDB 发挥的优势越大。

四、MySQL5.7MySQL8.0.ibd 文件格式有什么区别?

通过 ibd2sdi 可以解析 .ibd 文件。

which ibd2sdi

解析语句

ibd2sdi --dump-file=emp.txt emp.ibd