JAVA系列课程
Hollis,阿里巴巴技术专家《Java工程师成神之路》系列文章作者,热衷于分享计算机编程相关技术,博文全网阅读量上千万。
2024年10月16日
MySQL索引下推(Index Condition Pushdown,ICP)是一种优化技术,旨在提高查询效率,尤其是在使用复合索引的情况下。通过在索引查找阶段就进行条件过滤,减少需要读取的数据行,从而降低I/O开销和提高查询性能。
一、索引下推基本概念
在进行查询时,MySQL通常会先通过索引找到符合条件的行,然后再通过这些行去数据表中读取完整的记录。索引下推的做法是将某些过滤条件“下推”到索引查找阶段,使得只有符合条件的行才会被读取,从而减少不必要的I/O操作。
实现原理
MySQL索引下推的实现依赖于以下几个步骤:
索引查找:在查找时,使用索引确定符合条件的记录位置。
条件下推:对于索引中找到的每一条记录,MySQL会根据下推的条件(如WHERE子句中的条件)进行过滤。
返回结果:只有符合下推条件的记录会被返回,避免了不必要的全表扫描。
具体来说,当执行包含多个条件的查询时,MySQL会分析条件并决定哪些条件可以在索引层面进行过滤。这使得系统在早期就能淘汰不符合条件的数据,从而加速查询。
二、如何开启MySQL索引下推
在MySQL...
2024年10月15日
分布式事务是指在分布式系统中,由多个独立的服务或数据库参与的事务,确保这些分布式节点上的操作能够一致完成或回滚,从而保证数据的一致性。
一、两阶段提交(2PC)
将事务分为准备阶段和提交阶段。各节点在准备阶段确认操作无误后再提交,在遇到错误时会回滚。在2PC中,有两个核心角色,协调者、参与者。
优点:能保证各参与节点数据的一致性,适用于对数据一致性要求高的场景。
缺点:性能开销大(锁定资源时间较长)、可能会出现“协调者单点故障”问题,导致系统阻塞。
准备阶段:
(1)协调者向所有参与者发送commit请求,询问是否可以提交事务,并等待答复。
(2)各参与者开始准备执行事务,将uodo...
2024年10月12日
一、什么是CAP定理
CAP定理指出,在分布式系统中,无法同时满足一致性、可用性和分区容错性这三个特性。通常需要在一致性和可用性之间进行取舍,因为分区容错性对于分布式系统而言几乎是必不可少的。
CAP定理:C(数据一致性)、A(可用性)、P(分区容错性)
(1)C全称Consistency(一致性)...
2024年10月11日
一、基于Zookeeper实现分布式锁
通过ZooKeeper的节点创建与删除来实现分布式锁,使用临时节点(防止死锁)和顺序节点(可以利用锁释放的事件监听机制,来实现阻塞监听式的分布式锁)来管理锁的获取与释放。
也可通过使用ZooKeeper的一个客户端Curator,Curator提供的InterProcessMutex是分布式锁的实现,acquire方法用于获取锁,release方法用于释放锁。
实现原理:Zookeeper是一个分布式协调服务,分布式协调主要是来解决分布式系统中多个应用之间的数据一致性,Zookeeper内部的数据存储方式类似于文件目录形式的存储结构。在Zookeeper中的指定路径下创建临时节点,然后客户端根据当前路径下的节点状态来判断是否加锁成功。
获取锁:
创建一个临时序列节点,代表当前请求的锁。
获取当前根节点下的所有子节点并进行排序。
检查当前节点是否是最小的节点,如果是,则获取锁成功。
如果不是,则设置一个观察者,等待前一个节点的删除。
释放锁:...
2024年10月9日
一、什么是异常处理
异常处理是程序设计中用于捕获和处理运行时错误的机制。异常分为两大类,一个是Checked异常,一个是Runtime异常。
异常分类结构:
Throwable类主要方法:
getMessage()...