随笔分类 -  MySQL

摘要:Ⅰ、背景 优化sql的过程中发现表上少一个索引,直接加一个?会不会hang住?不加?sql又跑不好,由此引出一个问题——ddl操作怎么做? Ⅱ、闲扯三两句 5.6版本之前的MySQL创建索引不支持online,会对表加一个读锁(S lock),只能select,insert会阻塞,5.6开始,MyS 阅读全文
posted @ 2018-06-20 01:12 91洲际哥 阅读(796) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、锁与并发控制 locking、concurrency、isolation、serializability这几个是同一个意思 1.1 并发访问控制的准则 第一准则:不出错 Concurrent execution should not cause application programs to m 阅读全文
posted @ 2018-06-20 00:55 91洲际哥 阅读(294) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、死锁的概念 两个或两个以上的事务在执行过程中,因争夺资源而造成的一种互相等待的现象 最常见:AB BA 稍微复杂:A B B C C A形成如下图的循环 tips: lock wait time out 和 dead lock不是一回事 1.1 死锁的处理机制 锁超时 innodb_lock_w 阅读全文
posted @ 2018-06-14 03:08 91洲际哥 阅读(891) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、隐式锁vs显示锁 session1: (root@localhost) [test] show variables like 'tx_isolation'; + + + | Variable_name | Value | + + + | tx_isolation | READ COMMITTED 阅读全文
posted @ 2018-06-14 03:03 91洲际哥 阅读(425) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、看一个幻读的模型 表a中有4条记录1,3,5,7,开两个session 测试一: 测试二: 按道理如果事务隔离级别为rr,那一个事务提交了,对另一个事务不可见,解决不可重复读,这样看测试二是合理的, 那为什么,测试二session1一开始select了一把,session2里面事务提交了,ses 阅读全文
posted @ 2018-06-14 03:01 91洲际哥 阅读(417) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、上节回顾 session1: session2: session1: (root@localhost) [(none)] show engine innodb status\G ... MySQL thread id 1087, OS thread handle 139830446065408, 阅读全文
posted @ 2018-06-14 01:23 91洲际哥 阅读(393) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、InnoDB锁算法的介绍 首先明确一点,锁锁住的是什么?锁锁住的是索引 Record Lock 单个行记录上的锁 Gap Lock 锁定一个范围,但不包含记录本身 Next key Lock Gap Lock + Record Lock 锁定一个范围,并且锁定记录本身 Ⅱ、模拟加锁场景 一般来说 阅读全文
posted @ 2018-06-12 23:24 91洲际哥 阅读(447) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、什么是索引 索引是一种提高数据库查询效率的数据结构(我们说的一般都是B+ tree索引) (root@localhost) [test] show create table l \G 1. row Table: l Create Table: CREATE TABLE ( int(11) NOT 阅读全文
posted @ 2018-06-07 11:40 91洲际哥 阅读(402) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、总览 S行级共享锁 lock in share mode X行级排它锁 增删改 IS意向共享锁 IX意向排他锁 AI自增锁 Ⅱ、锁之间的兼容性 |兼|X|IX|S|IS| |: :|: :|: :|: :|: :| |X|×|×|×|×| |IX|×|√|×|√| |S|×|×|√|√| |IS 阅读全文
posted @ 2018-06-04 15:45 91洲际哥 阅读(367) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、 show engine innodb status\G 1.1 实力分析一波 锁介绍的那篇中已经提到了这个命令,现在我们开一个参数,更细致的分析一下这个命令 (root@localhost) [test] begin; Query OK, 0 rows affected (0.00 sec) 阅读全文
posted @ 2018-06-03 00:56 91洲际哥 阅读(584) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、锁的概念 1.1 锁的作用 对共享资源进行并发访问 提供数据的完整性和一致性 1.2 锁的实现 每个数据库的锁的实现完全不同 MyISAM表锁 InnoDB行级锁 Like Oracle???不一样 Microsoft SQL Server 行级锁with锁升级 行锁超过5000个就升级为行级锁 阅读全文
posted @ 2018-05-31 20:20 91洲际哥 阅读(509) 评论(0) 推荐(0) 编辑
摘要:Prometheus越来越火了,大家都在玩,方方面面都不错! Ⅰ、核心组件介绍 Prometheus Server 获取、存储监控数据并对外提供查询,针对监控目标有两种方式(配置文件静态管理和服务发现动态管理) Exporters Exporter将监控数据采集的端点通过HTTP服务的形式暴露给Pr 阅读全文
posted @ 2018-05-29 11:01 91洲际哥 阅读(389) 评论(0) 推荐(0) 编辑
摘要:undo log记录的内容是逻辑的(基于每条记录),redo log记录的是物理的(基于page),rollback是逻辑上的回滚 Ⅰ、UNDO对象 从底层来看非常复杂 |对象|说明| |: :|: :| |rollback segment|回滚段| |undo log segment undo|u 阅读全文
posted @ 2018-05-22 00:28 91洲际哥 阅读(461) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、binlog与redo的一致性(原子) 由内部分布式事务保证 我们先来了解下,当一个commit敲下后,内部会发生什么? |步骤|操作| |: :|: :| |step1|InnoDB做prepare redo log(fsync)| |step2|Sever层写binlog(fsync)| | 阅读全文
posted @ 2018-05-21 02:13 91洲际哥 阅读(513) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、事务的实现 这里我们先抛出答案,通过答案再展开分析 |特性|实现| |: :|: :| |A(原子性)|redo| |C(一致性)|undo| |I(隔离性)|lock| |D(持久性)|redo/undo| 本节针对redo展开分析 Ⅱ、redo详解 2.1 redo log buffer r 阅读全文
posted @ 2018-05-20 19:04 91洲际哥 阅读(520) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、事务概述 事务是一个程序的执行单元 事务由一组sql组成(可以是1条或者多条) tips: 一个事务可以有多条sql组成,tps是每秒的事务量,仅仅通过tps判断业务量高和低是不太准确的,如果事务里面sql比较多,即使tps比较低,那实际qps又是比较高的 Ⅱ、事务的特性 大家都知道事务的特性叫 阅读全文
posted @ 2018-05-20 02:44 91洲际哥 阅读(301) 评论(0) 推荐(0) 编辑
摘要:本人菜鸡一个,一份简单MySQL笔记送给大家,希望大家喜欢、(●'◡'●) Ⅰ、 数据备份与导入导出 [1.1、备份基本概念介绍][1] [1.2、mysqldump详解][2] [1.3、mydumper浅析][3] [1.4、MySQL物理备份基本操作][4] [1.5、了解mysqlpump工 阅读全文
posted @ 2018-05-19 23:14 91洲际哥 阅读(1851) 评论(3) 推荐(0) 编辑
摘要:Ⅰ、double write 目的:保证数据写入的可靠性 小知识: 什么是partial write? 16k的page只写入了4k,6k,8k,12k就断掉了的情况 corrupt的page就是page的header更新了但是trailer没更新 这种page不可以通过redo log进行恢复(通 阅读全文
posted @ 2018-05-05 01:08 91洲际哥 阅读(592) 评论(0) 推荐(1) 编辑
摘要:Ⅰ、Checkpoint 1.1 checkpoint的作用 缩短数据库的恢复时间 缓冲池不够用时,将脏页刷到磁盘 重做日志不可用时,刷新脏页 1.2 展开分析 page被缓存在bp中,page在bp中和disk中不是时刻保持一致的(page修改一下就刷一次盘是不现实的,是通过checkpoint来 阅读全文
posted @ 2018-05-05 01:02 91洲际哥 阅读(1530) 评论(0) 推荐(0) 编辑
摘要:Ⅰ、看下所有后台线程 异步读写由下面两个参数控制 innodb_read_io_threads 不建议调整,读取基本上很少是异步,调大没太大意义 innodb_write_io_threads 可以调大一点,因为数据库写入都是异步的,默认是4,调成8或者16,特别是ssd的情况下 Ⅱ、脏页刷新 in 阅读全文
posted @ 2018-05-05 01:01 91洲际哥 阅读(406) 评论(0) 推荐(0) 编辑