随笔分类 - MySQL - 尚硅谷视频
尚硅谷MySQL视频的一些笔记
摘要:1. 什么是MVCC MVCC(Multiversion Concurrency Control),多版本并发控制,通过数据行的多个版本管理来实现数据库的并发控制,使得在事务隔离级别下执行一致性读有了保证。MVCC没有正式标准。 2. 快照读与当前读 快照读 又叫一致性读,读取的是快照数据。不加锁的
阅读全文
摘要:2. 并发事务访问相同记录的情况 2.1 读-读情况 读取操作并不会对记录有任何影响,所以允许这种情况的发生 2.2 写-写情况 对相同记录做出改动,在这种情况下会出现脏写情况,任何一种隔离级别都不允许这种情况的发生,所以多个未提交事务对一条记录做改动时,都需要排队执行,排队的过程是通过锁实现的。
阅读全文
摘要:事务的ACID特性是基于什么机制实现的 事务的隔离性是由锁机制实现的 而原子性、一致性、持久性由事务的redo和undo日志来保证的 redo日志,叫做重做日志,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。是存储引擎生成的日志,记录的是物理级别上的页修改操作,比如页号xxx,偏移
阅读全文
摘要:事务概述 事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样就可以保证已提交到数据库的修改不会因为系统崩溃而丢失 事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态 事务处理的原则:保证所有事务都作为一个工作单元
阅读全文
摘要:last_query_cost,查询使用的页数量,衡量执行计划的成本 定位执行慢的SQL:慢查询日志 慢查询日志,用于记录执行过程中,响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,默认值是10s 默认系统是没有开启慢查询日志的,因为开启之后会带来一定的性能影响
阅读全文
摘要:MySQL中的SQL执行流程 查询流程 查询缓存:Server如果在查询缓存中发现了这条SQL语句,就会直接将结果返回给客户端;如果没有,就会进入解析器阶段。但是在MySQL8.0中该功能被删除 解析器解析,对SQL语句进行解析 先做词法分析,识别SQL语句中的各个词是什么,代表什么 接着做语法分析
阅读全文
摘要:数据存储结构:页 磁盘和内存交互的基本单位:页 页的默认大小是16KB 基本交互单位是页,也就是每次最少从磁盘加载16KB到内存,每次最少将内存中的16KB刷新到磁盘。 在数据库中,不论是读一行还是读多行,都是将这些行所在的页进行加载,也就是说,数据库管理存储空间的基本单位是页,数据库I/O操作的最
阅读全文
摘要:从几个方面优化数据库 索引失效 关联查询太多 服务器调优 数据过多 优化技术分为 物理优化:主要是索引的使用 逻辑优化:SQL的等价变换 索引失效案例 MySQL提高性能的一个最有效的方式就是对数据表设计有效的索引,但是最终用不用索引,是优化器决定的,它不是根据规则,也不是根据语义,而是基于开销(c
阅读全文
摘要:为什么需要索引 数据库的数据不是连续存储在磁盘上的,假设查找数据的方式是逐条查询,那么最坏情况下,查询一个数据就需要一次磁盘I/O,那么消耗在I/O上的时间就会非常大。 那么如果我们为数据的存储建立一个索引表,就像是书本的目录一样,然后再使用二叉树这样的数据结构来查找数据,那么我们知道,二叉树的检索
阅读全文
摘要:索引的分类 普通索引 主键索引 唯一索引 联合索引 创建索引 创建表时创建索引 CREATE TABLE table_name [col_name data_type] [UNIQUE] INDEX index_name (col_name) [ASC | DESC] 已创建表时创建索引 ALTER
阅读全文
摘要:关于数据表设计的基本原则、规则就称为范式 第一范式:确保数据表中每个字段的值必须具有原子性,也就是每个字段的值为不可再次拆分的最小数据单元 第二范式:满足数据表中的每一条记录,都是可唯一标识的,而且所有非主键字段,都必须完全依赖主键,不能只依赖主键的一部分 第三范式:要求数据表中的所有非主键字段不能
阅读全文
摘要:关联查询优化 1. 左外连接 在底层做左外连接查询时,与嵌套循环相似,在驱动表中拿出一条数据,然后去被驱动表中扫描一遍,那么一共就会扫描N*M次 那么在优化时,可以在连接条件中,为被驱动表添加对应字段索引,这样驱动表依然是全表扫描,但是被驱动表是索引查询,效率会提升很多 然后如果驱动表也有连接条件的
阅读全文