数据库
文章平均质量分 90
就要学Java
Java全套进阶资料以及面试题可以后台私信我!!!!!!
展开
-
阿里P7大佬带你深入理解熔断、降级的Hystrix实现
前面的章节,我们学习了微服务中对熔断降级的原理,参考这篇《了解了固定窗口算法、滑动窗口算法、 漏桶原理和令牌桶原理,本文对Hystrix做进一步的分析。Hystrix是Netflix开源的一款具备熔断、限流、降级能力的容错系统,设计目的是将应用中的系统访问、多链路服务调用、第三方依赖服务的调用,通过流量资源控制的方式隔离开。避免了在分布式系中的某个服务故障沿着调用链向上传递,出现整体的服务雪崩,并以此提升系统的稳定性和健壮性。原创 2023-05-30 14:59:04 · 450 阅读 · 0 评论 -
美团大厂架构师带你了解MySQL索引实现和使用
表中的数据发生变更的时候,会影响其他记录地址的变化,如果辅助索引中记录数据的地址,此时会受影响,而主键的值一般是很少更新的,当页中的记录发生地址变更的时候,对辅助索引是没有影响的。也是B+树结构,MyISM使用的是非聚簇索引,如下图,非聚簇索引的两棵B+树看上去没什么不同,节点的结构完全一致只是存储的内容不同而已,主键索引B+树的节点存储了主键,根据我们之前的了解,每个磁盘块(disk)存储的内容是有限的,如果一个页中可以存储的索引记录越多,那么查询效率就会提高,所以我们可以指定索引的字段长度。原创 2023-05-30 14:45:02 · 155 阅读 · 0 评论 -
追求性能的极致:Redis6.0的多线程模型(附面试题)
就会明白,Redis所谓的单线程并不是所有工作都是只有一个线程在执行,而是指Redis的网络IO和键值对读写是由一个线程来完成的,Redis在处理客户端的请求时包括获取 (socket 读)、解析、执行、内容返回 (socket 写) 等都由一个顺序串行的主线程处理。由于Redis在处理命令的时候是单线程作业的,所以会有一个Socket队列,每一个到达的服务端命令来了之后都不会马上被执行,而是进入队列,然后被线程的事件分发器逐个执行。如果并发量很高,达到万级别的 QPS,就会形成瓶颈,影响整体吞吐能力。原创 2023-05-30 11:09:02 · 383 阅读 · 0 评论 -
面试官:你知不知道如何提高Mysql性能(MySQL性能的7个技巧)
在下图中,InnoDB日志文件的大小不够大,因为使用的空间非常接近可用的重做日志空间(由红线表示)。与所有对您的业务目标至关重要的事情一样,您的数据库性能可能会导致或破坏你的业务目标或成果。如果您正在运行非常复杂的查询,或者有大量的并发数据库连接,或大量的表,可能需要将此值降低一个档次,以便为其他操作分配更多的内存。相反,如果连接的数量不足以满足您的应用程序的需要,那么您的应用程序将无法连接到数据库(在您的用户看来,这就像是停机时间)。否则,用户会抱怨(或者更糟的是,转到不同的应用程序)。原创 2023-05-29 17:40:30 · 162 阅读 · 0 评论 -
高薪面试题:索引为什么会加快查询效率?深入理解MySQL索引原理和实现
说到索引,很多人都知道“索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址,在数据十分庞大的时候,索引可以大大加快查询的速度,这是因为使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的物理地址然后访问相应的数据。但是索引是怎么实现的呢?因为索引并不是关系模型的组成部分,因此不同的DBMS有不同的实现,我们针对MySQL数据库的实现进行说明。原创 2023-05-29 17:20:16 · 1459 阅读 · 0 评论 -
价值20k的文章:分布式MySQL集群方案的探索
首先分布式事务涉及到的一致性和CAP中一致性是两个概念,事务ACID属性中的一致性不涉及最终一致性,对于关系型数据库中事务的概念,我的理解都是强一致的(通过原子性和隔离型保证)。只有涉及到某一个节点(内容是相同的情况)多副本之间的复制问题才会涉及到弱一致性或者最终一致性(CAP中C)的问题。而分布式事务本身如果保证了原子性和隔离性,数据库层面就提供了一致性保证,其余的是应用逻辑层面保证。原创 2023-05-26 10:12:32 · 52 阅读 · 0 评论 -
Mybatis面试18问,你想知道的都在这里了!
与JDBC批处理相同。原理是,Mybatis解析A标签,发现A标签引用了B标签,但是B标签尚未解析到,尚不存在,此时,Mybatis会将A标签标记为未解析状态,然后继续解析余下的标签,包含B标签,待所有标签解析完毕,Mybatis会重新解析那些被标记为未解析的标签,此时再解析A标签时,B标签已经存在,A标签也就可以正常解析完成了。另一种是使用嵌套查询,嵌套查询的含义为使用join查询,一部分列是A对象的属性值,另外一部分列是关联对象B的属性值,好处是只发一个sql查询,就可以把主对象和其关联对象查出来。原创 2023-05-25 15:14:17 · 33 阅读 · 0 评论 -
Mysql数据库和Redis缓存如何实现双写一致性?
方案选型首先确认产品上对延迟性的要求,如果要求极高,且数据有可能变化,别用缓存。通常来说,方案1就够了,笔者咨询过4,5个团队,基本都是用方案1,因为能用缓存方案,通常是读多写少场景,同时业务上对延迟具有一定的包容性。方案1没有开发成本,其实比较实用。如果想增加更新时的即时性,就选择方案2,不过没必要做重试保证之类的。方案3,方案4针对于对延时要求比较高业务,一个是推模式,一个是拉模式,而方案4具备更强的可靠性,既然都愿意花功夫做处理消息的逻辑,不如一步到位,用方案4。结论一般情况,方案1够用。原创 2023-05-25 15:06:24 · 261 阅读 · 0 评论 -
谈谈为什么项目中要拆分数据库?有哪些方法?
垂直切分是根据业务来拆分数据库,同一类业务的数据表拆分到一个独立的数据库,另一类的数据表拆分到其他数据库。比如说一个新零售的电商数据库,我们可以把跟商品相关的数据表拆分成一个数据库,然后在这些数据表的基础之上,构建出商品系统。比如用JAVA或者PHP语言,创建出一个商城系统。然后把跟进销存相关的数据表拆分到另外一个数据库上,再用程序构建出仓库系统。垂直切分解决了什么问题垂直切分可以降低单节点数据库的负载。原创 2023-05-25 14:54:43 · 75 阅读 · 0 评论