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