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
二、数据库与文件的关系
常用的存储引擎:InnoDB
、 MyISAM
查看数据库
show databases;
在 MySQL 中,一个数据库对应一个文件夹。
1、MySQL
- 用户
- 权限
- 存储过程、事件的定义信息
- 日志信息
- 帮助信息
- 时区信息
2、information_schema
3、sys
4、performance_schema
三、InnoDB
、MyISAM
存储引擎
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、InnoDB
与 MyISAM
的区别
#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.7
和 MySQL8.0
中 .ibd
文件格式有什么区别?
通过 ibd2sdi
可以解析 .ibd
文件。
which ibd2sdi
解析语句
ibd2sdi --dump-file=emp.txt emp.ibd