自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(342)
  • 收藏
  • 关注

原创 你们项目中有没有使用到AOP?

本文介绍了在后台管理系统中使用AOP技术实现操作日志记录的方法。通过AOP的环绕通知和切点表达式定位需要记录的方法,获取类信息、方法信息、注解及请求方式等参数,并将这些数据持久化到数据库中。该方法实现了系统操作日志的自动化记录功能。

2026-01-28 16:40:32 2

原创 什么是AOP?

Spring中的AOP(面向切面编程)通过抽取公共逻辑(如日志、事务)实现模块复用,降低耦合度,提升代码可维护性。

2026-01-25 20:07:58 13

原创 Spring框架中的单例bean是线程安全的吗?

Spring单例Bean在多线程环境下默认不是线程安全的,当多个请求并发修改单例状态时会出现线程安全问题。Spring框架本身不提供线程安全封装,开发者需自行处理。通常无状态Service/DAO类可视为线程安全,而有状态对象需要额外同步措施。最简解决方案是将作用域从singleton改为prototype。

2026-01-24 08:59:00 29

原创 那你之前使用过水平分库吗?

针对单库数据量超1000万导致的性能问题,采用水平分库方案。部署3台服务器和数据库,通过Mycat进行数据分片,按ID取模规则迁移旧数据,实现存储和读取压力的分摊,有效提升系统性能。

2026-01-21 10:43:10 314

原创 你们项目用过MySQL的分库分表吗?

MySQL分库分表是在单表数据量达到1000万或20G后,为解决性能瓶颈(IO/CPU)而采取的策略。垂直拆分按业务或字段划分,实现冷热数据分离;水平拆分通过取模或范围路由将数据分散到多个库表。拆分后需解决分布式事务、跨节点查询等问题,常用Sharding-Sphere、MyCat等中间件实现。适用于高并发、海量数据场景,能有效提升系统性能和可用性。

2026-01-17 16:44:52 389

原创 MySQL主从同步原理是什么?

MySQL主从复制通过二进制日志(Binlog)实现数据同步。主库将事务变更记录到Binlog,从库读取并写入中继日志(RelayLog),最终重做日志事件完成数据同步。

2026-01-16 12:00:07 22

原创 事务中的隔离性是如何保证的呢?(你解释一下MVCC)

MVCC通过隐藏字段(trx_id、roll_pointer)、undolog版本链和readview机制实现事务隔离。不同隔离级别通过readview控制事务访问数据的版本,避免读写冲突。undolog记录数据变更历史,形成版本链,roll_pointer实现版本回溯。该机制有效保证事务隔离性。

2026-01-14 14:03:07 14

原创 undo log和redo log的区别是什么?

redolog记录数据页物理变化,确保宕机恢复和事务持久性;undolog记录逻辑操作,支持事务回滚,保障原子性和一致性。两者分别负责物理恢复和逻辑回滚功能。

2026-01-12 09:14:58 88

原创 怎么解决并发事务问题呢?MySQL的默认隔离级别是?

MySQL提供四种事务隔离级别解决并发问题:未提交读无法解决任何问题;读已提交仅解决脏读;可重复读(默认级别)解决脏读和不可重复读;串行化能解决所有问题但性能较低。不同级别在数据一致性和性能间提供不同权衡。

2026-01-10 08:53:25 287

原创 并发事务带来哪些问题?

并发事务中的三大问题:脏读指读取到其他事务未提交的"脏数据";不可重复读指同一事务内多次读取同一数据结果不一致;幻读指读取到其他事务新插入的"幻行"。这些问题都源于事务间的并发操作导致的数据不一致现象。

2026-01-09 14:55:09 351

原创 事务的特性是什么?可以详细说一下吗?

ACID特性定义了事务的四个关键原则:原子性确保事务完全执行或完全不执行;一致性保证数据状态正确转换;隔离性防止并发事务相互干扰;持久性确保提交的事务永久保存。以转账为例,500元要么完整转移,要么完全不转,且转账过程不受干扰,结果永久存储。这些特性共同保障了数据库事务的可靠性。

2026-01-02 08:48:54 95

原创 在使用索引的时候,是如何优化呢?

索引创建应遵循查询优化原则:选择高频查询字段,采用复合索引覆盖返回值,避免索引字段运算和类型转换,合理控制索引数量。

2026-01-01 09:46:03 114

原创 创建表的时候,你们是如何优化的呢?

本文介绍了创建数据表时的字段类型选择方法。参考《嵩山版》开发手册,针对不同数据类型选择相应字段类型:数值类采用TINYINT、INT、BIGINT等;字符串类选用CHAR、VARCHAR或TEXT。通过合理匹配字段内容与数据类型,确保数据库设计规范高效。

2025-12-31 16:09:50 89

原创 SQL的优化经验有哪些?

SQL优化方法包括:合理选择字段类型、建立有效索引、优化SQL语句(避免SELECT*、优先UNIONALL和INNERJOIN)、实施主从复制与读写分离,以及大数据量时采用分库分表策略。这些措施能显著提升数据库性能。

2025-12-29 16:57:24 72

原创 什么情况下索引会失效?

索引失效的常见原因包括:1)违反最左匹配原则;2)模糊查询时%在前置位置;3)对索引字段进行运算或类型转换;4)复合索引中范围查询阻断后续条件索引使用。这些情况都会导致数据库无法有效利用索引,影响查询性能。

2025-12-28 23:09:44 122

原创 索引创建原则有哪些?

索引创建应遵循以下原则:数据量超过10万时考虑建索引;优先选择查询、排序或分组频繁的字段;推荐使用复合索引覆盖SQL返回值;区分度低的字段放组合索引后面;长字段可用前缀索引;需平衡索引数量,避免影响增删改性能。索引能提升查询效率,但过多会影响写入速度。

2025-12-26 09:33:09 109

原创 MySQL超大分页怎么处理?

针对大数据量分页查询效率低的问题,提出使用覆盖索引和子查询的优化方案。先通过覆盖索引快速查询ID字段完成分页,再基于ID列表用子查询获取完整数据,有效提升查询性能。该方法利用了索引优势,避免了直接大表排序的低效操作。

2025-12-25 17:50:59 125

原创 知道什么叫覆盖索引吗?

覆盖索引是一种优化技术,指查询所需字段全部包含在索引中,无需回表查询主键索引。它能减少I/O操作,显著提升查询性能,是数据库优化的有效手段。

2025-12-21 08:43:37 459

原创 知道什么是回表查询吗?

回表查询是通过二级索引找到主键值,再根据主键查询聚簇索引获取完整数据行的过程。这种操作需要两次索引查找,会影响查询性能,在优化时应尽量减少回表次数。

2025-12-20 14:13:50 81

原创 什么是聚簇索引什么是非聚簇索引?

本文介绍了数据库索引的两种类型:聚簇索引和非聚簇索引。聚簇索引将数据与索引存储在一起,B+树叶子节点包含整行数据,通常由主键构成且每个表只有一个;非聚簇索引则将数据与索引分开存储,B+树叶子节点保存主键值,允许创建多个且多为用户自定义索引。两种索引类型在数据组织和存储方式上存在明显差异。

2025-12-19 09:36:37 293

原创 B树和B+树的区别是什么呢?

B树与B+树的核心差异在于数据存储位置:B树各节点都存数据,B+树仅叶子节点存数据。这种结构使B+树查询效率更稳定,范围查询优势明显,因其叶子节点形成双向链表,支持高效顺序访问。

2025-12-18 09:14:15 99

原创 索引的底层数据结构了解过吗?

MySQL的InnoDB存储引擎采用B+树索引结构,因其具有路径短、磁盘读写高效、适合范围查询等优势。B+树节点可容纳更多子节点,非叶子节点仅存储键值和指针,叶子节点存储数据并形成双向链表,提升了查询性能。

2025-12-17 09:29:55 356

原创 了解过索引吗?(什么是索引)

索引是MySQL中提升查询效率的关键数据结构,通过减少I/O操作和排序成本来优化性能。它能加速数据检索,降低CPU消耗,是数据库优化的重要手段。

2025-12-16 09:48:14 101

原创 SQL语句执行很慢,如何分析呢?

使用MySQL的EXPLAIN命令可分析SQL执行慢的原因。通过检查key和key_len判断索引命中情况,type字段评估优化空间(如全表扫描),extra建议识别回表问题。优化方案包括添加索引或调整查询字段。

2025-12-15 09:22:46 143

原创 SQL语句执行很慢,如何分析呢?

MySQL的EXPLAIN命令是分析SQL性能的重要工具。通过检查key和key_len可判断索引命中情况,type字段能发现全表扫描等优化空间,extra建议可识别回表问题。针对发现的问题,可采取添加索引或修改返回字段等优化措施。

2025-12-14 10:23:10 493

原创 MySQL中,如何定位慢查询?

文章介绍了两种定位慢SQL的方法:1)通过Skywalking监控系统可以直观查看接口响应时间和SQL执行耗时,快速定位问题SQL;2)若无监控系统,可通过MySQL的慢查询日志功能,在配置文件中设置阈值(如2秒),系统会自动记录超时SQL到日志文件。这两种方法都能有效帮助开发人员发现和优化性能瓶颈。

2025-12-13 14:57:51 129

原创 能解释一下I/O多路复用模型?

I/O多路复用通过单线程监听多个Socket,在Socket就绪时通知处理,避免CPU空转。epoll模式直接将就绪Socket写入用户空间,无需遍历检查,提高性能。Redis采用I/O多路复用结合事件处理器处理Socket请求,包括连接应答、命令请求和回复处理器。Redis 6.0后优化性能,在回复处理器使用多线程处理回复事件,命令请求处理器中多线程转换命令,但命令执行仍保持单线程以保证原子性。

2025-12-12 09:05:21 405

原创 Redis是单线程的,但是为什么还那么快?

Redis是一款高性能内存数据库,核心特点包括:1)完全内存操作,C语言实现保证高效;2)单线程架构避免上下文切换和竞争;3)采用多路I/O复用和非阻塞IO模型。其独特设计通过后台线程(如BGSAVE和BGREWRITEAOF)处理持久化操作,确保主线程无阻塞,实现高并发处理能力。

2025-12-11 08:57:46 92

原创 Redis分片集群中数据是怎么存储和读取的?

Redis集群采用16384个哈希槽进行数据分片,每个主节点负责特定的槽范围。通过CRC16算法计算key的哈希值,并对16384取模确定所属槽位,进而定位到存储节点。这种机制实现了数据的均匀分布和高效访问,取值过程采用相同的计算逻辑确保一致性。

2025-12-10 09:18:57 125

原创 Redis的分片集群有什么作用?

分片集群通过多主节点分布式存储解决海量数据问题,每个主节点管理不同数据分片并配备多个从节点提升并发能力。节点间采用类似哨兵模式的健康监测机制,客户端请求可通过任意节点接入并自动路由到正确分片,实现高可用和高扩展性。

2025-12-09 09:02:14 263

原创 Redis集群脑裂,该怎么解决呢?

Redis脑裂问题指网络分区导致Sentinel误判主节点下线,从而选举新主节点,形成双主节点情况。客户端继续向旧主节点写入数据,网络恢复后旧主降为从节点,造成数据丢失。解决方案:1)配置最小从节点数,确保至少一个从节点可同步数据;2)设置主从复制延迟阈值,未达标则拒绝写入请求,减少数据丢失风险。这两种方法可有效缓解脑裂导致的数据不一致问题。

2025-12-08 09:04:52 116

原创 你们使用Redis是单点还是集群,哪种集群?

Redis部署建议采用主从架构(1主1从)加哨兵模式,单节点内存控制在10G以内。内存不足时可为不同服务分配独立的主从节点,避免使用分片集群。原因在于集群维护复杂,心跳检测和数据通信会消耗大量带宽,且不支持Lua脚本和事务功能。这种方案在保证性能的同时简化了运维管理。

2025-12-07 11:33:36 345

原创 怎么保证Redis的高并发高可用?

Redis通过主从集群和哨兵模式实现高可用性。哨兵模式提供自动故障恢复功能,监控主从服务并在master故障时将slave提升为master。故障恢复后自动以新master为主,同时将集群状态变化推送给客户端,确保服务连续性。这种架构能有效保障Redis的高并发和高可用性,是常用解决方案。

2025-12-06 10:09:47 104

原创 能说一下,主从同步数据的流程吗?

Redis主从同步分为全量和增量两个阶段。全量同步发生在从节点首次连接主节点时,主节点会生成RDB文件发送给从节点,并记录同步期间的命令到缓冲区。增量同步则在从节点重启后,主节点根据从节点的offset值,从命令日志中获取增量数据发送给从节点。这种机制确保了主从节点数据的一致性。

2025-12-05 09:27:46 126

原创 介绍一下主从同步

单节点Redis的并发能力有限,可通过搭建主从集群实现读写分离提升性能。典型架构为一主多从,主节点处理写操作,从节点处理读请求。主节点写入数据后会自动同步到从节点,确保数据一致性。这种架构能有效分担负载,提高Redis的整体并发处理能力。

2025-12-04 09:06:41 78

原创 Redis集群有哪些方案,知道吗?

Redis提供三种集群方案:1)主从复制实现读写分离但需手动故障转移;2)哨兵模式自动监控和故障转移,确保高可用;3)分片集群通过哈希槽实现数据分区和自动扩展,兼具高可用与水平扩展能力。三种方案各具特点,可根据业务需求选择不同级别的可用性和扩展性方案。

2025-12-01 09:03:50 234

原创 如果业务非要保证数据的强一致性,这个该怎么解决呢?

Redis虽然支持高可用,但实现强一致性会影响性能。对于强一致性要求高的业务场景,建议采用ZooKeeper实现的分布式锁,它能确保强一致性。

2025-11-30 09:02:31 640

原创 Redisson实现的分布式锁能解决主从一致性的问题吗?

Redis单节点锁在master宕机时可能导致多个线程同时获取锁,存在安全问题。Redisson红锁通过在多数节点上加锁来解决该问题,但会显著降低性能并增加运维成本。由于这些缺点,实际项目中通常不使用红锁,官方也已暂时废弃该方案。

2025-11-29 09:09:49 290

原创 Redisson实现的分布式锁是可重入的吗?

可重入锁通过判断当前线程是否持有锁来避免死锁。内部采用计数机制,线程获取锁时计数加一,释放时减一。数据存储使用哈希结构,大key可自定义业务逻辑,小key为线程唯一标识,value记录重入次数。这种设计实现了线程安全的锁重入功能。

2025-11-28 08:37:23 671

原创 你如何控制Redis实现分布式锁的有效时长呢?

Redisson框架通过优化Redis的SETNX指令实现了更可靠的分布式锁机制。其核心特性包括:1)支持手动控制锁的失效时间和等待时间;2)采用看门狗机制自动续期锁持有时间;3)提供锁自旋功能,在高并发场景下提高性能。相比原生SETNX,Redisson解决了锁续期和竞争等待问题,当持有锁的业务完成后能及时释放,确保后续请求快速获取锁,有效提升了分布式系统的并发处理能力。

2025-11-27 15:52:15 336

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除