![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 93
LightOfNight
希望能成为一名优秀的Golang开发工程师
展开
-
一文搞懂后端面试之数据库综合应用【中间件 | 数据库 | MySQL | 高可用 | 高性能】
在MySQL里面,允许用户开启查询缓存。你可以理解这个缓存就是用SQL作为键,而对应的查询结果集就是值。如果下次过来的还是同一个查询,那么就直接返回缓存起来的查询结果集。但是查询缓存不一定带来查询性能提升。如果你的查询每一次对应的SQL都不一样,那么查询缓存反而会降低性能。在实践中查询缓存的效果的确不怎么好。按照设计者的想法,查询缓存的最佳使用场景是一些特别复杂的查询,他们会扫描很多行,但是只有一小部分行满足条件。所以MySQL在8.0的时候移除了这个功能。原创 2024-08-15 21:24:27 · 669 阅读 · 0 评论 -
一文搞懂后端面试之数据库分布式事务【中间件 | 数据库 | MySQL | ACID】
重点:两阶段提交协议、三阶段提交协议和XA协议的基本步骤跨服务的分布式事务:TCC、SAGA、AT容错基本就是重试监控+告警+人工介入处理读数据+数据修复监控+告警+故障自动处理单纯的分库分表跨表事务,可以考虑延迟事务。原创 2024-08-12 21:13:27 · 934 阅读 · 0 评论 -
一文搞懂后端面试之不停机数据迁移【中间件 | 数据库 | MySQL | 数据一致性】
修复的时候就只能以主库数据为准。也就是说,通过先写目标表,再写源表这种方式,万一发现数据迁移出现了问题,还可以回滚为先写源表,再写目标表,确保业务没有问题。正常来说,批量插入如果使用的是VALUES语法,那么生成的主键是连续的,可以从返回的最后一个主键推测出前面其他行的主键。我们采用的方案是利用更新时间戳找出最近更新过的记录,然后再去目标表里面找到对应的数据,如果两者不相等,就用源表的数据去修复目标表的数据。还有如果你是导出的数据,那么导出数据到你导入数据的这段时间,数据发生了变化,目标表依旧是没有的。原创 2024-08-11 15:05:37 · 968 阅读 · 0 评论 -
一文搞懂后端面试之MySQL MVCC【中间件 | 数据库 | MySQL | 隔离级别 | Read View】
实际上和Read View相关的概念还有三个指的是m_ids中的最小值指的是下一个分配的事务ID当前事务IDm_up_limit_id 在左边,而 m_low_limit_id 在右边。原创 2024-08-06 21:06:37 · 1094 阅读 · 0 评论 -
一文搞懂后端面试之数据库MySQL的各种锁以及锁优化【中间件 | 数据库 | MySQL | 锁机制】
遇事不决临键锁:可以认为,全部都是加临键锁的,除了下面两个子句提到的例外情况右边缺省间隙锁:例如你的值只有(1,4,7)三个,但是你查询的条件是where id < 5,那么加的是间隙锁,因为7本身就不在查询范围里。等值查询记录锁:针对的是主键和唯一索引,不适用于普通索引。原创 2024-08-03 20:18:56 · 751 阅读 · 0 评论 -
一文搞懂后端面试之分库分表如何预估容量【中间件 | 数据库 | MySQL | 分库分表】
大部分数据库都支持分区表,以MySQL为例介绍分区表的主要特性:在MySQL里,分区表是表的底层组织方式,简单来说,就是把一张表分成几块,每一块存储在磁盘的一个地方,一块也叫做一个分区。比如典型的按月分区,是指每个月产生的数据在一个独立的区域,数据库可以单独处理某一块,也可以多块一起处理。分区表的优点和缺点如下:优点一些和时间有明显关系的业务场景,按照时间来进行分区要比直接使用分库分表更加简单高效大厂在容量规划时都是按照2的幂来规划的,比如428,或是8432,而且扩容的时候,也是按照2的幂进行的,基本原创 2024-07-23 20:58:22 · 1072 阅读 · 0 评论 -
万字长文之分库分表里无分库分表键如何查询【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表 | 其他查询】
在很多业务里,分库分表键都是根据主要查询筛选出来的,那么不怎么重要的查询怎么解决呢?比如?或是买家找客服,客服要找到对应的订单,又该怎么找?原创 2024-07-22 21:10:33 · 936 阅读 · 0 评论 -
万字长文之分库分表里如何优化分页查询?【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表 | 分页查询】
首次查询,拿到最小值二次查询,确实最小值的全局偏移量在二次查询的结果里根据最小值取到符合偏移量的数据首先发送查询语句 LIMIT X OFFSETY/N到所有的表找到返回结果中的最小值(升序),记作min执行第二次查询,关键是BETWEEN min AND max,其中max是第一次查询的数据中每个表各自的最大值根据min、第一次查询和第二次查询的值来确定min的全局偏移量。总的来说,min在某个表里的偏移量这样计算:如果第二次查询比第一次查询多了K条数据,偏移量就是Y/N-K。原创 2024-07-16 22:36:42 · 1317 阅读 · 2 评论 -
万字长文之分库分表里如何设计一个主键生成算法?【后端面试题 | 中间件 | 数据库 | MySQL | 分库分表】
大多数情况下,如果自己设计一个类似的算法,那么每个字段的含义、长度都可以灵活控制的,比如时间戳41比特可以改的更短或更长。机器ID虽然明面上是机器ID,但是实际上并不是指物理机器,准确说是算法实例。例如,一台机器部署两个进行,每个进行的ID是不同的;又或者进一步切割,机器ID前半部分表示机器,后半部分可以表示这个机器上用于产生ID的进程、协程或线程。甚至机器ID也并不一定非得表示机器,也可以引入一些特定的业务含义。而序列号也是可以考虑加长或缩短的。最后一句总结,升华主题。原创 2024-07-15 21:51:54 · 1098 阅读 · 0 评论