06 2018 档案
摘要:Ⅰ、iostat安装 Ⅱ、玩一手 2.1 cpu指标 | |说明| |: :|: :| |%user|CPU处在用户模式下的时间百分比| |%nice|CPU处在带NICE值的用户模式下的时间百分比| |%system|CPU处在系统模式下的时间百分比| |%iowait|CPU等待IO完成时间的百
阅读全文
摘要:对于单条语句,explain看下key,加个索引 多个条件,加复合索引 where a = ? order by b 加(a,b)的复合索引 上面都是比较基本的,这篇我们分析一些复杂的情况——join的算法 如下两张表做join Ⅰ、nested_loop join 1.1、simple neste
阅读全文
摘要:声明 5.6中desc看不到show warnings,也看不到filtered列 5.7的desc等于5.6的desc extended,这样可以看show warnings,5.6中filtered列非常不准,5.7好一些 先看一个执行计划 Ⅰ、展开分析每个字段 id列——表示sql执行的顺序
阅读全文
摘要:Ⅰ、全文索引 搜索引擎的实现核心技术,搜索类似where col like '%xxx%';关键字可以出现再某个列任何位置 这种查询条件,B+ tree索引是无法使用的。如果col上创建了索引,因为排序过了,所以能用到索引,但是对其中某个关键字是无法排序的 首先需要通过分词进行各词的提取,把各个分词
阅读全文
摘要:今儿啊,洲际哥给大家带来两个8.0的新特性 Ⅰ、不可见索引 schema_unused_indexes表,这个表有三个列分别是object_schema、object_name、index_name 对于这些索引,通常来说,就是删掉,但是直接删除有问题啊,可能现在没用到,过段时间要用啊 但在MySQ
阅读全文
摘要:Ⅰ、索引的另一个作用 B+ tree 是排序过的,对排序过的列进行查询也会非常快 看到没走索引,依赖sort_buffer_size来排序 加一个索引 会发现走了创建的索引,extra也是null了,根本就不用排序了,用不到排序内存了,也就是说不用调大sort_buffer_size了 综上:索引的
阅读全文
摘要:Ⅰ、如何使用B+ tree索引 看key值,表示这条sql语句的执行计划使用了哪一个索引,没走索引,key值就是NULL,这时候就会扫描全部数据 线上删除索引不需要在线工具,只是将索引所占的空间释放掉,很快,不需要pt osc Ⅱ、线上调优 大部分都是看慢查询日志,找到慢sql,复制出来去命令行里e
阅读全文
摘要:Ⅰ、堆表 数据存放在数据里面,索引存放在索引里 堆就是无序数据的集合,索引就是将数据变得有序,在索引中键值有序,数据还是无序的 堆表中,主键索引和普通索引一样的,叶子节点存放的是指向堆表中数据的指针(可以是一个页编号加偏移量),指向物理地址,没有回表的说法 堆表中,主键和普通索引基本上没区别,和非空
阅读全文
摘要:Ⅰ、磁盘的访问模式 磁盘性能和磁盘的访问模式有关 Sequential access Random access 上面说的顺序和随机是逻辑上的,大多时候做不到完全顺序 数据库不是连续块的申请空间,是一次申请固定块大小的空间,在这一个块里面的数据是连续的 Ⅱ、HDD VS SSD 随机访问的性能叫IO
阅读全文
摘要:Ⅰ、背景 优化sql的过程中发现表上少一个索引,直接加一个?会不会hang住?不加?sql又跑不好,由此引出一个问题——ddl操作怎么做? Ⅱ、闲扯三两句 5.6版本之前的MySQL创建索引不支持online,会对表加一个读锁(S lock),只能select,insert会阻塞,5.6开始,MyS
阅读全文
摘要:Ⅰ、锁与并发控制 locking、concurrency、isolation、serializability这几个是同一个意思 1.1 并发访问控制的准则 第一准则:不出错 Concurrent execution should not cause application programs to m
阅读全文
摘要:Ⅰ、死锁的概念 两个或两个以上的事务在执行过程中,因争夺资源而造成的一种互相等待的现象 最常见:AB BA 稍微复杂:A B B C C A形成如下图的循环 tips: lock wait time out 和 dead lock不是一回事 1.1 死锁的处理机制 锁超时 innodb_lock_w
阅读全文
摘要:Ⅰ、隐式锁vs显示锁 session1: (root@localhost) [test] show variables like 'tx_isolation'; + + + | Variable_name | Value | + + + | tx_isolation | READ COMMITTED
阅读全文
摘要:Ⅰ、看一个幻读的模型 表a中有4条记录1,3,5,7,开两个session 测试一: 测试二: 按道理如果事务隔离级别为rr,那一个事务提交了,对另一个事务不可见,解决不可重复读,这样看测试二是合理的, 那为什么,测试二session1一开始select了一把,session2里面事务提交了,ses
阅读全文
摘要:Ⅰ、上节回顾 session1: session2: session1: (root@localhost) [(none)] show engine innodb status\G ... MySQL thread id 1087, OS thread handle 139830446065408,
阅读全文
摘要:Ⅰ、InnoDB锁算法的介绍 首先明确一点,锁锁住的是什么?锁锁住的是索引 Record Lock 单个行记录上的锁 Gap Lock 锁定一个范围,但不包含记录本身 Next key Lock Gap Lock + Record Lock 锁定一个范围,并且锁定记录本身 Ⅱ、模拟加锁场景 一般来说
阅读全文
摘要:Ⅰ、什么是索引 索引是一种提高数据库查询效率的数据结构(我们说的一般都是B+ tree索引) (root@localhost) [test] show create table l \G 1. row Table: l Create Table: CREATE TABLE ( int(11) NOT
阅读全文
摘要:Ⅰ、总览 S行级共享锁 lock in share mode X行级排它锁 增删改 IS意向共享锁 IX意向排他锁 AI自增锁 Ⅱ、锁之间的兼容性 |兼|X|IX|S|IS| |: :|: :|: :|: :|: :| |X|×|×|×|×| |IX|×|√|×|√| |S|×|×|√|√| |IS
阅读全文
摘要:Ⅰ、 show engine innodb status\G 1.1 实力分析一波 锁介绍的那篇中已经提到了这个命令,现在我们开一个参数,更细致的分析一下这个命令 (root@localhost) [test] begin; Query OK, 0 rows affected (0.00 sec)
阅读全文
浙公网安备 33010602011771号