自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小小程序猿

记录学习历程,分析学习心得

  • 博客(15)
  • 收藏
  • 关注

原创 B+树索引结构的优点

MySQL选择B+树作为索引结构,是因为它满足了数据库系统对索引的需求:高效的磁盘I/O性能、高扇出以降低树的高度、良好的顺序访问性能,以及适用于范围查询的结构特点。相比于红黑树和B树,B+树的这些特性使其在处理大规模数据、减少磁盘访问次数和支持复杂查询时更为优越。高扇出减少磁盘I/O次数,提高了查找性能。叶子节点链表连接,使得范围查询和顺序访问更加高效。数据全部存储在叶子节点,内节点仅存储键值,提高了空间利用率和访问速度。插入与删除操作的稳定性,使得性能受影响较小。

2024-10-01 18:50:30 1000

原创 MySQL 索引最左匹配原则详解

在联合索引中,查询条件必须从索引的最左边的列开始,且顺序连续,才能有效使用索引。联合索引是由多列字段组成的索引,最左匹配原则决定了 MySQL 使用索引的方式。例如,如果有一个联合索引(A, B, C),那么 MySQL 只有在查询中使用A或(A, B)或(A, B, C)作为条件时,才能有效利用这个索引。这就是“最左匹配”的含义。使用A:索引有效。使用A和B:索引有效。只使用B或C:索引失效。使用B和C,但不使用A:索引失效。使用A和C:索引部分失效A走索引C不走索引。

2024-09-29 11:58:23 702

原创 MySQL索引详解

MySQL 中的索引是加速查询的利器,它可以显著提升查询的性能,但不当的使用也可能带来负面影响。了解索引的类型并合理使用它们,是数据库性能优化的重要部分。普通索引:适合常规查询加速。唯一索引:用于保证数据唯一性。主键索引:用于唯一标识每行数据。全文索引:用于文本搜索。空间索引:用于地理空间数据处理。复合索引:适合多列联合查询。在数据库设计中,要权衡索引带来的性能提升与存储及维护成本,合理设计和使用索引,以获得最佳的数据库性能。

2024-09-28 20:07:27 1440

原创 MySQL优化详解

MySQL的性能优化涉及多方面,包括合理的索引设计、查询的优化以及事务的管理。通过针对性的优化方法,可以大幅提升数据库的响应速度和并发处理能力。在实际项目中,应该根据业务需求和数据量选择合适的优化策略,确保数据库的高效运行。

2024-09-23 21:45:48 870

原创 MySQL 聚集索引与二级索引详解

聚集索引是一种根据表中某列的值对数据进行物理排序的索引。在 MySQL 的 InnoDB 存储引擎中,聚集索引的结构是一个B+树,并且数据表的物理存储顺序与索引的顺序保持一致。也就是说,数据存储按照主键或唯一索引的顺序排列。InnoDB 表的主键索引就是聚集索引,如果没有定义主键,InnoDB 会选择第一个非空唯一索引作为聚集索引;如果没有找到这样的索引,InnoDB 会自动创建一个隐式的主键列作为聚集索引。二级索引,也称为非聚集索引,是指数据的物理存储顺序与索引顺序无关的一类索引。

2024-09-20 15:41:22 843

原创 深入了解 MySQL 存储引擎

存储引擎是 MySQL 用来处理数据的底层软件模块。它决定了 MySQL 如何存储、处理和检索数据。你可以为每个表选择不同的存储引擎,这样就能根据不同的应用需求定制表的存储行为。InnoDBMyISAMMemoryCSVArchiveInnoDB 是 MySQL 的默认存储引擎,它支持事务处理、外键以及行级锁。它是 ACID(原子性、一致性、隔离性、持久性)兼容的,并且设计为处理高并发的场景。MyISAM 是 InnoDB 引擎的前任,它是 MySQL 5.5 之前的默认存储引擎。

2024-09-20 14:35:14 1178

原创 如何处理Redis性能瓶颈

当 Redis 性能出现瓶颈时,首先需要分析具体的瓶颈原因,是网络延迟、内存不足,还是大键阻塞、持久化影响等。针对不同的问题,可以采取不同的优化策略,例如提升网络性能、扩展内存、合理配置持久化、使用多线程或多实例、缓解热点键等。定期监控 Redis 的性能状态,快速响应潜在的问题,才能确保 Redis 持续高效运行。优化不仅限于 Redis 本身,还应从系统架构和应用层次全方位考虑。

2024-09-18 15:17:44 1130

原创 Redis 缓存雪崩、击穿、穿透问题及解决方案

Redis 缓存在高并发系统中起到了至关重要的作用,但缓存雪崩、击穿、穿透问题可能会导致系统性能下降甚至崩溃。针对这些问题,我们可以通过设置合理的缓存失效机制、使用互斥锁、布隆过滤器、缓存空值等手段来保证系统的稳定性和高可用性。

2024-09-17 09:36:14 703

原创 Redis实现分布式锁

Redis 作为一种高效的内存数据库,能够提供简单的分布式锁实现,但在某些复杂场景下,使用 Redlock 或 Redisson 能提高分布式锁的健壮性。分布式锁的正确实现对系统的可靠性和性能至关重要,需要根据实际业务需求进行合理设计和调优。

2024-09-15 21:40:14 1432

原创 Java 中自定义线程池

提供了高度灵活的线程池配置。通过其构造函数,我们可以自定义线程池的核心线程数、最大线程数、空闲线程存活时间、任务队列以及拒绝策略。int corePoolSize, // 核心线程数int maximumPoolSize, // 最大线程数long keepAliveTime, // 非核心线程空闲存活时间TimeUnit unit, // 空闲存活时间的单位BlockingQueue workQueue, // 任务队列。

2024-09-14 12:39:24 1047

原创 为什么 Redis 不能保证数据不丢失?

Redis 作为一个内存数据库,尽管具备持久化功能,但它的设计目标主要是追求高性能和高吞吐量,因此在某些情况下数据会丢失。RDB 和 AOF 都存在潜在的丢失数据风险,而 AOF 的不同同步策略也会影响数据的安全性。因此,在实际使用 Redis 时,需要根据业务需求选择合适的持久化机制,并且结合主从复制与备份策略,尽可能减少数据丢失的风险。

2024-09-12 20:38:09 911

原创 Redis中的跳表

跳表是一种基于多级链表的数据结构,它通过在链表的基础上增加多级索引来加速查找操作。传统链表的查找时间复杂度为 O(n),而跳表通过建立多层索引链表,优化了查找性能,平均查找时间复杂度为 O(log n)。底层链表包含所有的节点,并且按从小到大的顺序排列。上层链表是底层链表的一个“抽样”,每隔一段节点会抽取一个节点放到上层链表中,从而加速查找。每个节点会有一个随机的“高度”,表示该节点存在于多少层链表中。这种随机化策略使得跳表的平均复杂度为 O(log n),且避免了复杂的平衡操作。

2024-09-12 19:09:55 1086

原创 Redis 主从复制实现原理

Redis 主从复制(Replication)是一种将数据从一个 Redis 实例(主节点,master)同步到一个或多个 Redis 实例(从节点,slave)的机制。它提供了数据备份和负载均衡的功能。

2024-09-11 21:22:32 474

原创 Redis 的应用场景

Redis 提供了丰富的数据类型,每种类型都有其独特的应用场景。在实际开发中,选择合适的数据结构可以大大提高系统的性能和效率。掌握 Redis 的这些常见数据类型及其应用场景,将帮助你设计出更加高效的系统。

2024-09-11 14:03:43 1265

原创 Redis数据类型

Redis 提供了多种数据类型,以满足不同场景下的数据存储需求。

2024-09-10 12:43:01 485

空空如也

空空如也

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

TA关注的人

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