摘要: 一、原子性在并发编程中,和在数据库中两种不同的概念 在数据库中,事务的 ACID中原子性指的是 "要么都执行要么都回滚" 在并发编程中,原子性指的是 "操作不可拆分、不被中断" Redis既是一个数据库,又是一个支持并发编程的系统,所以,他的原子性有两种。所以,我们需要明确清楚,在问 "Lua脚本保 阅读全文
posted @ 2025-06-19 18:27 jock_javaEE 阅读(8) 评论(0) 推荐(0)
摘要: 一、基础概念 Redis中,事务和 Lua 都是保证原子性的手段, 当我们有多个命令要执行,希望他们以原子性方式执行的时候,就会考虑使用事务 或 者Lua脚本,那么他们之间有哪些区别呢 ? 二、原子性保证 事务 和 Lua都是可以保证原子性操作的,但是,这里说的原子性我们提过很多次,指的是不可拆分, 阅读全文
posted @ 2025-06-19 18:12 jock_javaEE 阅读(3) 评论(0) 推荐(0)
摘要: 一、基础概念 Redis中是支持事务的,它的事务主要目的是保证多个命令执行的原子性,使其在一个原子操作中执行,不会被打断 需要注意的是,Redis的事务是不支持回滚的。从 Redis 2.6.5 开始,服务器将会在累积命令的过程中检测到错误。然后,在执行 exec期间 会拒绝执行事务,并返回一个错误 阅读全文
posted @ 2025-06-19 17:46 jock_javaEE 阅读(2) 评论(0) 推荐(0)
摘要: 一、定义 Redis 的 Pipeline 机制是一种用于优化网络延迟的技术,主要用于在单个请求/响应周期内执行多个命令。在没有 Pipeline 的情况下,每执行一个 Redis 命令,客户端都需要等待服务器响应之后才能发送下一个命令。 这种往返通信尤其在网络延迟较高的环境中会显著影响性能 在 P 阅读全文
posted @ 2025-06-19 16:10 jock_javaEE 阅读(3) 评论(0) 推荐(0)
摘要: 一、基础概念 不一定的 假如我的表中有一个性别字段,他的区分度肯定是不高的,只有男和女两种。一般情况下,如果表中数据量很大的话,用这个字段查询会导致没办法过滤掉很多数据,就可能没办法发挥索引的效果 但是,如果有一种特殊情况,如男女比例是95:5,那么,这时候,如果我用"女'作为性别的查询条件的话,还 阅读全文
posted @ 2025-06-08 17:46 jock_javaEE 阅读(11) 评论(0) 推荐(0)
摘要: 一、基础概念 MySQL的索引失效是一个比较常见的问题,这种情况一般会在慢SQL发生时需要考虑,考虑是否存在索引失效的问题 在排查索引失效的时候,第一步一定是找到要分析的SQL语句,然后通过 explain 查看他的执行计划。主要关注type(访问类型)、key(实际使用的索引) 和 extra(附 阅读全文
posted @ 2025-06-08 11:32 jock_javaEE 阅读(38) 评论(0) 推荐(0)
摘要: 一、定义 在MySQL中,最左前缀匹配是指在查询中利用索引的最左边的一部分来进行匹配。指你执行查询时, 如果查询条件涉及到了组合索引的前几个列,MySQL 就可以利用这个复合索引来进行匹配。 组合索引,指的就是有多个字段组成的一个联合索引,如 idx_col1_col2_col3 (col1,col 阅读全文
posted @ 2025-06-07 23:18 jock_javaEE 阅读(11) 评论(0) 推荐(0)
摘要: 一、定义 所谓快照读,就是读取快照数据,即快照生成的那一刻的数据,像我们常用的普通的 select 语句在不加锁情况下就是快照读如: select * from xx_table where ... 和快照读相对应的另外一个概念叫做当前读,当前读就是读取最新数据,所以加锁的 select,或者对数据 阅读全文
posted @ 2025-06-06 16:58 jock_javaEE 阅读(26) 评论(0) 推荐(0)
摘要: 一、定义 ReadView 是 InnoDB 中一个至关重要的概念,它是实现MVCC的基础,同时他也是支持不同的事务隔离级别的基础,同时提高系统的并发能力和性能。 它到底是干啥的?简单来说,其实就是一句话:读视图(Read View) 主要来帮我们解决可见性的问题的, 即它会来告诉我们本次事务能看到 阅读全文
posted @ 2025-06-06 11:39 jock_javaEE 阅读(11) 评论(0) 推荐(0)
摘要: 一、什么是事务的2阶段提交 ? 所谓的MySQL事务的2阶段提交,其实是在更新过程中,保证binlog 和 redolog一致性的一种手段。 上图中右侧部分即为2阶段提交。他的过程是: Prepare 准备阶段 这个阶段 SQL 已经成功执行并生成 redolog,处于prepare阶段 BinLo 阅读全文
posted @ 2025-06-05 03:29 jock_javaEE 阅读(5) 评论(0) 推荐(0)