第十八周
作者:互联网
1、总结mysql常见的存储引擎以及特点。
mysql常用的存储引擎MyISAM和InnoDB
MyISAM引擎特点
- 不支持事务,事物:数据的一致性,一个或多个动作组合而成,原子性
- 表级锁定
- 读写相互阻塞,写入不能读,读时不能写
- 只缓存索引
- 不支持外键约束
- 不支持聚簇索引
- 读取数据较快,占用资源较少
- 不支持MVCC(多版本并发控制机制)高并发
- 崩溃恢复性较差
- MySQL5.5.5前默认的数据库引擎
InnoDB引擎特点
- 行级锁
- 支持事务,适合处理大量短期事务
- 读写阻塞与事务隔离级别相关
- 可缓存数据和索引
- 支持聚簇索引
- 崩溃恢复性更好
- 支持MVCC高并发
- 从MySQL5.5后支持全文索引
- 从MySQL5.5.5开始为默认的数据库引擎
2、总结MySQL查询缓存优化总结。
1.首先查看命中率是否解释,如果不接受就下一步。
2.判断是否大部分查询使不可缓存,检查query_cache_limit是否够大,单个查询是否超过限定的大小,如果是就增加改变量的值,如果不是就继续下一步。
3.判断是否发生很多验证工作,如果是再检查缓存是否碎片化。
- 如果是的话就减小query_cache_min_res_unit变量的的值,来减少碎片。
- 如果不是碎片化问题,可能因为内存过低而发生的修整工作,是的话就增加query_cache_size变量值,增加总 缓存大小,不是的话判断是否有很多新语句?是的话说明,负载并适合缓存,语句需要优化。
4.检查缓存是否启动,没有启动则启动缓存,,
3、MySQL日志各类总结。
事物日志:transaction log
- 事物日志:记录事务信息,实现undo,redo等故障恢复功能
错误日志
- mysqld启动和关闭过程中输出的事件信息
- mysqld运行中产生的错误信息
- event scheduler运行一个event时产生的日志信息
- 在主从复制架构中的从服务器上启动从服务器线程时产生的信息
错误文件路径
- SHOW GLOBAL VARIABLES LIKE 'log_error';
通用日志
- 通用日志:记录对数据库的通用操作,包括:错误的SQL语句
- 通用日志可以保存在:file(默认值)或 table(mysql.general_log表)
通用日志相关设置
general_log=ON|OFF #开关
general_log_file=HOSTNAME.log #日志名称
log_output=TABLE|FILE|NONE #格式,table格式,写在mysql中,不写在操作系统中,general_log_file该选项就不起作用
慢查询日志
- 慢查询日志:记录执行查询时长超出指定时长的操作
慢查询相关变量
slow_query_log=ON|OFF #开启或关闭慢查询,支持全局和会话,只有全局设置才会生成慢查询文件
long_query_time=N #慢查询的阀值,单位秒
slow_query_log_file=HOSTNAME-slow.log #慢查询日志文件
log_slow_filter = admin,filesort,filesort_on_disk,full_join,full_scan,
query_cache,query_cache_miss,tmp_table,tmp_table_on_disk
#上述查询类型且查询时长超过long_query_time,则记录日志
log_queries_not_using_indexes=ON #不使用索引或使用全索引扫描,不论是否达到慢查询阀值的语句是否记录日志,默认OFF,即不记录
log_slow_rate_limit = 1 #多少次查询才记录,mariadb特有
log_slow_verbosity= Query_plan,explain #记录内容
log_slow_queries = OFF #同slow_query_log,MariaDB 10.0/MySQL 5.6.1 版后已删除
慢查询分析工具
mysqldumpslow -s c -t 10 /data/mysql/slow.log
二进制日志
- 记录导致数据改变或潜在导致数据改变的SQL语句
- 记录已提交的日志
- 不依赖于存储引擎类型
功能:通过“重放”日志文件中的事件来生成数据副本
注意:建议二进制日志和数据文件分开存放
二进制日志文件的构成
有两类文件
1.日志文件:mysql|mariadb-bin.文件名后缀,二进制格式,如: mariadb-bin.000001
2.索引文件:mysql|mariadb-bin.index,文本格式
二进制日志相关的服务器变量:
sql_log_bin=ON|OFF: #是否记录二进制日志,默认ON,支持动态修改,系统变量,而非服务器选项
log_bin=/PATH/BIN_LOG_FILE: #指定文件位置;默认OFF,表示不启用二进制日志功能,上述两项都开启才可以
binlog_format=STATEMENT|ROW|MIXED:#二进制日志记录的格式,默认STATEMENT
max_binlog_size=1073741824: #单个二进制日志文件的最大体积,到达最大值会自动滚动,默认为1G
#说明:文件达到上限时的大小未必为指定的精确值
binlog_cache_size=4m #此变量确定在每次事务中保存二进制日志更改记录的缓存的大小(每次连接)
max_binlog_cache_size=512m #限制用于缓存多事务查询的字节大小。
sync_binlog=1|0: #设定是否启动二进制日志即时同步磁盘功能,默认0,由操作系统负责同步日志到磁盘
expire_logs_days=N: #二进制日志可以自动删除的天数。 默认为0,即不自动删除
二进制日志相关配置
查看mariadb自行管理使用中的二进制日志文件列表,及大小
SHOW {BINARY | MASTER} LOGS
查看使用中的二进制日志文件
SHOW MASTER STATUS
在线查看二进制文件中的指定内容
SHOW BINLOG EVENTS [IN 'log_name'] [FROM pos] [LIMIT [offset,] row_count]
范例:
show binlog events in 'mysql-bin.000001' from 6516 limit 2,3
mysqlbinlog:二进制日志的客户端命令工具,支持离线查看二进制日志
命令格式:
mysqlbinlog [OPTIONS] log_file…
--start-position=# 指定开始位置
--stop-position=#
--start-datetime= #时间格式:YYYY-MM-DD hh:mm:ss
--stop-datetime=
--base64-output[=name]
-v -vvv
范例:
mysqlbinlog --start-position=678 --stop-position=752 /var/lib/mysql/binlog.000003 -v
mysqlbinlog --start-datetime="2018-01-30 20:30:10" --stop-datetime="2018-01-30 20:35:22" mariadb-bin.000003 -vvv
标签:缓存,log,第十八,二进制,查询,query,日志 来源: https://blog.csdn.net/hfhshwj/article/details/115603049