V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
nockyQ
V2EX  ›  程序员

面试最后一问把我整懵了

  •  1
     
  •   nockyQ · 2020-04-17 12:15:46 +08:00 · 18604 次点击
    这是一个创建于 1717 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    111 条回复    2020-04-19 22:07:36 +08:00
    1  2  
    rrfeng
        1
    rrfeng  
       2020-04-17 12:18:45 +08:00 via Android
    就说不知道。
    warlock
        2
    warlock  
       2020-04-17 12:19:00 +08:00
    缓存
    ConradG
        3
    ConradG  
       2020-04-17 12:20:14 +08:00
    我比较好奇这屏幕有多大
    sunjourney
        4
    sunjourney  
       2020-04-17 12:20:56 +08:00   ❤️ 9
    分析业务啊,分离 hot/cold 数据,要聚合的提前聚合了,分组存储,根据查询条件归约
    Tianao
        5
    Tianao  
       2020-04-17 12:21:17 +08:00
    改模式、换引擎、加硬件。
    fordoo
        6
    fordoo  
       2020-04-17 12:22:13 +08:00
    数据报表,报表不都是汇总数据, 千万级?
    optional
        7
    optional  
       2020-04-17 12:22:20 +08:00 via iPhone   ❤️ 3
    分页慢,不能用 limit offset 分页。 用 id 分页
    OSDI
        8
    OSDI  
       2020-04-17 12:23:34 +08:00
    加配置
    ylsc633
        9
    ylsc633  
       2020-04-17 12:26:19 +08:00
    年度数据 都是汇总啊.......... 年度按照月份汇总 1
    loryyang
        10
    loryyang  
       2020-04-17 12:26:41 +08:00
    都在内存里面就不会慢啊,你要是内存放不下就复杂了
    nockyQ
        11
    nockyQ  
    OP
       2020-04-17 12:27:20 +08:00
    @sunjourney 学到了 从这个方面考虑感觉很靠谱
    nockyQ
        12
    nockyQ  
    OP
       2020-04-17 12:28:50 +08:00
    @rrfeng 面试直接说不知道也太硬了 8
    wangyzj
        13
    wangyzj  
       2020-04-17 12:28:58 +08:00
    这道题可以回答的很开放
    但是面试官感觉有限制在了一定的条件内
    wangyzj
        14
    wangyzj  
       2020-04-17 12:30:03 +08:00   ❤️ 1
    或者
    select * from table where pkid > 10000 limit 0,50
    这种呢
    nockyQ
        15
    nockyQ  
    OP
       2020-04-17 12:32:29 +08:00
    @wangyzj 或许我漏掉了关键因素?主要是我回答了建索引之后,告诉我还是很慢。然后也没做另补充,我就僵住不知道往哪个方面去回答了。目前这些条件下感觉只有建索引这种“空间换时间的方式”去实现。
    angryfish
        16
    angryfish  
       2020-04-17 12:38:18 +08:00 via iPhone
    面试官显然目前是遇到这个问题了,你应该详细问下更具体的需求,一步步和面试官探讨。解决这个问题了,你就应聘上了。
    index90
        17
    index90  
       2020-04-17 12:42:34 +08:00
    lz 有没有试过 skip 几万条数据,有多慢?
    正确答案是改用 seek limit 方式。
    xmge
        18
    xmge  
       2020-04-17 12:43:21 +08:00   ❤️ 1
    自我感觉问题关键:这个问题的关键是分页查询时,当 offset 过大时引起的性能问题。

    解决关键:减小 offset 的值。

    解决方案:

    1 、排序再查询 / where 语句后查询(通过各种手段把 offset 变小)

    2 、分表。(业内流行 500w 一分)

    3 、缓存


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

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

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

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

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

    这个时候就要更深入问具体需求究竟是什么, 从中分析可行方案
    fanyingmao
        34
    fanyingmao  
       2020-04-17 13:31:35 +08:00 via Android
    我看了下我最大的日志表 3 亿多条,加了索引,好像也还好。
    huntcool001
        35
    huntcool001  
       2020-04-17 13:51:04 +08:00
    1.分表分库
    2.用 ElasticSearch
    3.看具体业务,一般有默认展示哪一页什么的吧? 比如说查询最新页面,把最常用的优化一下. 不可能直接 limit 到最后一页去
    ma836323493
        36
    ma836323493  
       2020-04-17 13:52:49 +08:00
    想想问题的根本原因,然后再去进行考虑,想不到问面试官,然后再考虑能给解决方案不
    index90
        37
    index90  
       2020-04-17 13:59:41 +08:00
    @nockyQ #14 面试官想要的答案
    ElicaKing
        38
    ElicaKing  
       2020-04-17 14:12:40 +08:00
    分页加懒加载不好吗,用到哪加载哪部分。
    encro
        39
    encro  
       2020-04-17 14:20:57 +08:00
    报表,
    要速度,
    不就是加一个缓存表嘛?
    aalikes95
        40
    aalikes95  
       2020-04-17 14:25:01 +08:00
    学习了,原来是这样子
    tabris17
        41
    tabris17  
       2020-04-17 14:26:04 +08:00
    预生成 reporting table
    Joyboo
        42
    Joyboo  
       2020-04-17 14:29:17 +08:00
    才千万级,能有多慢?索引完全够用
    crc8
        43
    crc8  
       2020-04-17 14:54:35 +08:00
    你应该这样回:不要问,问就是堆硬件。
    rrfeng
        44
    rrfeng  
       2020-04-17 15:22:31 +08:00
    不知道方向的话你可以问现在是怎么实现的呢?有了当前实现你才能给出优化建议。

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

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

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

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

    不就完事了

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

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

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

    如果真要认真地问这个问题,
    首先当前是怎么实现的,具体是个什么查询,慢是有多慢,预期要达到多快的速度,对数据的实时性要求有多高,这个报表有多高的查询频率,开发这个报表愿意付多少成本,运维这个报表愿意付多少成本。
    这些都得先说清楚,根据不同的情况显然可以给出很多种不同的方案。
    ccoming
        58
    ccoming  
       2020-04-17 16:52:23 +08:00
    看看阿里云的 DataV 数据可视化?
    双 11 销售大屏都使用这个的
    xcstream
        59
    xcstream  
       2020-04-17 16:52:39 +08:00
    才千万啊 直接查
    linkme
        60
    linkme  
       2020-04-17 17:08:59 +08:00
    @angryfish 会不会面试官是在找解决办法?
    Airon
        61
    Airon  
       2020-04-17 17:37:51 +08:00
    或者面试官只是想看看你解决问题的思路。
    cs419
        62
    cs419  
       2020-04-17 17:46:01 +08:00   ❤️ 4
    这类开放性的问题
    回答的时候,需要自己加上限制条件不然没法答
    你如果有相关经验,就把当时的场景方案讲一下

    通常这类问题的解决方案都是折中的
    比如上亿的数据 模糊搜索 那显然用 es 比 mysql 好 (不需要事务)
    比如加载到特大内存,快速查询 (特有钱)
    比如预先计算, 缓存预热
    比如分表分库
    具体问题具体分析
    有相关经验还能问问是不是 xx 导致的,没经验只能干瞪眼

    有些提问就纯属抬杠,
    分库分表他说慢
    说分布式集群 他说有可能全挂掉
    异地多活 他都能说网线断了

    你这问题就提供了两个点 慢 年度数据报表
    报表一般来说 可以先算好的
    慢 到底是慢在哪里
    就是找痛点 找瓶颈
    crazyneo
        63
    crazyneo  
       2020-04-17 17:47:19 +08:00   ❤️ 3
    实际上这个问题是想问你怎么做数据库优化,只不过千万级单表的数据有点太 low 了……
    一般来说有 3-4 层优化的空间,sql 语句与索引,表结构分析与视图建立,物理硬件与系统配置。
    sql 语句与索引这点应该绝大多数人都会想到,常见分析工具是 explain/show processlist/slowlog/show session status 等等,一般优化思路包括执行计划优化 /索引建立 /长事务分析与优先级调整等等。
    表结构分析与视图建立,如是否满足自增主键,能否提前建立物理视图来满足分页展示需求。
    物理硬件与配置方面,更新硬件配置,建立连接池,是否要增加 swap,是否要调整引擎层刷盘策略,数据库配置参数如 mysql 中 innodb 的 buffer pool 配置 /查询缓存,或者 rocksdb 的 compact 策略等等。

    如果放到更高一点层面来说,一般还会有下面几点。
    1. 分布式 /分库分表与数据归总。
    2. 缓存。
    3. OLTP 与 OLAP 差异,列存数据库与行存选择。
    miaoxinwei
        64
    miaoxinwei  
       2020-04-17 17:48:37 +08:00
    考的就是分析问题的能力。。。
    skaly
        65
    skaly  
       2020-04-17 17:49:33 +08:00
    先搞清楚是返回数据慢,还是前端渲染慢啊?
    hsuvee
        66
    hsuvee  
       2020-04-17 17:50:28 +08:00
    1. 有序 id 分页 select * from aaa where id > 1000000 limit 100
    2. 分表
    3. es
    skaly
        67
    skaly  
       2020-04-17 17:51:00 +08:00
    返回数据慢 上面各位老哥已经说的差不多了
    前端渲染慢 的话可以充钱换硬件了
    louis2003
        68
    louis2003  
       2020-04-17 18:06:32 +08:00
    这个题目应该是数据大(一千万数据还好吧)分页的问题?
    一般分页的话,就算是走索引数据量也是太大了,还是线性查找,然后再跳过过滤 mysql 的机制是这样的。
    所以有很多直接基于 id 搜索先过滤再做分页的处理。
    gemini767
        69
    gemini767  
       2020-04-17 18:16:58 +08:00
    olap 离线统计
    drydiy
        70
    drydiy  
       2020-04-17 18:19:30 +08:00
    楼主你用鸟习惯要改改啊。
    zhangsimon
        71
    zhangsimon  
       2020-04-17 18:38:17 +08:00
    我不会编程…
    但看你题目描述我脑子里直接蹦出两个字“缓存”
    zuoakang
        72
    zuoakang  
       2020-04-17 18:38:28 +08:00 via Android
    redis 集群加 pika
    ironMan1995
        73
    ironMan1995  
       2020-04-17 18:39:55 +08:00 via Android
    我前端,我想能不能将数据根据某种规则或者类型分类存在不同数据库或者什么东西中。然后同时查不同数据库然后聚合,这样会不会快一点
    jswh
        74
    jswh  
       2020-04-17 18:48:51 +08:00
    优化 sql,添加索引,冷热分离,添加缓存,分库分表,更换架构,数据库性能优化常规思路
    最后一步:怼产品经理(这个功能实现不了)(手动狗头
    BigR
        75
    BigR  
       2020-04-17 19:12:26 +08:00
    @angryfish 正常的结果难道不是,一步步和面试官探讨,说出具体细节,解决这个问题,然后你就不用来上班了么。问题都解决了,你还来干嘛。
    0x11901
        76
    0x11901  
       2020-04-17 19:16:18 +08:00
    我以为最后一问是:“你还有什么想要问我的?”
    visitant
        77
    visitant  
       2020-04-17 19:21:39 +08:00
    既然是报表,预生成一下?
    veike
        78
    veike  
       2020-04-17 21:14:27 +08:00
    @optional id 如果不连续呢?
    piao5109
        79
    piao5109  
       2020-04-17 23:55:24 +08:00 via iPhone
    开放式的问题

    1 、硬件配置
    2 、数据建模的时候 根据查询需求特点做优化
    3 、合适的索引
    4 、查询语句优化
    5 、加缓存
    6 、分表、分库、读写分离等
    laminux29
        80
    laminux29  
       2020-04-18 00:33:32 +08:00   ❤️ 3
    这个问题的本质,其实是面试信息不对称的羞辱,而不是解决优化问题。

    千万级数据,是个很有意思的数据量。往小的说,64 位 ID+64 位数据再加一个简单索引,撑死就几百 M 的非关系型内存数据。如果设计成流式统计或固定数组 + 矢量更改表,以内存高达 G 级与每秒海量 IOPS 的处理速度,查询与分页时间能在 ms 级完成。但如果往大的说,把满载撑死的单行平均数据,非顺序的链式(乱跳)结构,各种强关系的牵扯,各种触发器的拖累,加上数据存储在每秒 iops 低于 1k 的低速机械硬盘里,以及单次查询限定了非常小的内存空间,那么一次查询的排序 + 处理,能耗上两三小时也说不定。

    这种情况下,面试官说不定早就针对他们自己的情况,给出了优化程度相当高的方案,然后在不告诉你完全信息的情况下,让你猜他们的场景与算法。他这种行为,面试很有可能已经不是他的唯一目的,说不定是他在同事面前故意刁难面试者,来哄抬他自身的技术价格。如果被面试者的级别越高,他就能越得逞。此时,就算你中了大奖,完整地猜出他们的场景,并给出了优于他的方案,说不定他也会一口否决你,然后说你的方法不行。

    避免这种非对称羞辱的最佳方法,是你在面试前,针对他们产品的某种特性,给出更好的解决方案,并且提前做出性能对比测试并得出报表。此时,你完全可以不回答这个问题,然后直接扔出你的报表,说要不录用,要不你换公司,甚至换到竞品公司。当然,如果面试时,面试官很厚道,你可以保留这个行为。
    version
        81
    version  
       2020-04-18 00:35:42 +08:00 via iPhone
    一般报表涉及都是运算统计排序为主,
    这种数据量大的,
    统计结果时效性是保证不了的,都是离线统计导出的
    因为他提到了了分页慢,就知道用了大量的 order by 和分页,命中索引只能优化前面的几十万的数据,当分页去到第 200 万行,后面性能就很低了,
    简单合理便宜处理办法就是根据需要计算的字段,自定义计算,丢内存运算,然后导出来,不够再加磁盘,所以数据结构就很重要了
    levelworm
        82
    levelworm  
       2020-04-18 02:43:46 +08:00 via Android
    年度的一年才做一次吧,没有 dwh 之类的吗
    MintZX
        83
    MintZX  
       2020-04-18 04:40:00 +08:00
    @huntcool001 对,这也是我想说的。

    我做过 20 亿条单个表的数据库。其实以主键排序 20 亿并不会慢。而索引的问题在于,如果加索引的列有大量重复的值的时候,索引是无效的。所以一般索引只对主键,或者时间戳比较有效。这个时候要么分表,要么上 elasticsearch 。都是挺好的解决办法。
    msg7086
        84
    msg7086  
       2020-04-18 05:22:31 +08:00 via Android   ❤️ 4
    @laminux29 这个问题的本质难道不是考察你问诊的能力?
    面试官问了一个模糊场景的问题,作为程序员难道不是去尝试缩小问题点,找到具体问题在哪,然后再针对优化?
    让你猜场景和算法?难道不是让你问他场景和算法然后去缩小问题?

    就说经典的面试问题,如果用户输入了你的网站地址,按下回车,但是网站迟迟不加载,问题在哪。你不去一步一步分析场景缩小范围找到问题点,坐在那里傻瞪着面试官,那人家不拒你留着过年么。
    shiyouming91
        85
    shiyouming91  
       2020-04-18 05:57:33 +08:00 via iPhone
    年度数据报表?我觉得可以问一下是不是实时更新的,不是的话可以考虑预渲染?
    optional
        86
    optional  
       2020-04-18 08:16:33 +08:00 via iPhone
    @veike 不连续不影响,只要递增就行
    aladdindingding
        87
    aladdindingding  
       2020-04-18 08:52:23 +08:00
    clickhouse 列存数据库了解一下
    YFeei
        88
    YFeei  
       2020-04-18 08:58:19 +08:00 via Android
    select 字段 from 表 where id in ( select id from 表 limit x x )网上好像搜到过这种答案……
    Fleey
        89
    Fleey  
       2020-04-18 09:20:39 +08:00
    多数人都回答错了。。。
    面试官想要你说的是“使用 nosql 分组缓存统计”
    didala
        90
    didala  
       2020-04-18 09:22:47 +08:00
    B 神的问题哈哈哈哈!

    索引、缓存、分表。

    根据 id:select * from (select id from 表 limit xx,xx) a left join 表 b on a.id = b.id
    laminux29
        91
    laminux29  
       2020-04-18 09:23:37 +08:00
    @msg7086 [考察] 二字已经意味着不平等的关系。在这种关系下,你再牛逼,对方也能保留解释权地筛掉你。
    acrisliu
        92
    acrisliu  
       2020-04-18 09:24:35 +08:00 via Android
    数据量大分页不要用 limit offset,用 keyset 分页。
    msg7086
        93
    msg7086  
       2020-04-18 09:50:20 +08:00
    @laminux29 我并没有否认不平等关系。但是不平等关系和羞辱和否决和否定都没有决定性的联系。
    考察的目的是找出那些人符合面试官认为的适合公司的候选人,筛掉你当然是因为你不符合面试官心目中的候选人形象。
    murmur
        94
    murmur  
       2020-04-18 09:51:24 +08:00
    年度数据报表肯定是要缓存的,一年就出一次的东西,实时计算何必呢,设定个计划任务,一月的某一个半夜算他几个小时,整个一年都有的看
    winglight2016
        95
    winglight2016  
       2020-04-18 10:06:46 +08:00
    这种具体的项目问题,并不是封闭式问题,没有什么标准答案。一般来说,你能给出越多的可行性提升性能方法,表现越好。当然,也可以从整个业务流的优化说起,也就是从浏览器到 web server,再到缓存,业务模块,数据库这些环节,每一个地方都有可优化的方法。最后,如果是优化 SQL,可以使用执行计划考察一下 SQL 慢在哪里。
    daozhihun
        96
    daozhihun  
       2020-04-18 10:19:19 +08:00
    emmm 。。。。楼上有些说千万级数据没有浏览需求的,我只能说我之前做过的一个系统还真有。。。
    流水报表,一张表上亿都有,当然不可能是一页展示完,支持各种条件分页查询。
    nortonlai
        97
    nortonlai  
       2020-04-18 10:22:54 +08:00 via Android
    加索引这种回答不应该是无工作经验的面试回答吗?工作经验大于一年敢回答这么简单果断是不能要的
    zhuifeng1017
        98
    zhuifeng1017  
       2020-04-18 10:59:10 +08:00
    ’加索引’这个回答太初级啦。如果自己真的经验很丰富,可以说出很多来。
    比如用 limit o, n 分页, 随着分页越来越大,速度会越来越慢,怎么优化呢?
    根据查询条件,如何做索引优化呢 ?
    千万级数据量可以分库分表;
    数据库选型用 mysql, pg,mongo, greenplum.. .. . . .
    随便 bala 可以说半个小时了
    nockyQ
        99
    nockyQ  
    OP
       2020-04-18 11:20:05 +08:00
    @nortonlai
    @zhuifeng1017

    可能确实是我表达不当,“加索引”不是我回答的全部。我想表达的意思是,我提出的“加索引”、“分库分表”这些解决方向没有像预期的那样得到正向反馈。

    确实也是经验不够导致的吧。当时的状态过于被动,说完自己想法之后就在等面试官能给点提示。如果能沉住气去追问然后再给出别的解决方案应该会得到更好的结果。
    encro
        100
    encro  
       2020-04-18 11:25:19 +08:00
    @zhouyou457
    这就是日志型数据库的事情了。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2484 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 70ms · UTC 04:40 · PVG 12:40 · LAX 20:40 · JFK 23:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.