发布了文章2021-08-23
间隙锁的出现是为了解决幻读,间隙锁只有再可重复读下才能使用加锁原则加锁基本单位为next-key lock(左开右闭);查找过程中访问的对象才会加锁(二级索引的间隙锁有可能会传递到主键上)唯一索引等值查询,next-key lock退化为行锁索引等值查询(包含唯一和普通索引),向右...
发布了文章2021-08-16
{代码...} 如果要查询city是杭州的所有人名字,并且按姓名排序返回前1000个人的姓名和年龄,sql可以这么写: {代码...} 全字段排序:初始化 sort_buffer,确定放入 name、city、age 这三个字段;从索引 city 找到第一个满足 city='杭州’条件的主键 id,也就是图中的 ID_X...
发布了文章2021-08-16
MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高InnoDB 引擎执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来,然后累积计数
发布了文章2021-08-10
数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句都会被阻塞。全局锁的典型使用场景是,做全库逻辑备份使用msqldump工具并加上–single-transaction可以开启一个事务,进行逻辑备份,数据也是可以正常更新的
发布了文章2021-08-09
执行流程:在 k 索引树上找到 k=3 的记录,取得 ID = 300;再到 ID 索引树查到 ID=300 对应的 R3;在 k 索引树取下一个值 k=5,取得 ID=500;再回到 ID 索引树查到 ID=500 对应的 R4;在 k 索引树取下一个值 k=6,不满足条件,循环结束。
发布了文章2021-08-05
1. 隔离级别read uncomitted 读未提交read comitted 读已提交repeatable read 可重复读serializable 串行化查看隔离级别 {代码...} 2. 事务隔离的实现以可重复读为例在 MySQL 中,实际上每条记录在更新的时候都会同时记录一条回滚操作。记录上的最新值,通过回滚操作...
发布了文章2021-08-05
发布了文章2021-08-04
简述: 引擎层的redo log 是为了避免每一次更新操作都去查找记录再修改记录(随机读写),采用WAL技术(Write-Ahead Logging写前日志)来转换成顺序读写;(WAL机制有两个好处:1将磁盘随机读写转为顺序写 2.组提交,可大幅降低磁盘的IOPS)
提出了问题2021-08-04
发布了文章2021-08-04
MySQL 在执行过程中临时使用的内存是管理在连接对象里面的,这些资源会在连接断开的时候才释放如果内存占用太大,会被系统强行杀掉解决方案:1.定期断开链接,程序里判断下执行过一个占用大内存的查询后,断开链接再重连2.mysql5.7以后 ,可以执行mysql_reset_connection来...
发布了文章2021-08-04
一.CAP定理:Consistency 一致性同一个数据的所有备份,在同一时刻是否有相同的值。一种比较常见的强一致性实现就是,在看到一致的结果之前,写请求不返回,读请求阻塞或者超时Availability可用性在集群中一些节点故障时,集群还可以响应读写请求Partition-tolerance...
发布了文章2021-08-03
1. 线程安全点 safe point线程在safe point上时,可以安全得被其他JVM线程所操作和观测,不在的则不行;线程安全点:方法返回之前调用某个方法之后抛出异常的位置循环的末尾2. 类加载过程 [加载] 利用双亲委派机制加载字节码文件(.class)到JVM中,将字节流代表的静态存储...
发布了文章2021-07-05
application知道有I/O时间发生,但并不知道哪几个流,所以只能轮询所有流读取数据,时间复杂度O(n),同时处理的流越多,时间越多,且有最大连接限制
发布了文章2021-06-23
三次握手服务端进入listen状态,等待连接客户端通过connect,向服务器发出连接请求SYN=1,seq=x,客户端进入SYN-SEND状态服务器收到客户端连接后,把SYN和ACK都置为1,seq=y,确认号ack=x+1,同时TCP服务器进入SYN-RECEIVED状态客户端在收到服务器发出的响应后,还需要给出确...
发布了文章2021-06-18
1. SETNX普通加锁方式,表示SET if Not eXists,当key不存在时才会去设置它的值,否则什么也不做 {代码...} {代码...} 操作完成后再去释放锁 {代码...} 存在缺陷:程序处理业务逻辑异常,没及时释放锁进程挂了,没机会释放锁如何避免死锁设置过期时间 {代码...} {代码......
发布了文章2021-06-13
普通索引普通索引页记录的是普通索引以及主键值,故查询非主键字段的时候,需要回表.普通索引数据页内部通过二分法来定位记录.普通索引在查询时需要额外多查询一次下一条记录,而唯一索引查到则不会继续往下查change bufferchange buffer在内存中有拷贝,也会被写入磁盘...
发布了文章2021-06-05
常规概念有序度有序度是数组中具有有序关系的元素对的个数满有序度完全有序的数组的有序度为满有序度,即n长度的数组满有序度为Cn² ,即n*(n-1)/2;逆序度满有序度-有序度= 逆序度冒泡排序 {代码...} 冒泡排序的特点:原地排序,空间复杂度为O(1)稳定排序,相邻且相等的元...
发布了文章2021-06-04
如果synchronized锁住一个对象的不同变量或方法,会形成竞态条件吗?synchronized背后的原理是什么?先看一个实验: {代码...} {代码...} 公布答案: {代码...} 反复尝试,发现可见锁静态方法会与锁class对象形成竞态条件,锁普通方法会与锁普通对象形成竞态条件Synchronize...
发布了文章2021-06-03
观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。
发布了文章2021-06-03
简单易用: 门面模式让子系统更加易用,客户端不再需要了解子系统内部的实现,也不需要跟众多子系统内部的模块进行交互,只需要跟门面类交互就可以了。