摘要: 锁 并发事务可能出现的情况: 读-读事务并发:此时是没有问题的,读操作不会对记录又任何影响。 写-写事务并发:并发事务相继对相同的记录做出改动,因为写-写并发可能会产生脏写的情况,但是没有一个隔离级别允许脏写的情况发生。MySQL使用锁的机制来控制并发情况下让事务对一条记录进行排队修改,只有对记录修 阅读全文
posted @ 2022-06-06 09:46 大队长11 阅读(736) 评论(3) 推荐(3) 编辑
摘要: 事务隔离级别 事务并发可能出现的问题 脏写 事务之间对增删改互相影响 脏读 事务之间读取其他未提交事务的数据 不可重复读 一个事务在多次执行一个select读到的数据前后不相同。因为被别的未提交事务修改,删除数据或数据被更新被当前事务读取到了。 幻读 一个事务在第一次读取正常数据,第二次读取到其他未 阅读全文
posted @ 2022-06-01 11:02 大队长11 阅读(317) 评论(1) 推荐(0) 编辑
摘要: undo日志 前面学习了redo日志,redo日志保证的是崩溃时事务持久性。我们可以从redo日志恢复到系统崩溃以前。 undo日志就是为了保证事务回滚时事务所作所为都能回到事务执行前。保证了事务的原子性。redo把我们做增删改之前的状态记录下来,帮助MySQL回滚到事务执行之前的样子。 这篇文章了 阅读全文
posted @ 2022-06-01 10:57 大队长11 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 事务 事务的四个ACID特性。 Atomicity 原子性 Consistency 一致性 Isolation 隔离性 Durability 持久性 原子性 原子性即这个事务的任务要么全做了,要么全部没做,不能出现做一半这种情况。 一致性 一致性即数据库中的数据必须满足数据满足数据库的约束。 隔离性 阅读全文
posted @ 2022-05-29 17:16 大队长11 阅读(338) 评论(1) 推荐(1) 编辑
摘要: Buffer pool 我们都知道我们读取页面是需要将其从磁盘中读到内存中,然后等待CPU对数据进行处理。我们直到从磁盘中读取数据到内存的过程是十分慢的,所以我们读取的页面需要将其缓存起来,所以MySQL有这个buffer pool对页面进行缓存。 首先MySQL在启动时会向操作系统申请一段连续的内 阅读全文
posted @ 2022-05-28 12:29 大队长11 阅读(345) 评论(0) 推荐(0) 编辑
摘要: Explain简介 MySQL优化器在基于成本的计算和基于规则的SQL优化会生成一个所谓的执行计划,我们就可以使用执行计划查看MySQL对该语句具体的执行方式。 介绍这个好啰嗦就是了,我们可以通过这个优化器展示的执行计划,查看优化器对我们的SQL进行优化的步骤,连接转换成单表访问时的优化。以及对于之 阅读全文
posted @ 2022-05-26 20:53 大队长11 阅读(277) 评论(0) 推荐(1) 编辑
摘要: 语句优化 即优化器利用自身的优化器来对我们写的SQL进行优化,然后再将其放入InnoDB引擎中执行。 条件简化 移除不必要的括号 select * from x where ((a = 5)); 上面的括号很没必要,优化器就会直接去掉。 select * from x where a = 5; 等值 阅读全文
posted @ 2022-05-25 12:32 大队长11 阅读(533) 评论(0) 推荐(1) 编辑
摘要: 成本 什么是成本,即SQL进行查询的花费的时间成本,包含IO成本和CPU成本。 IO成本:即将数据页从硬盘中读取到内存中的读取时间成本。通常1页就是1.0的成本。 CPU成本:即是读取和检测是否满足条件的时间成本。0.2是每行的CPU成本。 单表查询计算成本 我们对其进行分析的具体步骤如下: 根据搜 阅读全文
posted @ 2022-05-24 14:39 大队长11 阅读(511) 评论(0) 推荐(0) 编辑
摘要: B+树索引的正确使用 索引并不是越多越好,索引创建越多,MySQL维护的代价越高,如果SQL未能完全使用到索引,创建索引的意义是不大的。 适用条件 表x,创建索引a,b,c。主键y。 全值匹配 select * from x where a = '' and b = '' and c = '' 当我 阅读全文
posted @ 2022-05-21 17:15 大队长11 阅读(62) 评论(0) 推荐(0) 编辑
摘要: 下面介绍的是JUC包下一些线程安全类的一些简单使用和一些小demo。 Semaphore 信号量,即可以同时使用的线程数,tryrequire就是将信号量减一,release就是信号量+1,当等于0就会阻塞,大于零才会唤醒。 当需要控制线程访问数量,可以使用信号量来做控制,比较简单。 下面是使用信号 阅读全文
posted @ 2022-05-18 19:51 大队长11 阅读(35) 评论(0) 推荐(0) 编辑