高并发
文章平均质量分 90
Ch.yang
try{ coding } catch { bug }
展开
-
【数据结构】布隆过滤器 BoomFilter 的应用场景
对比数据结构的区别,从其空间、时间复杂度下手观察。BoomFilter 特殊的地方在于它在元素存储上做了努力。本文归纳下 BoomFilter 与 HashTable 的区别,进而引出 BoomFilter 善于支持的应用场景。原创 2023-02-05 12:35:12 · 551 阅读 · 0 评论 -
【MySQL】InnoDB 如何避免脏读和不可重复读
当前读和快照读的区别MySQL 的 InnoDB 会维护一系列不暴露给用户的隐藏字段,其中有3个用于实现快照读(非阻塞读)DB_TRX_ID最新一次修改本行记录的操作ID同一个事务,同一个操作要加以区分,这里指操作DB_ROLL_PTR回滚指针,存储的地址配合undo logDB_ROW_IDInnoDB 无论有没有主键,都会通过该字段唯一标识一条记录READ-COMMITTED一个事务原创 2019-07-29 13:46:20 · 4220 阅读 · 4 评论 -
【高并发基础】理解 MVCC 及提炼实现思想
MVCC 在 MySQL、Oracle、PostgreSQL 都有应用,用于实现事务的隔离特性。现在结合 《MySQL是怎样运行的》的内容理解、归纳、整理下MVCC的实现及思想。Multiversion Concurrency Control 对版本并发控制。对于同一行数据,会根据不同事务的DML操作参生不同的版本,让不同事务各自维护自己能看到的版本从而做到事务隔离。每次操作数据库都会生成日志,那么就可以把同一条记录的多次操作记录按时间顺序链接起来。按事务开启的时间顺序,为事务颁发一个Id,从而维护“版原创 2022-12-04 18:44:25 · 584 阅读 · 0 评论 -
【高并发基础】Cache Aside 缓存模式背后的思想
凤凰架构》一书中介绍了一种缓存实现方式 —— Cache Aside。大部分业务开发,不需要缓存与数据库的强一致性,Cache Aside 应该是首选方案。下文根据书中的内容进行整理及理解。文末会给出 Cache Aside 模式的应用。原创 2022-10-27 00:09:57 · 712 阅读 · 0 评论 -
【高并发基础】MySQL索引优化
本文整理自MySQL官方网站,官网的连接比较琐碎。防止反复多开页面,这边记录一些重点。Most MySQL indexes (PRIMARY KEY, UNIQUE, INDEX, and FULLTEXT) are stored in B-trees. Exceptions: Indexes on spatial data types use R-trees; MEMORY tables also support hash indexes; InnoDB uses inverted lists for F原创 2022-06-26 19:12:54 · 292 阅读 · 0 评论 -
【高并发基础】MySQL 不同事务隔离级别下的并发隐患及解决方案
本项目聚焦高并发的基础知识,至底向上得研究:github 仓库 (分支 master / isolation / propagation / multithreading)理念:禁用了gap锁,减少了锁的作用范围,即减少了死锁风险使用了"半一致读"降低了锁等待,即减少了死锁风险,也提高了读效率项目isolation分支 :3.1.2 RC 解决不可重复读,使用 加锁项目isolation分支 :项目isolation分支 :3.2.1 解决幻读RC 禁用了GAP锁(外键约束除外)理论上是原创 2022-06-25 20:05:08 · 968 阅读 · 0 评论 -
【高并发基础】Spring 事务传播级别及造成死锁的隐患分析
本项目聚焦高并发的基础知识,至底向上得研究:github 仓库 (分支 master / isolation / propagation / multithreading)理念:事务传播行为官网描述用于区分声明式事务catch到异常由框架回滚,本文的“回滚”用到编程式事务的API 支持主动回滚。编程式事务官网描述讨论的模型是 调用方(外层) -> 被调用方(内层)默认传播行为, 确保当前方法一定处于事务保护中用于减少事务的粒度,如果不是关键的业务逻辑或是运行出错的逻辑,可以用 声明与调用方事务隔离。原创 2022-06-26 13:12:25 · 1907 阅读 · 0 评论