MySQL架构
大约 2 分钟
日志文件(顺序 IO)
错误日志(errorlog)
mysql> show variables like 'log_%'; # 查看日志配置 cat /etc/my.cnf # 可以直接定义为文件路径,也可以为ON|OFF log_error=/var/log/mysqld.log # 只能使用1|0来定义开关启动,默认是启动的 log_warings=1
二进制日志(bin log)
# 默认是关闭的,需要通过以下配置进行开启。 # binlog记录了数据库所有的DDL语句和DML语句,但不包括select语句内容, # binlog主要用于实现mysql主从复制、数据备份、数据恢复。 log-bin=mysql-bin
通用查询日志(general query log)
mysql> show global variables like 'general_log'; # 由于通用查询日志会记录用户的所有操作,其中还包含增删查改等信息,在并发操作大的环境下会性能,建议不要开启查询日志。 # 启动开关 默认是关闭 general_log={ON|OFF} # 日志文件变量,而general_log_file如果没有指定,默认名是host_name.log general_log_file=/PATH/TO/file # 记录类型 log_output={TABLE|FILE|NONE}
慢查询日志(slow query log)
# 开启慢查询日志,默认是关闭的。 slow_query_log=ON # 慢查询的阈值 long_query_time=10 # 日志记录文件如果没有给出file_name值, 默认为主机名,后缀为-slow.log。如果给出了文件名, 但不是绝对路径名,文件则写入数据目录。 slow_query_log_file= file_name
查询缓存(8.0 之前)
# 需要修改配 my.cnf 置文件,在文件中增加如下内容开启缓存:
query_cache_type=2
# `0`或`OFF` :会禁止使用缓存。默认选项。
# `1`或`ON` :将启用缓存,但以 SELECT SQL_NO_CACHE 开头的语句除外。
# `2`或`DEMAND` :只缓存以 SELECT SQL_CACHE 开头的语句。
-- 查看是否开启缓存,默认是关闭的
show variables like 'query_cache_type';
-- 查询缓存命中次数
SHOW STATUS LIKE 'Qcache_hits';
-- 清理查询缓存内存碎片。
FLUSH QUERY CACHE;
-- 从查询缓存中移出所有查询。
RESET QUERY CACHE;
-- 关闭所有打开的表,同时该操作将会清空查询缓存中的内容。
FLUSH TABLES;
InnoDB 存储
nnoDB 存储引擎逻辑存储结构可分为五级:表空间 > 段 > 区 > 页(默认 16KB) > 行。