跳至主要內容

MySQL架构

知识库数据库MySQLMySQL大约 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) > 行。