- 博客(438)
- 收藏
- 关注
原创 Hot Key和Big Key引发的问题怎么应
你可以通过提前熟悉 Cache 的经典问题,提前构建防御措施, 避免大量 key 同时失效,避免不存在 key 访问的穿透,减少大 key、热 key 的缓存失效,对热 key 进行分流。如果业务中这种大 key 很多,而这种 key 被大量访问,缓存组件的网卡、带宽很容易被打满,也会导致较多的大 key 慢查询。另外,如果大 key 缓存的字段较多,每个字段的变更都会引发对这个缓存数据的变更,同时这些 key 也会被频繁地读取,读写相互影响,也会导致慢查现象。对于大多数互联网系统,数据是分冷热的。
2025-02-23 15:08:51
887
原创 Redis集群搭建
Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。Redis 将所有的数据分为 16384 个 slots(槽),每个节点负责其中的一部分槽位,当有 Redis 客户端连接集群时,会得到一份集群的槽位配置信息,这样它就可以直接把请求命令发送给对应的节点进行处理。
2025-02-23 08:34:18
690
原创 Redis集群
客户端能够快捷的连接到服务端,主要是将slots与实例节点的映射关系存储在本地,当需要访问的时候,对key进行CRC16计算后,再对16384 取模得到对应的 Slot 索引,再定位到相应的实例上。回到我们刚刚的场景中,如果把 25GB 的数据平均分成 5 份(当然,也可以不做均分),使用 5 个实例来保存,每个实例只需要保存 5GB 数据。切片集群,也叫分片集群,就是指启动多个 Redis 实例组成一个集群,然后按照一定的规则,把收到的数据划分成多份,每一份用一个实例来保存。如何保存更多的数据。
2025-02-23 08:33:37
148
原创 Redis持久化RDB和AOF优缺点是什么,怎么实现的?我应该用哪一个?
AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)。RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换之前的文件,用二进制压缩存储。AOF 将 Redis 执行的每一条命令追加到磁盘中,处理巨大的写入会降低 Redis 的性能,不知道你是否可以接受。
2025-02-22 19:05:00
178
原创 MySQL进阶注意事项-锁
MySQL 中的锁机制非常重要,因为它直接影响到并发控制和数据的一致性。MySQL 支持多种锁类型,不同的锁类型在不同的操作和隔离级别下有不同的行为。
2025-02-16 14:07:58
914
原创 事务的隔离级别与MVCC
隔离级别的事务来说,都必须保证读到已经提交了的事务修改过的记录,也就是说假如另一个事务已经修改了记录但是尚未提交,是不能直接读取最新版本的记录的,核心问题就是:需要判断一下版本链中的哪个版本是当前事务可见的。如果一个事务先根据某些条件查询出一些记录,之后另一个事务又向表中插入了符合这些条件的记录,原先的事务再次按照该条件查询时,能把另一个事务插入的记录也读出来,那就意味着发生了。的特性,理论上在某个事务对某个数据进行访问时,其他事务应该进行排队,当该事务提交之后,其他事务才可以继续访问这个数据。
2025-02-16 09:23:11
828
原创 万物皆索引
这一讲,我们对上一节索引的部分做了更为深入的介绍,你应该了解到MySQL InnoDB 存储引擎是索引组织表,以及索引组织表和堆表之间的区别。索引组织表主键是聚集索引,索引的叶子节点存放表中一整行完整记录;除主键索引外的索引都是二级索引,索引的叶子节点存放的是(索引键值,主键值);由于二级索引不存放完整记录,因此需要通过主键值再进行一次回表才能定位到完整数据;索引组织表对比堆表,在海量并发的OLTP业务中能有更好的性能表现;每种不同数据,对二级索引的性能开销影响是不一样的;
2025-02-15 10:46:12
707
原创 mysql B+树中为什么同层的非叶子节点所在的页也使用双向链表连接?
实际采取的做法是,只遍历了10个叶子节点,根据这10个节点算出每个节点平均包含多少条数据,然后用这个数据乘以m,就是n的值了。同理可以知道q的值。同样的办法,只要10个页,算出平均值,然后找到倒数第三层遍历,用倒数第三层的条数,乘以这个平均值,就得到了k和t。: 在B+树的操作中,非叶子节点通过双向链表连接的设计能让多个查询操作更加独立,减少了节点之间的锁竞争,提升了数据库的并发性能。总结来说,非叶子节点用双向链表连接,是为了优化范围查询和顺序扫描的效率,减少重复查找路径,提升数据库的整体查询性能。
2025-02-15 10:45:13
623
原创 MySQL字段的字符类型该如何选择?千万数据下varchar和char性能竟然相差30%[特殊字符]
需要存储文本字符时,可以选择TEXT相关的类型,读取时需要从磁盘中获取,但可以存储的空间多适合存储大文本需要存储二进制流可以选择BLOB相关的类型char是固定的字符串,varchar是可变长的字符串,它们占用的空间与选择使用的字符集和分配的长度有关varchar长度255及以下会使用一个字节记录可变长长度,以上会使用两个字节记录可变长长度char中未存满的值会用空格填充,因此字符串末尾无法存储空格,而varchar不会填充末尾可以存储空格。
2025-02-14 15:55:41
1124
原创 MySQL的数据类型
MySQL 支持多种数据类型,包括数值型、字符串型、日期时间型、二进制型等。数据类型的选择应该根据存储的数据类型和范围来确定。例如,对于存储性别的字段,可以使用 ENUM 类型,因为该字段的取值范围较小,只有男、女两个取值。对于存储长文本的字段,应该使用 LONGTEXT 类型,而不是 TEXT 类型,以支持更大的文本内容。
2025-02-13 21:25:44
400
原创 MySQL的DDL
这些 DDL 语句可以通过 MySQL 命令行客户端或图形化客户端(如 MySQL Workbench)等工具执行。在执行 DDL 语句时,需要注意语法的正确性,避免错误操作导致数据库结构的损坏。同时,DDL 操作具有较高的权限,应该谨慎使用。MySQL 的 DDL(Data Definition Language)是用于定义数据库、表、列、索引等数据库对象的语言。
2025-02-13 21:25:07
408
原创 SQL语句的分类
SQL(Structured Query Language,结构化查询语言)是一种用于关系数据库管理系统的标准化查询语言,主要用于数据库中数据的增删改查、表的创建与删除、表之间的关联和约束等方面。
2025-02-13 21:23:21
320
原创 MySQL可视化客户端
MySQL 可视化客户端是一个图形化界面的工具,可以帮助用户更方便地管理和操作 MySQL 数据库。这些 MySQL 可视化客户端都有其优缺点,用户可以根据自己的需求和使用习惯选择适合自己的工具。
2025-02-13 21:22:49
1050
原创 MySQL OR 运算符的用法
本文介绍了 MySQL 中如何在 WHERE 子句中使用 OR 运算符组合多个查询条件过滤查询数据。当使用SELECT查询数据时,如果WHERE子句中有多个条件,可以根据需要使用ANDOR, 或者NOT运算符将他们组合起来。本文主要介绍OR运算符。
2025-02-09 19:34:17
785
原创 MySQL AND 运算符的用法
本文介绍了 MySQL 中如何在 WHERE 子句中使用 AND 运算符组合多个查询条件过滤查询数据。当使用SELECT查询数据时,如果WHERE子句中有多个条件,可以根据需要使用ANDOR, 或者NOT运算符将他们组合起来。本文主要介绍AND运算符。
2025-02-09 19:33:39
688
原创 MySQL 使用 WHERE 子句过滤数据
WHERE子句允许您为SELECT查询指定搜索条件。以下是WHERESELECTFROMtable_nameWHERE其中就是查询条件,它的结果是一个布尔值,其值可能为TRUEFALSE或UNKNOWN。最终,SELECT语句返回的结果集就是满足查询条件结果为TRUE的记录。查询条件也可以是使用ANDOR和NOT逻辑运算符一个或多个表达式的组合。除了用在SELECT语句之外,WHERE子句还可以用在UPDATE和DELETE语句中,用来指定要更新或删除的行。
2025-02-09 19:32:31
636
原创 MySQL SELECT 语句
本文介绍了 MySQL 中的SELECT语句的基本形式,以及如何使用SELECT语句从数据库中查询数据。SELECT语句用于从一个或多个表中检索数据,是 MySQL 中使用最多的语句。
2025-02-09 19:31:44
555
原创 执行一条 select 语句,期间发生了什么
这里说的查询缓存是 server 层的,也就是 MySQL 8.0 版本移除的是 server 层的查询缓存,并不是 Innodb 存储引擎中的 buffer pool。命令,这样就会输出这条 SQL 语句的执行计划,然后执行计划中的 key 就表示执行过程中使用了哪个索引,比如下图的 key 为。我下面这条查询语句,test 这张表是不存在的,这时 MySQL 就会在执行 SQL 查询语句的 prepare 阶段中报错。,比如在表里面有多个索引的时候,优化器会基于查询成本的考虑,来决定选择使用哪个索引。
2025-02-09 19:30:33
284
原创 MySQL聚合函数
在 MySQL 中,聚合函数用于在查询中对一组数据进行计算并返回单个结果。子句一起使用的,以对每个分组计算结果。需要注意的是,聚合函数通常是与。
2025-02-08 11:11:55
127
原创 MySQL查询like
在 MySQL 中,LIKE 运算符用于模糊查询满足指定模式的数据,通常用于字符串类型的字段。LIKE 运算符可以与通配符一起使用,通配符用于指定要匹配的模式。以上示例将返回所有名字以 "Tom" 开头的员工的信息。以上示例将返回所有名字以 "son" 结尾的员工的信息。以上示例将返回所有名字中包含 "Tom" 的员工的信息。以上示例将返回所有名字长度为 3 的员工的信息。需要注意的是,使用 LIKE 运算符进行模糊查询可能会影响查询性能,特别是在处理大量数据时。
2025-02-08 11:09:37
419
原创 MySQL条件查询where子句
在使用 WHERE 子句时,需要注意语句的性能和效率,避免对数据库造成不必要的负担。以上示例将返回所有年龄大于 30 岁且薪水高于 5000 的员工的信息,或者返回所有年龄大于 30 岁或薪水高于 5000 的员工的信息。以上示例将返回所有薪水在 5000 到 8000 之间的员工的信息。以上示例将返回所有年龄为 25、30 或 35 的员工的信息。以上示例将返回所有名字以 "Tom" 开头的员工的信息。以上示例将返回所有薪水高于 5000 的员工的信息。IN 运算符用于从表中检索符合指定值列表的数据。
2025-02-08 11:07:00
197
原创 MySQL DQL
DQL 还有许多其他功能,例如使用 GROUP BY 和 HAVING 子句进行分组、使用 JOIN 子句连接多个表等等。在使用 DQL 语句时,需要注意语句的性能和效率,避免对数据库造成不必要的负担。ORDER BY 子句用于按指定列对结果进行排序,可以按升序或降序排序。WHERE 子句用于过滤检索结果。可以根据多个条件过滤数据。可以使用 SELECT 语句选择表中的指定列。SELECT * 语句用于检索表中的所有列。LIMIT 子句用于限制检索结果的数量。
2025-02-08 11:04:43
154
原创 MySQL DML
DML 是 MySQL 中的一种语言,用于操作表中的数据,包括 SELECT、INSERT、UPDATE 和 DELETE 四种操作。在使用 DML 语句时,需要小心使用 WHERE 子句和其他限制条件,以免意外删除或修改数据。另外,需要注意语句的性能和执行效率,避免对数据库造成不必要的负担。需要指定表名和要插入的数据。UPDATE 语句用于更新表中的数据。需要指定表名、要更新的字段和新的值,以及 WHERE 子句指定更新的条件。需要指定表名和 WHERE 子句指定要删除的数据。
2025-02-08 11:03:42
117
原创 小王打怪之路-语雀文章创作记录
大家好,我是小王,今天想和大家分享一下我在技术文章创作过程中的一些感想和心得。作为一名技术爱好者,我一直在探索如何更好地表达和分享我的知识。在这个过程中,我积累了一些经验,希望能对大家有所帮助。于是,我决定将自己的学习过程和解决问题的经验记录下来,方便自己回顾,也希望能帮助到遇到类似问题的朋友。未来,我计划继续坚持写作,并尝试更多元化的内容形式,比如视频教程和在线课程。我希望能够帮助更多的人,也期待在技术分享的道路上走得更远。如果你也有兴趣写技术文章,不妨从现在开始,记录下你的学习和思考。
2025-02-07 17:52:39
458
1
原创 MySQL简介
MySQL是一种开源的关系型数据库管理系统(RDBMS),由瑞典MySQL AB公司开发,目前由Oracle公司进行开发和维护。MySQL使用标准的SQL数据语言进行数据的管理和操作,支持多种操作系统平台,包括Linux、Windows和Mac OS等。开源、免费:MySQL是一个完全开源的软件,可以免费下载和使用。稳定、可靠:MySQL是一种经过广泛测试和验证的数据库管理系统,具有良好的稳定性和可靠性。高性能:MySQL使用多种技术和优化策略,可以提供高效的数据存储和检索功能。
2025-02-07 10:24:33
803
原创 数据库的基本概念
数据库是一种用于存储、组织和管理数据的电子系统,可以让用户方便地存储和检索数据。数据库通常由一个或多个数据表组成,每个表都有一些列,每列代表了一个特定的数据类型。在表中,每一行都代表了一条记录,其中每个列都包含了相应的数据值。数据库可用于各种类型的应用程序,包括商业、科学、医疗、社交媒体等等。它们提供了一种安全、可靠的数据存储方式,可以让多个用户同时访问和处理同一个数据集。用户可以在数据库中进行各种操作,例如添加、修改、删除和查询数据。
2025-02-07 10:20:01
696
原创 数据库简介
数据库管理系统(DBMS)是一种用于管理数据库的软件系统,它提供了创建、读取、更新和删除(CRUD)数据库中数据的方法。DBMS的主要任务是对数据进行有效和安全的管理。DBMS允许用户定义和创建数据库,定义表和它们的关系,定义表中数据的约束和规则,以及查询和更新数据等。它还提供了一种访问控制机制,以确保只有授权用户才能访问数据库。DBMS还提供了各种性能优化机制,如索引、缓存、查询优化等,以提高数据库的性能。
2025-02-07 10:06:22
516
原创 常见数据结构及其特点
是一种物理存储单元上非连续、非顺序的存储结构,它既可以表示线性结构,也可以用于表示非线性结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。,每个结点都有一个值。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
2025-02-06 10:58:02
371
原创 数据的逻辑结构和物理结构
数据元素之间的关系的机内表示可以分为顺序映像和非顺序映像,常用两种存储结构:顺序存储结构和链式存储结构。顺序映像借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。非顺序映像借助指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系。数据的物理结构是数据结构在计算机中的表示(又称映像),它包括数据元素的机内表示和关系的机内表示。指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。数据结构中的元素存在多对多的相互关系。
2025-02-06 10:57:31
215
原创 java中支持协程吗
Java 本身并没有原生的协程支持,但你可以通过一些方式实现类似协程的效果。协程本质上是轻量级的线程,它允许在单个线程中执行多个任务并进行上下文切换,这可以减少线程切换的开销。是一个值得关注的方向,未来可能会在 Java 中内置原生的协程支持。如果你使用的是 Kotlin,那直接使用 Kotlin 的协程功能会是一个不错的选择。如果你想要更轻量的并发处理,
2025-02-05 10:07:48
286
原创 Go语言中有线程吗
Go 没有传统意义上的线程,而是使用 goroutine 来实现并发。Goroutine 是由 Go 运行时管理的轻量级执行单元,它们在执行效率和资源占用上比操作系统线程更具优势,因此适用于需要处理大量并发任务的场景。
2025-02-05 10:07:17
495
原创 Java后端独立开发掌握技能
链接:https://www.zhihu.com/question/433907457/answer/79917399779。涵盖了Java后端开发的各个层面,开发者可以根据需求和项目规模选择适合的技术来构建系统。商业转载请联系作者获得授权,非商业转载请注明出处。
2025-02-04 20:05:37
1295
原创 MQ消息队列
多个消费者绑定到一个队列,同一条消息只会被一个消费者处理通过设置prefetch来控制消费者预取的消息数量交换机的作用是什么?接收publisher发送的消息将消息按照规则路由到与之绑定的队列不能缓存消息,路由失败,消息丢失FanoutExchange的会将消息路由到每个绑定的队列描述下Direct交换机与Fanout交换机的差异?Fanout交换机将消息路由给每一个与之绑定的队列Direct交换机根据RoutingKey判断路由给哪个队列。
2025-02-04 20:01:57
1215
原创 微服务保护
Sentinel是阿里巴巴开源的一款服务保护框架,目前已经加入SpringCloudAlibaba中。官方网站:核心库(Jar包):不依赖任何框架/库,能够运行于 Java 8 及以上的版本的运行时环境,同时对 Dubbo / Spring Cloud 等框架也有较好的支持。在项目中引入依赖即可实现服务限流、隔离、熔断等功能。控制台(Dashboard):Dashboard 主要负责管理推送规则、监控、管理机器信息等。为了方便监控微服务,我们先把Sentinel的控制台搭建出来。1)下载jar包。
2025-02-04 20:01:10
426
原创 Java微服务
无论是GatewayFilter还是GlobalFilter都支持自定义,只不过编码方式、使用方式略有差别。自定义GatewayFilter不是直接实现GatewayFilter,而是实现AbstractGatewayFilterFactory。@Component@Override@Override// 获取请求// 编写过滤器逻辑System.out.println("过滤器执行了");// 放行注意:该类的名称一定要以GatewayFilterFactory为后缀!
2025-02-04 20:00:15
1014
原创 maven高级,一篇即懂
1. A项目依赖了junit2. B项目依赖了A项目3. 根据依赖传递特性,默认情况下B项目会依赖junit4. 我们可以在A项目通过可选依赖,让B项目不能依赖junit。
2025-02-03 16:05:05
1047
原创 MybatisPlus一篇即懂
由于Service中经常需要定义与业务有关的自定义方法,因此我们不能直接使用IService,而是自定义Service接口,然后继承IService以拓展方法。MybatisPlus不仅提供了BaseMapper,还提供了通用的Service接口及默认实现,封装了一些常用的service模板方法。= null 这样的参数,意思就是当条件成立时才会添加这个查询条件,类似Mybatis的mapper.xml文件中的<if>标签。但是我们数据库采用的是int类型,对应的PO也是Integer。
2025-02-03 16:03:57
949
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人