数据库
文章平均质量分 84
悠哉iky
计算机科学与技术在读|Java后端学习者
展开
-
MySQL全局锁、表级锁、行级锁
客户端1备份账户表,余额200,客户端2再次期间进行了购买课程,账户课程数为1,客户端备份课程表的时候,读到课程数为1,余额的备份还是之前的200,导致出错。先执行查锁,再select语句,然后再查看,就可以看到t表上有一个元数据锁,类型为SHARE_READ共享读锁,可以存在多个锁不互斥,持续时间是这个事务当中。DML 主要目的是加行锁,为了让表锁不用检查每行数据是否加锁,加意向锁(表级)来减少表锁的判断,意向锁之间不会互斥。它们锁定的其实都是索引上的行与间隙,根据索引的有序性来确定间隙。原创 2022-10-22 20:41:58 · 266 阅读 · 0 评论 -
MySQL索引的生效与失效、SQL语句的执行流程、undo log和redo log
都用到了索引,但是并不是全部条件都用上,key_len是代表你所用到索引的长度,这个是组合索引,一个字段长度为67。而比J大的记录人名很多,就算走索引也不会提高太多效率,所以不会走索引。这时候发现是没有用到索引的,因为建立索引时lastname在左,如果单纯只用到firstname,没有从最左前缀也是不可以的。or并不是不会走索引,看第二个查询,走了两个索引,一定要以实际情况为准。速度变成了0.03秒,通过explain,也能查看用到了刚刚建立的索引。说明上面建的两个索引是失效的,那我们应该如何建立索引。原创 2022-10-22 18:57:48 · 994 阅读 · 0 评论 -
MySQL B+树 BTree原理、增删改(详细)
适用场景:内存数据的索引,但不适合磁盘数据的索引,可以认为。而分叉为 410,则百万数据树高约为3,仅。3. 兄第节点没富余,当前结点和兄弟结点及父结点合并成一个新的结点。适用场景:适用于等值查询的场景,内存数据的索引。的行放在同一页中(每页就是树上一个节点),能进一步减少 I/O。),向兄弟结点借一个记录,同时替换父节点,例如删除。兄弟节点合并成一个新的叶子结点,并删除父结点中的。在每个节点上,无论叶子还是非叶子节点,而。,每个叶子节点到根节点距离都相同,兄弟节点也不富余,合并兄弟叶子节点。原创 2022-10-22 00:11:40 · 1798 阅读 · 2 评论 -
MySQL存储引擎
其中7开头的数字是员工编号(主键),叶子节点处理编号,还有姓名工资,他把索引的数据和表中其他数据存储在一起了,也就是把索引和表合二为一。这个是把员工的工资作为索引数据,叶子节点包含了主键值和工资,二级索引只是存储被索引的字段值加上主键数据。二级索引:被索引的字段值作为索引数据,叶子节点还包含了主键值。聚簇索引:主键值作为索引数据,叶子节点还包含了所有字段数据。二级索引:被索引的字段值作为索引数据,叶子节点还包含了主键值。聚簇索引:主键值作为索引数据,叶子节点还包含了所有字段数据。通过当前读、锁实现隔离性。原创 2022-10-21 21:54:19 · 66 阅读 · 0 评论 -
MySQL事务隔离级别、脏读、幻读、不可重复读现象及解决办法、快照读和当前读
tx1设置提交读,这时候就没有脏读现象。tx1开启事务做了两次查询,两次查询中间tx2执行了一次更新的事务,但是对于tx1来讲,一次事务里两次查询结果不一致,到底以哪一次为准,或者说将结果用于运算,是用哪一次,这就造成了混乱,这就是不可重复读现象。修改数据是指基于旧的数据去修改,才会重新建立快照,tx2执行修改操作,是在原有旧值得基础上增加1000,所以此时会重新建立快照,tx1的增加也是原有的增加,又重新建立的快照。tx1设置为串行读,在tx1执行读操作,会加一个共享读锁,其他事务可以读,但不能增删改。原创 2022-10-21 21:35:25 · 2234 阅读 · 2 评论