MySQL分库分表,一般只能按照一个维度进行查询.以订单表为例, 按照用户ID mod 64 分成 64个数据库.按照用户的维度查询很快,因为最终的查询落在一台服务器上.但是如果按照商户的维度查询,则代价非常高.需要查询全部64台服务器.在分页的情况下,更加恶化.比如某个商户查询第10页的数据 ...
目录 前言 Elasticsearch构建二级索引 Elasticsearch存储全部字段 MySQL与Elsaticsearch中数据的增删改查如何保证事务 订阅binlog 编程式事务 补偿 使用消息队列同步更改数据库 弊端 前言 前几天滴滴第三轮面试的时候, 遇到一道面试题, 大意是说现在给定一个订单表, 是按照订单ID来进行分库分表的, 那么如果想要根据订单的商户ID来进行查询某个商户的 ...
2020-12-27 13:12 0 855 推荐指数:
MySQL分库分表,一般只能按照一个维度进行查询.以订单表为例, 按照用户ID mod 64 分成 64个数据库.按照用户的维度查询很快,因为最终的查询落在一台服务器上.但是如果按照商户的维度查询,则代价非常高.需要查询全部64台服务器.在分页的情况下,更加恶化.比如某个商户查询第10页的数据 ...
1、面试题 现在有一个未分库分表的系统,未来要分库分表,如何设计才可以让系统从未分库分表动态切换到分库分表上? 2、面试官心里分析 你看看,你现在已经明白为啥要分库分表了,你也知道常用的分库分表中间件了,你也设计好你们如何分库分表的方案了(水平拆分、垂直拆分、分表 ...
1、面试题 你们有没有做MySQL读写分离?如何实现mysql的读写分离?MySQL主从复制原理的是啥?如何解决mysql主从同步的延时问题? 2、面试官心里分析 这个,高并发这个阶段,那肯定是需要做读写分离的,啥意思?因为实际上大部分的互联网公司,一些网站,或者是 ...
一、两种方案分库分表 一般业界,对订单数据的分库分表,笔者了解,有两类思路:按照订单号来切分、按照用户id来切分。 方案一、按照订单号来做hash分散订单数据 把订单号看作是一个字符串,做hash,分散到多个服务器去。 具体到哪个库、哪个表存储数据 ...
1、面试题 为什么要分库分表(设计高并发系统的时候,数据库层面该如何设计)?用过哪些分库分表中间件?不同的分库分表中间件都有什么优点和缺点?你们具体是如何对数据库如何进行垂直拆分或水平拆分的? 2、面试官心里分析 其实这块肯定是扯到高并发了,因为分库分表一定是为了支撑 ...
1、面试题 如何设计可以动态扩容缩容的分库分表方案? 2、面试官心里分析 (1)选择一个数据库中间件,调研、学习、测试 (2)设计你的分库分表的一个方案,你要分成多少个库,每个库分成多少个表,3个库每个库4个表 (3)基于选择好的数据库中间件,以及在测试环境建立 ...
分库分表是高并发高可用系统的一个重要的点,互联网公司面试常常会问道。 为什么要分库分表(设计高并发系统的时候,数据库层面应该如何设计)? 首先要清楚,分库和分表是两回事,是两个独立的概念。分库和分表都是为了防止数据库服务因为同一时间的访问量(增删查改)过大导致宕机而设计的一种应对 ...
1、面试题 分库分表之后,id主键如何处理? 2、面试官心里分析 其实这是分库分表之后你必然要面对的一个问题,就是id咋生成?因为要是分成多个表之后,每个表都是从1开始累加,那肯定不对啊,需要一个全局唯一的id来支持。所以这都是你实际生产环境中必须考虑的问题 ...