louettagfh

louettagfh

V2EX 第 448336 号会员,加入于 2019-10-22 11:20:52 +08:00
根据 louettagfh 的设置,主题列表被隐藏
二手交易 相关的信息,包括已关闭的交易,不会被隐藏
louettagfh 最近回复了
157 天前
回复了 leejinhong 创建的主题 MySQL 关于在业务中 MYSQL 事务查询的一个疑惑
@leejinhong 使用 RR , 你的第二个事务不就改不了么, 这不就是你要的效果吗, 否则你又要别的事务可以改, 你又要第一个事务始终读取正确的值, 这不是数据库能保证的.
157 天前
回复了 leejinhong 创建的主题 MySQL 关于在业务中 MYSQL 事务查询的一个疑惑
@leejinhong 你直接使用隔离级别 RR 不就行了
157 天前
回复了 leejinhong 创建的主题 MySQL 关于在业务中 MYSQL 事务查询的一个疑惑
@leejinhong 你自己试一下呢? 看看能不能两个未 commit 的事务改同一个 record?
158 天前
回复了 leejinhong 创建的主题 MySQL 关于在业务中 MYSQL 事务查询的一个疑惑
举个例子,在仓库库存管理中,如果在查询时库存是 30 ,但在查询完成后,其他业务操作改变了库存,导致库存变为 25 。然而,业务处理时依旧基于查询时的库存 30 进行操作,这样就会导致记录流水的值出现误差。

你这个例子就不可能在 MySQL 中发生. 一个事务不结束, 其他无法事务修改这个 record.
224 天前
回复了 gongxuanzhang 创建的主题 程序员 在一个群里被恶心坏了
你说的确实不对啊,RR 还是会有幻读的
@hendry 大佬 有教程吗?
@tool2d 小米看不了网飞..
redo 没有刷盘, 脏页 page 就不会刷盘, 所以重启以后 page 是干净的, 没有问题.
@lasuar

和 buffer pool 没有关系, buffer pool 不感知 B+ tree.


删除一条 record, 不可能只删除二级索引,所以 InnoDB 先删除主键索引,再删除二级索引, 所以假如你要删除的 Record 比如 id (主键), age (二级索引) 的时候主键不存在,二级索引也就不用找了.

修改也同理


buffer pool 没有聚簇索引的 page 会去读,因为 change buffer 不缓存聚簇索引, 二级索引的 Page 假如符合使用 change buffer 的条件没有的话就不去读,直接使用 change buffer 的 page, change buffer 的 page 是连续分配的. 写入完成后,假如用户的一次查询用到了这个二级索引的 Page,就把二级索引的数据页读上来和 change buffer 的 Page 做一个 merge 操作, 再返回给用户.


没有相关资料 看源码吧
InnoDB 的删除逻辑是先删聚簇索引, 再删除二级索引(标记删除), 所以当主键索引发现 DB_RECORD_NOT_FOUND 就会返回, 所以不会触发缓存不存在的索引数据
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2717 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 10ms · UTC 12:22 · PVG 20:22 · LAX 04:22 · JFK 07:22
Developed with CodeLauncher
♥ Do have faith in what you're doing.