基础架构

更新操作

日志模块

redo log 和 binlog

两阶段提交: prepare commit

事务隔离

读未提交:别人改数据的事务尚未提交,我在我的事务中也能读到。
读已提交:别人改数据的事务已经提交,我在我的事务中才能读到。
可重复读:别人改数据的事务已经提交,我在我的事务中也不去读。
串行:我的事务尚未提交,别人就别想改数据。
这4种隔离级别,并行性能依次降低,安全性依次提高。

索引

有一个主键列为ID的表,表中有字段k,并且在k上有索引。

主键索引的叶子节点存的是整行数据。在InnoDB里,主键索引也被称为聚簇索引(clustered index)。

非主键索引的叶子节点内容是主键的值。在InnoDB里,非主键索引也被称为二级索引(secondary index)。

  • 如果语句是select * from T where ID=500,即主键查询方式,则只需要搜索ID这棵B+树;
  • 如果语句是select * from T where k=5,即普通索引查询方式,则需要先搜索k索引树,得到ID的值为500,再到ID索引树搜索一次。这个过程称为回表。

1、覆盖索引:如果查询条件使用的是普通索引(或是联合索引的最左原则字段),查询结果是联合索引的字段或是主键,不用回表操作,直接返回结果,减少IO磁盘读写读取正行数据

2、最左前缀:联合索引的最左 N 个字段,也可以是字符串索引的最左 M 个字符
3、联合索引:根据创建联合索引的顺序,以最左原则进行where检索,比如(age,name)以age=1 或 age= 1 and name=‘张三’可以使用索引,单以name=‘张三’ 不会使用索引,考虑到存储空间的问题,还请根据业务需求,将查找频繁的数据进行靠左创建索引。
4、索引下推:like 'hello%’and age >10 检索,MySQL5.6版本之前,会对匹配的数据进行回表查询。5.6版本后,会先过滤掉age<10的数据,再进行回表查询,减少回表率,提升检索速度

数据库锁

全局锁

表锁

行锁

策略:

  • 一种策略是,直接进入等待,直到超时。这个超时时间可以通过参数innodb_lock_wait_timeout来设置。
  • 另一种策略是,发起死锁检测,发现死锁后,主动回滚死锁链条中的某一个事务,让其他事务得以继续执行。将参数innodb_deadlock_detect设置为on,表示开启这个逻辑。

索引

对索引字段做函数操作,可能会破坏索引值的有序性,因此优化器就决定放弃走树搜索功能。

间隙锁在可重复读隔离级别下才有效,解决幻读

MySQL主备

在决定哪个表做驱动表的时候,应该是两个表按照各自的条件过滤,过滤完成之后,计算参与join的各个字段的总数据量,数据量小的那个表,就是“小表”,应该作为驱动表。

最新文章

  1. HTML是什么?如何使用?
  2. [Effective JavaScript 笔记]第66条:使用计数器来执行并行操作
  3. Cannot instantiate the type HttpClient问题
  4. 深入理解Java的接口和抽象类 _摘抄
  5. Jquery 中each循环嵌套的使用示例教程
  6. 9 个用于移动APP开发的顶级 JavaScript 框架
  7. day 10 字符编码和文件处理 细节整理
  8. ubuntu14.04 64位 安装H3C iNode客户端
  9. CUDA学习,使用shared memory实现Reverse Array
  10. 基于Metronic的Bootstrap开发框架--资产编码打印处理
  11. linux命令行下xlsx转换成pdf或csv的笔记
  12. FastDFS与springboot整合例子
  13. 100-days: sixteen
  14. Mybatis-Plus 实战完整学习笔记(十)------条件构造器核心用法大全(下)
  15. JAVA作业之两数的加减乘除
  16. 洛谷P3380 【模板】二逼平衡树(树套树,树状数组,线段树)
  17. RabbitMQ入门介绍
  18. C#的ThreadStart 和 Thread
  19. WPF自定义命令
  20. git学习(5)分支管理(续)

热门文章

  1. 网络安全实验室--SQL注入关
  2. line-height和height
  3. Linux内核入门到放弃-Ext2数据结构-《深入Linux内核架构》笔记
  4. PHP处理XML文档,没有CDATA部分数据处理
  5. Nowcoder217D msc的背包 背包、生成函数、组合
  6. iOS开发基础-九宫格坐标(1)
  7. 基于struts2、hibernate、spring、shiro、MySQL的项目开发
  8. zabbix异常信息修改已确认,为未确认
  9. red()、redinle()、redlines()三者之间的关系
  10. 【BZOJ5499】[2019省队联测]春节十二响(贪心)