美文网首页
mysql索引,锁机制,主从同步,日志分析

mysql索引,锁机制,主从同步,日志分析

作者: John13 | 来源:发表于2018-09-06 16:36 被阅读0次

    mysql架构

    mysql学习

    MySQL系列(一)---基础知识大总结 --- 棒棒的!
    MySQL系列(三)---索引
    MySQL系列(四)---引擎
    『浅入浅出』MySQL 和 InnoDB --- 赞
    MySQL - 一次锁表排查
    ---很棒排查流程

    MySQL深入浅出(一):SQL基础、数据类型、运算符
    MySQL深入浅出(二):索引的设计原则、SQL优化、MySQL日志、备份与恢复
    【MySQL】mysql死锁以及死锁日志分析
    【MySQL】Mysql锁机制简介
    我必须得告诉大家的MySQL优化原理

    索引

    1、MySQL学习之——索引(普通索引、唯一索引、全文索引、索引匹配原则、索引命中等)
    2、MySQL索引设计背后的数据结构及算法详解
    3、MySQL索引背后的数据结构及算法原理 -----棒棒的!
    4、剖析Mysql的InnoDB索引
    5、MySQL InnoDB索引介绍及优化 -----棒棒的!
    6、理解MySQL——索引与优化
    7、InnoDB 存储引擎体系架构
    8、[MySQL FAQ]系列 -- 新手必看:一步到位之InnoDB
    9、 数据库SQL优化大总结之 百万级数据库优化方案
    10、MySQL 优化(一)
    11、我不得不告诉大家的MySQL优化“套路”
    12、mysql主键索引与非主键索引区别 --- 很棒
    13、MySQL 索引优化全攻略 --查询策略参数解析
    14、MySQL 覆盖索引 --覆盖索引很好
    15、mysql高效索引之覆盖索引
    16、MySQL使用全文索引(fulltext index) --全文索引
    17、项目中常用的19条MySQL优化 --不错
    18、由 B-/B+树看 MySQL索引结构
    19、平衡二叉树、B树、B+树、B*树 理解其中一种你就都明白了

    数据库锁,事务实现

    1、数据库:Mysql中“select ... for update”排他锁分析
    2、数据库的锁机制
    3、mysql】细说 数据库隔离级别 及实现
    4、MySQL事务隔离级别的实现原理
    5、MVCC 原理探究及 MySQL 源码实现分析 -----棒棒的!
    6、MySQL数据库InnoDB引擎行级锁锁定范围详解 -----棒棒的!
    7、 为什么开发人员必须要了解数据库锁?

    分布式,读写分离

    1、理解MySQL——复制(Replication)
    2、分布式系统理论(一):CAP定理
    3、mysql主从复制与读写分离
    4、Mysql主从同步的原理 --不错

    主从同步原理

    • 同步事件有3种形式
      statement:会将对数据库操作的sql语句写入到binlog中。
      row:会将每一条数据的变化写入到binlog中。
      mixed:statement与row的混合。Mysql决定什么时候写statement格式的,什么时候写row格式的binlog。

    • 在master机器上的操作
      当master上的数据发生改变的时候,该事件(insert、update、delete)变化会按照顺序写入到binlog中。
      binlog dump线程:
      当slave连接到master的时候,master机器会为slave开启binlog dump线程。
      当master 的 binlog发生变化的时候,binlog dump线程会通知slave,并将相应的binlog内容发送给slave。

    • 在slave机器上的操作
      当主从同步开启的时候,slave上会创建2个线程。
      I/O线程:该线程连接到master机器,master机器上的binlog dump线程会将binlog的内容发送给该I/O线程。该I/O线程接收到binlog内容后,再将内容写入到本地的relay log。
      SQL线程:该线程读取I/O线程写入的relay log。并且根据relay log的内容对slave数据库做相应的操作。

    mysql日志学习

    1、MySQL Binlog解析
    2、【原创】MySQL 之 slow log
    3、说说MySQL中的Redo log Undo log都在干啥
    4、MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结

    • MySQL Innodb中跟数据持久性、一致性有关的日志,有以下几种:
    • Bin Log:
      是mysql服务层产生的日志,常用来进行数据恢复、数据库复制,常见的mysql主从架构,就是采用slave同步master的binlog实现的
    • Redo Log:
      记录了数据操作在物理层面的修改,mysql中使用了大量缓存,修改操作时会直接修改内存,而不是立刻修改磁盘,事务进行中时会不断的产生redo log,在事务提交时进行一次flush操作,保存到磁盘中。当数据库或主机失效重启时,会根据redo log进行数据的恢复,如果redo log中有事务提交,则进行事务提交修改数据。
    • Undo Log: 除了记录redo log外,当进行数据修改时还会记录undo log,undo log用于数据的撤回操作,它记录了修改的反向操作,比如,插入对应删除,修改对应修改为原来的数据,通过undo log可以实现事务回滚,并且可以根据undo log回溯到某个特定的版本的数据,实现MVCC

    记录锁、间隙锁、临键锁

    MySQL的锁机制 - 记录锁、间隙锁、临键锁

    • 记录锁、间隙锁、临键锁,都属于排它锁;
    • 记录锁就是锁住一行记录;
    • 间隙锁只有在事务隔离级别 RR 中才会产生;
    • 唯一索引只有锁住多条记录或者一条不存在的记录的时候,才会产生间隙锁,指定给某条存在的记录加锁的时候,只会加记录锁,不会产生间隙锁;
    • 普通索引不管是锁住单条,还是多条记录,都会产生间隙锁;
    • 间隙锁会封锁该条记录相邻两个键之间的空白区域,防止其它事务在这个区域内插入、修改、删除数据,这是为了防止出现 幻读 现象;
    • 普通索引的间隙,优先以普通索引排序,然后再根据主键索引排序(多普通索引情况还未研究);
    • 事务级别是RC(读已提交)级别的话,间隙锁将会失效。

    相关文章

      网友评论

          本文标题:mysql索引,锁机制,主从同步,日志分析

          本文链接:https://www.haomeiwen.com/subject/pionwftx.html