面试最后一问把我整懵了

2020-04-17 12:15:46 +08:00
 nockyQ

今天面试的最后一道问题。

内容是做年度数据报表,千万级的数据量需要在屏幕上分页展示。目前问题是查询太慢该如何解决。 我的回答是加索引。结果面试官的回答是:“还是慢。”把我整懵不知道怎么回答了。解决查询慢的关键真的不是索引吗?…

在此求教万能的 V 友们 (:з」∠)

18143 次点击
所在节点    程序员
111 条回复
tabris17
2020-04-17 14:26:04 +08:00
预生成 reporting table
Joyboo
2020-04-17 14:29:17 +08:00
才千万级,能有多慢?索引完全够用
crc8
2020-04-17 14:54:35 +08:00
你应该这样回:不要问,问就是堆硬件。
rrfeng
2020-04-17 15:22:31 +08:00
不知道方向的话你可以问现在是怎么实现的呢?有了当前实现你才能给出优化建议。

如果他也不告诉你,那你就把你自己认为最好的方案写出来就行了啊,或者你先写一个简单方案,然后逐步优化它,体现你的思路。
Leonard
2020-04-17 15:30:00 +08:00
@angryfish 如果是你说的这种情况,可能无论如何都应聘不上,所谓的招聘可能只是套方案的。。。
liprais
2020-04-17 15:33:59 +08:00
千万级分页展示?
别理他直接走
没哪家公司是这样看数据的
Tezos
2020-04-17 16:12:41 +08:00
直接告诉他 充钱世界可及
Johnny168
2020-04-17 16:13:09 +08:00
S 不行,上 O
aec4d
2020-04-17 16:14:42 +08:00
思维被限制在了关系型数据库的死胡同里....
ArtIsPatrick
2020-04-17 16:20:21 +08:00
伪需求,不可能需要一下查这么多
qwertyzzz
2020-04-17 16:22:13 +08:00
可能你喝水不多吧 像你头像一样多喝点水
zhouyou457
2020-04-17 16:23:43 +08:00
现在就在做类似的需求...

流水数据分页查询,物理机顶配刀片,全固态盘,数据库 mysql,单表 3 亿+数据,有交易时间分区,复合主键,没有自增 id(别问我为什么没有自增 id,我也很想问当初的设计者)

在多次优化 sql 无果后,果断停机拆表加自增 id...
nonea
2020-04-17 16:28:38 +08:00
你跟他说 Doris 啊
alienx717
2020-04-17 16:29:26 +08:00
千万级分页展示,看着像什么东西的日志,流式数据之类的
ifconfig
2020-04-17 16:36:27 +08:00
简单方式:分区

复杂方式:
1 、分表
2 、通过 mycat 做中间层

不就完事了

贵族方式:
另外,阿里云出了个 DRDS (很贵),只要有钱,能有啥性能问题

---------------------------------------------------

另外,加了索引不一定命中了索引,命中了索引不一定会快,要留意 explain 的 type 和 extra,如果出现 using filesort 和 using temporary 照样得跪,这个时候都会反问面试官,加了索引一定命中吗,命中了效率一定快吗?
Easzz
2020-04-17 16:37:37 +08:00
扩字段、适当冗余、减少连表、优化索引。年度报表可以每月汇总,避免一次性查一年,减少数据的聚合。
CRVV
2020-04-17 16:43:02 +08:00
如果面试的问题就是太慢要怎么解决,那这个问题没什么意义,就跟问多么多么大的并发要怎么实现一样。
这种问题通常就是堆点什么名词,或者面试官也是在论坛博客随便看了点讨论拿来问的。

如果真要认真地问这个问题,
首先当前是怎么实现的,具体是个什么查询,慢是有多慢,预期要达到多快的速度,对数据的实时性要求有多高,这个报表有多高的查询频率,开发这个报表愿意付多少成本,运维这个报表愿意付多少成本。
这些都得先说清楚,根据不同的情况显然可以给出很多种不同的方案。
ccoming
2020-04-17 16:52:23 +08:00
看看阿里云的 DataV 数据可视化?
双 11 销售大屏都使用这个的
xcstream
2020-04-17 16:52:39 +08:00
才千万啊 直接查
linkme
2020-04-17 17:08:59 +08:00
@angryfish 会不会面试官是在找解决办法?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/663387

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX