• Mysql常见日志作用


     slow query log(慢查询日志)

    记录sql执行时间长的查询语句,应用场景:解决sql慢查询问题。

    找到慢查询日志是优化sql的第一步,然后可以通过explain获取慢sql的执行计划相关信息。

    show variables like "slow_query_log" 查看慢查询日志是否开启,默认关闭

    set globle_slow_query_log=on 开启命令

    set globle long_query_time=1 修改慢查询时间,默认为10

    show global status like '%Slow_queries%' 查看当前慢查询个数

    如何优化慢SQL?

    通过执行计划可以数据表的查询顺序,数据查询操作的操作类型,索引可以命中情况,索引实际命中情况等信息

    show profile /show profiles 可以展示SQL语句的资源使用情况,例如cpu使用,cpu上下文切换,io,内存使用等

    binlog(二进制日志)

    binlog记录MySQL数据库所有数据的更改情况,DDL,DML等,逻辑日志

    binlog格式:

    Statement模式:记录每一条sql(文件小111111111111111111,性能号,io压力小)

    Row模式(推荐):记录每一行的具体变更(准确性)

    Mixed模式:上述两种模式混合

    binlog作用用来做什么?

    主从复制:1.mysql将变化数据存储到binlog日志中2.从库连接主库3.从库向主库请求数据4.主库向从库发送binlog5.从库接收binlog将其写入自己的relay log中6.从库将relay log同步到数据本地

    canal底层依赖的也是binlog

    误删了数据库,binlog还可以数据恢复

    binlog刷盘时机:sync_binlog参数控制,取值范围0-N

    0:不强制要求,系统自行判断

    1:每次事务提交都要将binlog写入磁盘

    N:每N个事务,才将binlog写入磁盘

    redo log(重做日志) 物理日志

    保证事务的持久性,记录页的修改 表空间,数据页号,偏移量,具体修改数据

    事务提交时先将redolog 刷新到磁盘,这样就算数据库宕机,重启后也能恢复

    redolog采用循环写入的方式

    什么时候会出现数据丢失:

    1.redolog写入logbuffer但未写入pagecache中,数据库崩溃

    2.redolog写入pagecache但未写入磁盘中,操作系统崩溃

    为什么每次不直接刷盘呢?

    性能太差,innodb引擎页的大小为16kb,修改页只修改了几个字节的数据,一次刷盘需要把整个页都刷新到磁盘,而且,页可能不相邻,会随机io,而redo log是顺序io,且一条redolog记录只占几十个字节

    undo log(撤销日志)逻辑日志

    保证事务原子性。是逻辑日志,记录与操作相反的sql语句,当回滚时,执行逻辑sql

    MVCC的实现依赖于:隐藏字段,undo log ,Read View(快照读SQL执行时MVCC提取数据的依赖)

  • 相关阅读:
    mongoose 文件上传-表单形式
    Redis速学
    反超 PowerDesigner,这个国产数据库建模工具很强
    ASP.NET基于Web Mail收发系统设计与开发
    数据湖的概念、发展背景和价值
    Go中的错误处理
    大一html5期末大作业 :基于html实现非遗文化网页设计题材【传统文化木雕】7个页面
    greenplum数据库-锁
    保证数据库质量安全:从0开始的数据测试
    [附源码]java毕业设计朋辈帮扶系统
  • 原文地址:https://blog.csdn.net/bxndm/article/details/139449243