第十八周

2021/4/11 18:28:09

本文主要是介绍第十八周,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

 

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



这篇关于第十八周的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程