Mysql45讲读书笔记
林晓斌的专栏《MySQL实战45讲》读书笔记
老王的狗窝
这个作者很懒,什么都没留下…
展开
-
《18讲为什么这些SQL语句逻辑相同,性能却差异巨大》-读书笔记
该篇讲的主要是索引失效的情况。1.对索引使用函数,会导致走全表搜索。因为使用函数后,索引变得无序,优化器选择不执行索引。2.当对字符串类型的字段进行int类型的where查询时,因为mysql对这种情况,都是对字符串类型的字段进行转换,所以select * from tradelog where tradeid=110717;相当于:select * from tradelog...原创 2020-03-17 22:02:31 · 117 阅读 · 0 评论 -
《第12讲为什么我的MySQL会“抖”一下》读书笔记
在我们执行sql的时候偶尔会抖一下的原因:数据库对脏页进行了flush操作。脏页:当内存数据页跟磁盘数据页不一样的时候,就叫脏页。干净页:当内存数据页跟磁盘数据一样的时候,叫干净页。mysql flush四种场景:1.当redo log的内存片(粉版)已经记录满,这个时候会停止所有的更新操作,对checkpoint往前推,推进的日志对应的所有脏页将flush进磁盘。2.当内存用...原创 2020-03-16 22:42:48 · 154 阅读 · 1 评论 -
《第11讲怎么给字符串字段加索引》 读书笔记
字符串字段索引问题字符串占空间比较大,如果用全匹配的索引,会导致一页索引数量比较少,可能出现频繁读取磁盘表的问题。前缀索引脚本:alter table SUser add index index2(email(6));优势:节约空间,合理的前缀,可以增加辨识度,减少回表的行数。缺点:由于引擎不知道前缀索引是否有截断字段值,所以就算是前缀索引长度大于字段值,也会进行回表操作,从而...原创 2020-03-08 23:18:34 · 131 阅读 · 0 评论 -
《第九讲 普通索引和唯一索引选择》 读书笔记
查询唯一索引:因为做了唯一约束,查询到值以后会直接返回。普通索引:匹配到第一个节点后,会继续向后匹配。性能来说,差不多更新唯一索引:需要做唯一校验,所以会读取索引校验,导致不能使用changebuff。普通索引:更新的时候先将记录写到changebuff,而不进行磁盘更新,这样性能更好。changebuff更新操作的时候,直接将记录写在changebuff内存里,而...原创 2020-03-08 19:32:09 · 185 阅读 · 0 评论 -
《第七讲 行锁功过》读书笔记
行锁各个搜索引擎有自己的行锁实现方式。MyIsam没有实现行锁,这个是被innodb取代在原因之一。innodb实现行锁基于索引,如果没有使用索引,innodb将锁住整个表。两段锁协议:innodb不会在事务一开始就加行锁,而是在执行到对应的脚本时,才进行加行锁,并且在事务提交后才释放锁。死锁与检测由于资源的独占和循环等待释放,而进入无限等待的阶段。解决:方案1:设置i...原创 2020-03-07 17:11:28 · 112 阅读 · 0 评论 -
《第六讲 全局锁和表锁》读书笔记
mysql分 全局锁,表锁,行锁。全局锁全局锁对整个数据库加锁。命令是 Flush tables with read lock (FTWRL)。当使用全局锁的时候,更新语句(增删改),表结构修改,表新增,更新类事务提交。也就是全库只读。应用场景:全库逻辑备份。表锁表锁分两个级别:一种是表锁语法 luck tables ...write/read。另一种是MDL(meta...原创 2020-03-06 17:52:43 · 101 阅读 · 0 评论 -
《第五讲 深入浅出索引下》-读书笔记
索引覆盖因为我们的二级索引搜索后会有回表操作,建立联合索引,覆盖我们需要获取的字段,减少回表操作,这个过程就叫索引覆盖。覆盖索引能大大增加我们的查询性能。最左前缀原则建立联合索引(a,b),当只对a查询时,仍可以用上该索引,当只使用b的时候,不可用该索引。设计索引的原则:第一原则:按照使用频率,频率比较高的放前面。第二原则:按照占用空间大小,占用空间大的放前面,节约空,避免...原创 2020-03-06 16:17:56 · 103 阅读 · 0 评论 -
《第四讲 深入浅出索引上》-读书笔记
索引类型哈希表,有序表,搜索树哈希表:mongodb,redis有序表:有序数组索引只适用于静态存储引擎搜索树:innodb原创 2020-03-05 14:34:36 · 124 阅读 · 0 评论 -
《第一讲 一条查询sql是如何执行的》-读书笔记
Myqsl的结构如下:连接器:负责进行鉴权,当进行数据库连接时,会进入连接器进行鉴权。原创 2020-02-28 15:26:08 · 816 阅读 · 0 评论 -
《第三讲 讲事务隔离:为什么你改了我还看不见》- 读书笔记
ACID事务的4个特性:ACID,分别是:A: Atommicity 原子性C:Consistency 一致性I:Isonlation 隔离性D:Durability 持久性Mysql数据库隔离级别事务的隔离性就是事务的隔离级别,Mysql数据库隔离级别划分为4个级别:read uncommited(读未提交):一个事务还没提交的时候,他的修改能被其他事务看见。...原创 2020-02-29 22:18:50 · 188 阅读 · 0 评论 -
《第二讲 一条更新sql是如何执行的》-读书笔记
一条更新语句的执行跟查询执行的流程是一样的,也是如下图:不一样的地方,会写两个日志,两段式提交:redo log:在innodb写,通过creach-safe模式写。bin log:在service写,任何引擎都可以用,mysql公共执行日志,记录每一条语句执行。redo logredolog日志在内存中是固定大小的,一个组redo写版是一个1g,可以配置多组写版。redo...原创 2020-02-28 18:36:30 · 113 阅读 · 0 评论