mysql笔记
mysql学习笔记,大多是理论上的东西
熊孩子2*3*3
这个作者很懒,什么都没留下…
展开
-
Mysql 索引选择错误
1:MySQL选错索引,啥意思? 我们认为使用A索引检索的速度会更快的,但是MySQL没有使用(使用了B),决定使用什么索引是由Server层的优化器来决定的,它也是想选择最佳的方案来检索数据的,不过没有银弹,只要是人写的程序都是存在bug的。 2:MySQL为啥会选错索引? 优化器认为使用那个索引检索数据的速度比较快是一个需要各种因素综合评估的事情,比如:是否使用临时表、是否排序、扫描的行数多少(采用采样评估得到)、回表的次数等。 索引的创建是非常的耗时的,因为需要真正的建索引的过程,但是删除索引却不需要原创 2020-07-26 21:41:35 · 445 阅读 · 0 评论 -
普通索引 唯一索引 区别
分析唯一索引和普通索引在查询语句和更新语句中的性能影响。 查询过程 假设执行以下语句 select id from T where k=5 这个查询语句在索引树上查找的过程,先是通过 B+ 树从树根开始,按层搜索到叶子节点,然后可以在数据页内部通过二分法来定位记录。 对于普通索引来说,查找到满足条件的第一个记录 (5,500) 后,需要查找下一个记录,直到碰到第一个不满足 k=5 条件的记录。 对于唯一索引来说,由于索引定义了唯一性,查找到第一个满足条件的记录后,就会停止继续检索。 以上看起来唯一索原创 2020-07-13 22:24:58 · 230 阅读 · 0 评论 -
可重复读隔离事务隔离与读提交事务隔离 一致性读 MVCC 当前读
提出问题 在可重复读隔离级别下,事务 T 启动的时候会创建一个视图 read-view,之后事务 T 执行期间,即使有其他事务修改了数据,事务 T 看到的仍然跟在启动时看到的一样 详情请见此文事务隔离原理MVCC。 但是在行锁存在的条件下,一个事务要更新一行,如果刚好有另外一个事务拥有这一行的行锁,它会被锁住,进入等待状态。问题是,既然进入了等待状态,那么等到这个事务自己获取到行锁要更新数据的时候,它读到的值又是什么呢?详情请见 mysql的全局锁、表锁、行锁 做出假设 基于此问题进行解读 mysq原创 2020-07-07 21:35:51 · 589 阅读 · 0 评论 -
mysql 全局锁(全库逻辑备份) 表锁(如何安全的给表加字段) 行锁(死锁与死锁检查)
数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。 锁的分类 根据加锁的范围,Mysql里的锁大致可以分为全局锁、表锁、行锁三类 全局锁 全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是 Flush tables with read lock (FTWRL)。当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)原创 2020-07-05 23:53:37 · 475 阅读 · 0 评论 -
mysql 索引 常见的索引模型 InnoDB的索引模型
索引的出现是为了提高数据查询的速度,就像书的目录一样,可以快速定位我们想要的数据! 索引的常见模型 哈希表、有序数组、搜索树原创 2020-06-14 00:34:24 · 611 阅读 · 0 评论 -
mysql 事物隔离性 及事物隔离原理 MVCC
事务就是保证一组数据库操作,要么全部成功,要么全部失败。在 MySQL 中,事务支持是在引擎层实现的。MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被 InnoDB 取代的重要原因之一。 隔离性与隔离级别 事务隔离性是ACID(Atomicity、Consistency、Isolation、Dura...原创 2020-05-06 00:01:47 · 507 阅读 · 0 评论 -
mysql 的日志模块 redo log 与 binlog 两阶段提交 sql的更新执行流程
mysql 的日志模块 redo log 与 binlog 两阶段提交 mysql的日志模块 在数据库的更新(增、删、改)操作流程中涉及到两个重要的日志模块,redo log(重做日志)与 binlog(归档日志),其中redo log是InnoDB引擎特有的日志系统,binlog是mysql数据库server层的日志(mysql从整体来看,分为两层,server层和引擎层 详细介绍 –>...原创 2020-05-05 22:41:12 · 826 阅读 · 0 评论 -
Mysql基础架构 一条sql的执行过程
mysql基础架构图 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 连接器 存储引擎层 而存储引擎层负责数据的存储和提取。其架构模式...原创 2020-03-29 21:37:42 · 360 阅读 · 0 评论