面试最后一问把我整懵了

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

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

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

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

18591 次点击
所在节点    程序员
111 条回复
tabliu
2020-04-17 12:44:23 +08:00
分析型数据库,Greenplum,横向扩展,直接堆机器,想多快就多快
nockyQ
2020-04-17 12:47:39 +08:00
@index90 方便展开说明一下,或者丢一个相关的链接吗?不太明白老哥的意思。
Juggernaut
2020-04-17 12:47:53 +08:00
千万级的数据一条条展示在屏幕上,意义何在?
opengps
2020-04-17 12:50:02 +08:00
这问题问得很泛,能回答的方面就是,合理的索引,表分区,分表,分库等一系列技术的组合。
不过看起来更像是面试官的问题自己解决不好再像外界求助
nockyQ
2020-04-17 12:50:53 +08:00
@xmge 我尝试回答分库分表貌似没有收到面试官正面的答复。不过这个性能问题,我回头学习一下,之前没怎么接触过。
nockyQ
2020-04-17 12:52:11 +08:00
@Juggernaut 面试不总归要造航母的。你说是不是。
JJstyle
2020-04-17 13:01:50 +08:00
什么样儿的表结构,什么样的 sql 查询,能否用 es,分表分库可以吗,读写分离可以吗,上更刚的服务器试试呢,能缓存吗,如果还不行的话你们能给我 30k 吗 (手动🐶
greatbody
2020-04-17 13:03:52 +08:00
诊断性信息收集了解一下,询问面试官我们现在很慢,有哪些现象?我可以用调试工具看看实际执行情况么?
DelayNoMay
2020-04-17 13:05:01 +08:00
具体需求,具体分析
itskingname
2020-04-17 13:06:44 +08:00
这种问题,一般是面试官前两天刚刚做了这个任务,个人感觉自己的解法非常精妙,所以拿来问你。
opengps
2020-04-17 13:07:14 +08:00
这么多楼层,大部分都没意识到问题重点所在,我有过线上单表 15 亿行数据经历,透漏个数据,来重点说下慢的原因:总共 500g 数据的表,索引占了 100G,所以即使索引合理,SQL 合理,表的查询也同样很慢

这个数据规模下,表分区,分表,分库就成了基本考察点,但是线上具体用法则会有些差异的地方,这个部分不会是面试官的考察重点
CStarter
2020-04-17 13:13:47 +08:00
搞一个新表或视图,后台定时跑报表数据汇总写入此表,要用时直接查这个表。
缺点:数据实时性差一些
Jooooooooo
2020-04-17 13:28:36 +08:00
首先你要知道大分页是无解的问题, 要明确这一点然后寻找其它妥协方案

面试官问这种问题基本就是考察

1. 你有没有遇见过要翻几百万页的需求

2. 你当时的解决方案是什么, 因为数据库直接 limit 1000000,10 是跑不起来的

这个时候就要更深入问具体需求究竟是什么, 从中分析可行方案
fanyingmao
2020-04-17 13:31:35 +08:00
我看了下我最大的日志表 3 亿多条,加了索引,好像也还好。
huntcool001
2020-04-17 13:51:04 +08:00
1.分表分库
2.用 ElasticSearch
3.看具体业务,一般有默认展示哪一页什么的吧? 比如说查询最新页面,把最常用的优化一下. 不可能直接 limit 到最后一页去
ma836323493
2020-04-17 13:52:49 +08:00
想想问题的根本原因,然后再去进行考虑,想不到问面试官,然后再考虑能给解决方案不
index90
2020-04-17 13:59:41 +08:00
@nockyQ #14 面试官想要的答案
ElicaKing
2020-04-17 14:12:40 +08:00
分页加懒加载不好吗,用到哪加载哪部分。
encro
2020-04-17 14:20:57 +08:00
报表,
要速度,
不就是加一个缓存表嘛?
aalikes95
2020-04-17 14:25:01 +08:00
学习了,原来是这样子

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

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

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

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

© 2021 V2EX