![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 86
爱因诗贤
持之以恒,勇攀技术高峰
展开
-
MySQL学习笔记-幻读有什么问题?
MySQL学习笔记-幻读有什么问题?1.表结构CREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `c` (`c`)) ENGINE=InnoDB;Tips:下面介绍的操作内容都是 可重复读 隔离级别。2.插入实验数据insert into t values(0,0,0),(5,5,5),原创 2021-03-06 21:50:47 · 195 阅读 · 0 评论 -
MySQL学习笔记-索引失效的情况
MySQL学习笔记-索引失效的情况1. 表结构CREATE TABLE `t` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `word` varchar(16) NOT NULL DEFAULT '', `num` int unsigned NOT NULL DEFAULT '0', `date` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `word` (`word`), KEY原创 2021-03-06 21:48:34 · 364 阅读 · 0 评论 -
MySQL学习笔记-order by工作原理
文章目录MySQL学习笔记-order by工作原理1.表结构2.插入实验数据3.执行排序查询4.explain 分析5.全字段排序流程6.rowid 排序流程7.优化建议MySQL学习笔记-order by工作原理1.表结构CREATE TABLE `t` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `city` varchar(16) NOT NULL, `name` varchar(16) NOT NULL DEFAULT '',原创 2021-02-21 01:26:47 · 167 阅读 · 0 评论 -
MySQL学习笔记-日志和索引相关问题小结
文章目录MySQL学习笔记-日志和索引相关问题小结1.笔记图2.日志相关问题2.1 在两阶段提交的不同瞬间,MySQL 如果发生异常重启,是怎么保证数据完整性的?2.2 commit 的概念混淆说明3.业务设计问题MySQL学习笔记-日志和索引相关问题小结1.笔记图2.日志相关问题2.1 在两阶段提交的不同瞬间,MySQL 如果发生异常重启,是怎么保证数据完整性的?情况一:描述:若写入 redo log 处于 prepare 阶段之后、写 binlog 之前,发生了崩溃 (crash)现象原创 2021-02-10 23:18:32 · 161 阅读 · 1 评论 -
MySQL学习笔记-不同count统计性能的比较
文章目录MySQL学习笔记-不同count统计性能的比较1.笔记图2.count(*) 的实现方式3.InnoDB count(*) 优化4.count(*) 业务层优化5.InnoDB 不同的 count 用法6.课后问题MySQL学习笔记-不同count统计性能的比较在做业务开发的时候,经常会使用 count() 函数对满足条件的结果集统计数量,但执行 select count(*) from t 这种语句的时候会很慢,而 count(*)、count(1)、count(字段)、count(主键id原创 2021-02-08 21:55:31 · 289 阅读 · 0 评论 -
MySQL学习笔记-如何有效的回收表空间
文章目录MySQL学习笔记-如何有效的回收表空间1.笔记图2.InnoDB 表说明3.数据库表的空间回收4.数据删除流程5.数据 "空洞"6.如何去掉表数据 "空洞"7.Online DDL8.表操作命令说明9.课后问题MySQL学习笔记-如何有效的回收表空间1.笔记图2.InnoDB 表说明表结构:在 MySQL 8.0 版本以前,表结构是存在以 .frm 为后缀的文件里MySQL 8.0 版本,则已经允许把表结构定义放在系统数据表中了表数据:表数据既可以存在共享表空间里,也可以是单独原创 2021-02-08 21:54:27 · 248 阅读 · 0 评论 -
MySQL学习笔记- 刷脏页(flush)对性能的影响
MySQL学习笔记- 刷脏页(flush)对性能的影响MySQL 有时候会突然变得很慢,但持续时间又特别短,而且很难复现这种情况,这时候很有可能就是 MySQL 在刷脏页,这篇文章来学习一下 MySQL 中刷脏页的过程,可以更好的优化刷脏页对性能的影响。1.笔记图2.概念说明flush:把内存里的数据写入磁盘的过程脏页:当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为脏页干净页:内存数据写入到磁盘后,内存和磁盘上的数据页的内容就一致了,称为干净页Tips:MySQL 突然瞬原创 2021-02-06 23:38:47 · 768 阅读 · 0 评论 -
MySQL学习笔记-优化器选索引的因素
文章目录MySQL学习笔记-优化器选索引的因素1.笔记图2.优化器的逻辑3.索引选择异常的优化MySQL学习笔记-优化器选索引的因素1.笔记图2.优化器的逻辑功能作用:选择索引的目的,是找到一个最优的执行方案,并用最小的代价去执行语句在数据库里面,扫描行数是影响执行代价的因素之一扫描的行数越少,意味着访问磁盘数据的次数越少,消耗的 CPU 资源越少选择索引考虑的因素:扫描行数:MySQL 在真正开始执行语句之前,并不能精确地知道满足这个条件的记录有多少条,只能根据统计信息来估算记录原创 2021-02-06 23:37:43 · 209 阅读 · 1 评论 -
MySQL学习笔记-change buffer 和 redo log
文章目录MySQL学习笔记-change buffer 和 redo log1.笔记图2.索引类型对查询性能的影响3.索引类型对更新性能的影响4.普通索引和唯一索引该怎么选择5.change buffer 和 redo logMySQL学习笔记-change buffer 和 redo log在给 MySQL 建立二级索引的时候,从唯一性约束来说可以分为普通索引和唯一索引,但你知道这两种索引在查询和更新数据的时候性能有什么区别吗?然后 change buffer 和 redo log 的联系是什么呢?这原创 2021-02-03 01:12:47 · 954 阅读 · 1 评论 -
MySQL学习笔记-MVCC数据多版可见性
文章目录MySQL学习笔记-MVCC数据多版可见性1.笔记图2.事务的执行流程3.两个视图概念4.MVCC 工作原理5.当前读6.查询数据可见性规则MySQL学习笔记-MVCC数据多版可见性InnoDB 最大的特点之一就是支持事务,而不同时刻启动的事务对于其他事务来说,可见性不一样,比如可重复读隔离级别下,启动一个事务,查询数据之后会创建一个一致性视图,该事务提交之前的查询都将依赖于这个一致性视图,就好像给所有数据 拍了一个快照 一样,这篇文章就学习一下 MVCC 数据的多版本并发控制是如何实现秒级快照原创 2021-02-02 09:38:07 · 754 阅读 · 0 评论 -
MySQL学习笔记-如何安全的给小表加字段
文章目录MySQL学习笔记-如何安全的给小表加字段1.笔记图2.全局锁3.数据逻辑备份的方式4.表级锁5.给一个小表加个字段,导致整个库挂了6.如何安全地给小表加字段?7.课后问题MySQL学习笔记-如何安全的给小表加字段如果要给一个大表加字段,你一般都会非常谨慎小心,以免对线上业务造成影响,但实际上给一个小表加字段不慎操作也会导致线上业务出问题,这篇文章主要学习一下 MySQL 中 MDL 锁对性能的影响,防止采坑。1.笔记图2.全局锁全局锁就是对整个数据库实例加锁命令:Flush t原创 2021-01-29 23:27:59 · 341 阅读 · 0 评论 -
MySQL学习笔记-主键索引和二级索引
文章目录MySQL学习笔记-主键索引和二级索引1.笔记图2.索引的常见模型3.InnoDB 的索引模型4.主键索引和普通索引查询的区别5.如何选择主键字段6.笔记图7.回表过程8.最左前缀原则MySQL学习笔记-主键索引和二级索引在 MySQL 索引是为了提高查询效率的,但实现索引的的方式有很多,可以用于提高读写效率的数据结构也很多,常见的数据结构有哈希表、有序数组、搜索树,而 MySQL 中的索引又分为主键索引和二级索引,这篇文章就来学习一下 主键索引 和 二级索引。1.笔记图2.索引的常见模型原创 2021-01-27 00:19:59 · 2322 阅读 · 1 评论 -
MySQL学习笔记-事务的隔离性
文章目录MySQL学习笔记-事务的隔离性1.笔记图2.事务3.隔离级别4.什么时候会创建视图5.事务隔离的实现6.事务的启动方式MySQL学习笔记-事务的隔离性最经典的事务相关的例子就是转账,小明向小红转 100 元,小明账户减 100,小红账户加 100,对于这一组操作,必须要保证要么都成功,要么都失败,而 MySQL 的事务具有 ACID 特性,其中隔离性是最难理解的,这篇文章主要来熟悉一下 MySQL 的隔离性,熟悉隔离性可以帮助后面学习多版本并发控制 (MVCC) 原理。1.笔记图2.事务原创 2021-01-26 09:26:01 · 115 阅读 · 0 评论 -
MySQL学习笔记-redo log 和 binlog&两阶段提交
文章目录MySQL学习笔记-redo log 和 binlog&两阶段提交1.笔记图2.一条更新语句是如何被执行的3.redo log4.binlog5.为什么要有两份日志?6.更新语句内部执行流程7.两阶段提交MySQL学习笔记-redo log 和 binlog&两阶段提交前面学习了一条查询语句的执行过程一般是经过连接器、分析器、优化器、执行器等功能模块,最后到达存储引擎,而一条更新语句的执行流程也会按照查询查询语句的流程走一遍,但更新语句会涉及到两个日志模块,分别是 redo lo原创 2021-01-24 23:56:01 · 706 阅读 · 2 评论