导图社区 MYSQL调优
MYSQL调优MYSQL调优、性能更好,全内存访问可以轻易跑到 200W QPS,I/O 极端高负载场景跑到 16W QPS、认证插件更新,关系到连接数据库的客户端也必须要支持8。
习惯就是人们长时间养成的生活方式和行为方式,它决定了我们做事的基本方法,有好的习惯的人做事都会有好的结果,而坏习惯的人往往难以成事,因而,人们常说习惯决定命运。这里总结了7个习惯帮助大家成为高效人士。
认知获取的概念 知道一些概念、过程、信息、现象、方法,知道它们大概可以用来解决什么问题,而这些东西过去你都不知道。 结论:认知获取是学习的开始,而非结束。 比如当朋友给我们介绍一位新朋友时,朋友说,这位朋友性格活泼开朗。
国标重点水污染源运维工作日常事项,整理了仪器设置、运维、维修检查的内容,一起来看吧!
社区模板帮助中心,点此进入>>
论语孔子简单思维导图
《傅雷家书》思维导图
《童年》读书笔记
《茶馆》思维导图
《朝花夕拾》篇目思维导图
《昆虫记》思维导图
《安徒生童话》思维导图
《鲁滨逊漂流记》读书笔记
《这样读书就够了》读书笔记
妈妈必读:一张0-1岁孩子认知发展的精确时间表
MySql调优
数据库基础
三范式
反范式设计
字段的设计优化
索引
聚簇索引
二级索引
联合索引
覆盖索引
前缀索引
后缀索引(设计实现)
三星索引设计
1* 相关记录放一起
2* 排序星
3* 宽索引星
自适应Hash索引
查询优化
慢查询
慢查询配置
mysql执行计划
慢查询调优
explain select ...
高性能索引使用策略
不在索引上做操作
全值匹配
最左前缀法则
like的使用
范围条件放最后
or关键字使用
排序要当心
desc,asc不混用
尽可能按主键顺序插入行
优化limit分页
优化count查询
关于null的特殊
事务和事务隔离级别
事务特性
原子性
一致性
隔离性
持久性
事务并发
脏读
不可重复读
关注的修改,数据的不一致
幻读
关注的新增,数据的多少
事务问题严重排行
脏读>不可重复读>幻读
事务的隔离级别
未提交读
已提交读
可重复读
mysql默认隔离级别
保存点
事务语法和注意事项
隐式提交
DDL语句(create,alter,drop)
另一个事务开始begin,会隐式提交之前的事务
可串行化
不会考虑,变成单线程
MVCC(读)与版本链
ReadView
innoDB的查询概念
含义:多版本并发控制,主要提交数据库的并发性能,链式存档
trx_id 事务id
roll_ptr回滚指针
解决事务隔离问题
Repeatable read
子主题1
锁
模式
共享锁
排他锁
意向锁
说明:解决效率问题,只有表锁,并且无法自己添加,都是由mysql判断
锁定读
读取时加锁,阻止其他事务的修改
共享锁(Share Locks)
select * from table lock in share mode
独占锁(Exclusive Locks)
select * from table for update
锁定写
insert
update
1. 要去改的记录,所在的存储空间 修改前后没有发生变化--获取x锁
2. 要去改的记录,所在的存储空间 修改前后发生变化--B+树定位到数据位置,获取x锁,该记录彻底删除,插入一条新的记录,在获取排他锁
3.修改,先delete,再insert,按照delete和insert的规则来定
delete
先获取锁定读,获取排他锁
锁的粒度
非InnoDB都是表锁,其他引擎同一时刻只允许一个会话对表进行写操作
innodb引擎
行锁
索引上的锁才有可能是行锁
非索引上的锁都是表锁
执行计划中真正使用上了索引,才会使用行锁
全表扫描时肯定是表锁
表锁(基本不用)
lock tables xxx read; 共享
lock tables xxx write;排他
alter drop table DDL语句,触发排他锁
间隙锁(防止幻读)
Gap locks
在索引的前后加锁
死锁
概念:两个以上的进程(事务)竞争资源时候阻塞的现象
没有外力 无法推进,mysql中有处理方法,检测到死锁的时候会重启该阻塞的事务
InnoDB引擎
特性
双写机制
Buffer Pool
MYSQL8
新特性
性能更好,全内存访问可以轻易跑到 200W QPS,I/O 极端高负载场景跑到 16W QPS
新功能
账户与安全
需要分开执行用户创建和权限
认证插件更新,关系到连接数据库的客户端也必须要支持8
密码管理
索引增强
隐藏索引
不可见索引(等于是一个标记,可以随时软删除),使用场景软删除,灰度发布
降序索引
函数索引
通用表表达式
窗口函数
原子DDL操作,JSON增强以及其他
底层原理
mysql体系架构
历史
分支
drizzle
mariraDB
percona server
替代
postgres
sqlite
连接池
管理工具和服务
SQL接口
解析器
缓存器
插件式引擎
文件和日志系统
执行原理
单表访问索引合并
必须是=值查询,union 连接
连接查询
驱动表
成本计算
I/O(1.0)
cpu成本(0.2)
排序,检测,数据排序
单表查询成本
例子:查询记录39条,用到索引,非覆盖索引(55)
cpu1:39*0.2+0.01 = 7.81
I/O:39*1.0+1.0=40
cpu2(非覆盖索引需要回表):39*0.2=7.8
连接查询成本
拆分
全表扫描方式,计算I/O和CPU成本按照单表计算规则来
连接表
扇出值,连接查询的主键id能扇出多少值(范围区间),很难计算
连接成本
单次访问驱动表的成本+驱动表扇出数*单次访问被驱动表的成本
左连接/右连接计算方法相同
内连接计算方式复杂,因为驱动表是可以互换的
多表连接成本
mysql查询重写规则
移除不必要的括号
常量传递
移除无用的条件 比如 where 1=1
表达式计算
外连接消除(针对内连接)
子查询优化
对in 子查询优化