2022-12-31 16:30:00 ~ 2023-01-01 16:30:00
登录后可查看文章图片
账务系统的业务中从用户账号扣款,如果发现用户账户余额充足情况下,100次扣款数据库都返回成功,但其中有20次没有真实扣款,那业务方一定会震惊。但如果业务设计不合理,数据库中是会存在这种现象的。
Btree 自 1970 年 Bayer 教授提出后,一直是关系型数据库中核心数据结构,基于多路的分叉树,将数据范围自上而下不断缩小,直到需要的记录,通常在数据库中一个 Btree 结点能展开几百上千个分叉,数据的搜索范围呈指数级下降,极大地减少了数据访存次数,提升搜索效率。对于 B-tree 的基础操作,如插入、删除、更新,以及分裂/合并等操作已有大量的文献介绍,如果需要了解或有所疑问,可以参考文章末尾的参考文献 [3]。在伴随着高并发和需要考虑事务处理的数据库系统下,Btree 索引往往需要考虑更为复杂的场景。本文深入 MySQL Innodb 引擎,介绍 Innodb 中 Btree 的组织形式以及操作数据的具体实现,着重考虑其在高并发访问时,如何保证数据、Btree 结构的一致性,以及如何考虑事务的 ACID 特性。
登录后可查看文章图片
关注公众号
接收推送