19|分库分表无分库分表键查询:你按照买家分库分表,那我卖家怎么查? 2024-09-11 | go面试 19|分库分表无分库分表键查询:你按照买家分库分表,那我卖家怎么查? 你好,我是大明,今天我和你来聊一聊分库分表下的一种特殊的查询——无分库分表键查询。 在很多业务里面,分库分表键都是根据主要查询筛选出来的。那么就会有这样一个问题,那些不怎么重…… Continue reading
18|分布式事务:如何同时保证分库分表、ACID和高性能? 2024-09-11 | go面试 18|分布式事务:如何同时保证分库分表、ACID和高性能? 你好,我是大明。 我们在把单库拆分成为分库分表之后,一个巨大的挑战就是 本地事务变成了分布式事务。事实上,即便没有分库分表,在微服务架构之下我们也还是会面临分布式事务的问题。所以,在学习…… Continue reading
17|分库分表分页查询:为什么你的分页查询又慢又耗费内存? 2024-09-11 | go面试 17|分库分表分页查询:为什么你的分页查询又慢又耗费内存? 你好,我是大明。今天我们来聊一聊分库分表分页查询。 在实践中,分页是分库分表之后肯定要解决的问题,如果解决方案没选好,那么很容易出现性能问题。分页的解决方案很多,不过能够在面试中系统地…… Continue reading
16|分库分表主键生成:如何设计一个主键生成算法? 2024-09-11 | go面试 16|分库分表主键生成:如何设计一个主键生成算法? 你好,我是大明。今天我们来聊一聊分库分表——主键生成。 分库分表在面试里是一个非常热门,而且偏难的一个话题。这节课我就带你来攻克这个难题,带你了解UUID、自增主键和雪花算法的特点,并且教你在…… Continue reading
15|数据迁移:如何在不停机的情况下保证迁移数据的一致性? 2024-09-11 | go面试 15|数据迁移:如何在不停机的情况下保证迁移数据的一致性? 你好,我是大明。今天我们来聊聊数据迁移的问题。 我之前就注意到很多人的简历里面都会提到数据迁移方面的内容。比如: 重构老系统:使用新的表结构来存储数据; 单库拆分分库分表、分库分表扩容; 大…… Continue reading
14|数据库事务:事务提交了,你的数据就一定不会丢吗? 2024-09-11 | go面试 14|数据库事务:事务提交了,你的数据就一定不会丢吗? 你好,我是邓明。今天我们来学习数据库中非常重要的一部分——数据库事务。这节课的内容和前面 MVCC 的内容联系很紧密,你要结合在一起学习。 数据库事务在面试中占据了比较重的分量。如果你面的是非常初级…… Continue reading
13|MVCC协议:MySQL在修改数据的时候,还能不能读到这条数据? 2024-09-11 | go面试 13|MVCC协议:MySQL 在修改数据的时候,还能不能读到这条数据? 你好,我是大明。今天我们来学习 MySQL 面试中非常重要的一个内容—— MVCC 协议。 MVCC(Multi-Version Concurrency Control)中文叫做多版本并发控制协议,是 MySQL InnoDB 引擎用于控制数…… Continue reading
12|数据库锁:明明有行锁,怎么突然就加了表锁? 2024-09-11 | go面试 12|数据库锁:明明有行锁,怎么突然就加了表锁? 你好,我是大明。今天我们来聊一聊 MySQL 中锁的问题。 锁在整个数据库面试中都是属于偏难,而且偏琐碎的一类问题。但是偏偏锁又很重要,比如说实践中遇到死锁影响了性能,这都要求我们必须对锁有一定的了解。并且…… Continue reading
11|SQL优化:如何发现SQL中的问题? 2024-09-11 | go面试 11|SQL优化:如何发现SQL中的问题? 你好,我是大明。今天我们来聊一聊数据库中的 SQL 优化。 一般而言,在面试过程中,我都是鼓励你尽可能为自己打造熟练掌握性能优化技巧的人设。高并发项目经验可遇不可求,但是高性能是可以勉强追求的,性能优化就是追…… Continue reading
10|数据库索引:为什么MySQL用B+树,MongoDB用B树? 2024-09-11 | go面试 10|数据库索引:为什么MySQL用B+树,MongoDB用B树? 你好,我是大明。 从这节课开始,我们将进入数据库这一章。在实际工作中,数据库设计得好不好、SQL 写得好不好将极大程度影响系统性能。而且,即便是再小的公司,也不可能说没有数据库,…… Continue reading