MySQL
老鬼。。。
个人十年Java新手学习交流QQ群:3907814 ,专注技术交流学习。
展开
-
如何设计一个高并发系统?
面试题如何设计一个高并发系统?心理分析说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期并发量上万,甚至是十万。那么人家一定会仔细盘问你的系统架构,你们系统啥架构?怎么部署的?部署了多少台机器?缓存原创 2020-12-05 11:33:07 · 112 阅读 · 0 评论 -
如何实现 MySQL 的读写分离?MySQL 主从复制原理是啥?如何解决 MySQL 主从同步的延时问题?
面试题你们有没有做 MySQL 读写分离?如何实现 MySQL 的读写分离?MySQL 主从复制原理的是啥?如何解决 MySQL 主从同步的延时问题?面试官心理分析高并发这个阶段,肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 app,其实都是读多写少。所以针对这个情况,就是写一个主库,但是主库挂多个从库,然后从多个从库来读,那不就可以支撑更高的读并发压力了吗?面试题剖析如何实现 MySQL 的读写分离?其实很简单,就是基于主从复制架构,简单来说,就搞一个主原创 2020-12-04 09:12:43 · 198 阅读 · 0 评论 -
分库分表之后,id 主键如何处理?
面试题分库分表之后,id 主键如何处理?面试官心理分析其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因为要是分成多个表之后,每个表都是从 1 开始累加,那肯定不对啊,需要一个全局唯一的 id 来支持。所以这都是你实际生产环境中必须考虑的问题。面试题剖析基于数据库的实现方案数据库自增 id这个就是说你的系统里每次得到一个 id,都是往一个库的一个表里插入一条没什么业务含义的数据,然后获取一个数据库自增的一个 id。拿到这个 id 之后再往对应的分库分表里去写入。这个方案原创 2020-12-03 09:14:55 · 295 阅读 · 0 评论 -
如何设计可以动态扩容缩容的分库分表方案?
面试题如何设计可以动态扩容缩容的分库分表方案?面试官心理分析对于分库分表来说,主要是面对以下问题:选择一个数据库中间件,调研、学习、测试;设计你的分库分表的一个方案,你要分成多少个库,每个库分成多少个表,比如 3 个库,每个库 4 个表;基于选择好的数据库中间件,以及在测试环境建立好的分库分表的环境,然后测试一下能否正常进行分库分表的读写;完成单库单表到分库分表的迁移,双写方案;线上系统开始基于分库分表对外提供服务;扩容了,扩容成 6 个库,每个库需要 12 个表,你怎么来增加更多库原创 2020-12-02 09:13:30 · 259 阅读 · 1 评论 -
现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?
面试题现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上?面试官心理分析你看看,你现在已经明白为啥要分库分表了,你也知道常用的分库分表中间件了,你也设计好你们如何分库分表的方案了(水平拆分、垂直拆分、分表),那问题来了,你接下来该怎么把你那个单库单表的系统给迁移到分库分表上去?所以这都是一环扣一环的,就是看你有没有全流程经历过这个过程。面试题剖析这个其实从 low 到高大上有好几种方案,我们都玩儿过,我都给你说一下。停机迁移方案我先给你说一原创 2020-12-01 13:51:46 · 135 阅读 · 0 评论 -
为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?
面试题为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的?心理分析其实这块肯定是扯到高并发了,因为分库分表一定是为了支撑高并发、数据量大两个问题的。而且现在说实话,尤其是互联网类的公司面试,基本上都会来这么一下,分库分表如此普遍的技术问题,不问实在是不行,而如果你不知道那也实在是说不过去!面试题剖析为什么要分库分表?(设计高并发系统的时候,数据库层面该如何设计?)说白了原创 2020-11-30 09:20:52 · 160 阅读 · 0 评论 -
如何保证缓存与数据库的双写一致性?
面试题如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑原创 2020-11-25 13:51:28 · 91 阅读 · 0 评论 -
怎么判断你的MySQL到底是读多还是写多
经常可以看到一些文章说,我们的数据库基本是读多写少,所以要做读写分离架构。我就很纳闷,他们是怎么判断出来数据库的读多写少的呢?其实更多的时候是人云亦云,拍脑门罢了~ 下面就告诉大家正确的姿势笨方法(不准确)查看自己项目内的所有sql语句,去做个统计,到底是select语句多,还是insert、update、delete语句多。但是这依然不准确,因为就算select语句写的多,但是不代表执行的多,可能我们的项目存在大量的批量更新操作。正确方法(绝对准确)通过show status命令,可查看数据转载 2020-10-22 09:27:04 · 563 阅读 · 0 评论