• 请不要在回答技术问题时复制粘贴 AI 生成的内容
dbpe
V2EX  ›  程序员

请教大家一个数据库涉及问题...

  •  
  •   dbpe · Apr 18, 2018 · 5505 views
    This topic created in 2947 days ago, the information mentioned may be changed or developed.
    众所周知..数据库设计有三大范式.

    我看书之后发现...

    数据量大了..表多了..join 查询效率的就低了..开始设计添加冗余字段...

    那么有木有大佬告诉下咱...大概多少量级就可以考虑了?

    百万级?千万级?
    24 replies    2018-04-23 13:52:02 +08:00
    yulitian888
        1
    yulitian888  
       Apr 18, 2018
    遇到性能慢了感觉到必须优化了再考虑
    百万千万级的,如果是有索引的查询,根本不慢
    johnny23
        2
    johnny23  
       Apr 18, 2018 via iPhone
    坐等大佬分析
    tomczhen
        3
    tomczhen  
       Apr 18, 2018 via Android
    OLAP 和 OLTP 要求不一样,反范式是必要的“妥协”。
    lol173
        4
    lol173  
       Apr 18, 2018
    数据进入某一个状态后应该使用冗余了保存的,例如已经下单的商品、商品的价格等等,索引要用上,数据大了水平分表也应该用上,统计数据做阶段性统计数据表,略略略就这么多了
    shakoon
        5
    shakoon  
       Apr 18, 2018
    量级和服务器性能有关,破机器百万级就很慢了,好机器上亿条也能秒级处理。另外我觉得首先是考虑表分区啊,建什么冗余字段
    projectzoo
        6
    projectzoo  
       Apr 18, 2018
    百万千万现在一般机器都很好吧
    自己实测一下不就好咯?
    quickma
        7
    quickma  
       Apr 18, 2018
    冗余字段的设计是有道理的,或许有时候水平分库就是错误的区分
    whypool
        8
    whypool  
       Apr 18, 2018
    同问
    不用冗余字段,查询需要 join 多个表,有些数据生成了修改的可能性很小,如果弄到一个表去,一个 select 就出数据了

    所以,是严格按照范式设计表么?
    Hozzz
        9
    Hozzz  
       Apr 18, 2018
    看预期值了,你要是一条 sql 进去,10 秒出来能接受,那就没必要考虑这些;要是 1 秒都不能接受,那就可以考虑怎么优化了。
    dbpe
        10
    dbpe  
    OP
       Apr 18, 2018
    @lol173 那我大概明白,那些结构的表需要冗余字段,而那些不需要了...

    PS:emmm..感觉性能制胜论很多啊...压榨机器的性能不应该是程序员的浪漫么?
    dbpe
        11
    dbpe  
    OP
       Apr 18, 2018
    上面表述不清楚,应该是机器性能制胜论
    Cbdy
        12
    Cbdy  
       Apr 18, 2018 via Android
    范式只是一种设计模式,有优点也有缺点,反范式也有优点和缺点,设计的时候要权衡一下
    hcymk2
        13
    hcymk2  
       Apr 18, 2018
    冗余字段其实有另外的一个问题, 你得保证你的冗余字段值的正确。
    weizhen199
        14
    weizhen199  
       Apr 18, 2018
    冗余和索引有点类似的。
    牺牲删改时间换查询时间
    这东西说实话挺经验的,和模电一样毛估估
    csl1995
        15
    csl1995  
       Apr 18, 2018
    索引优化、缓存技术、搜索引擎、优化 sql、硬件之后依然有性能瓶颈时再进行
    akira
        16
    akira  
       Apr 18, 2018
    上班第一天,先把范式设计忘掉
    dbpe
        17
    dbpe  
    OP
       Apr 18, 2018
    @akira 哈哈..这倒是..一张表..三个字段是相通的...分别指向不同的表(貌似还没有外键约束..全靠人肉约束)
    dbpe
        18
    dbpe  
    OP
       Apr 18, 2018
    @hcymk2 emmm 不能用外键进行约束么?
    dbpe
        19
    dbpe  
    OP
       Apr 18, 2018
    @weizhen199 还有一点..用空间换时间...
    Miy4mori
        20
    Miy4mori  
       Apr 18, 2018
    维护冗余字段的代价有点
    Dawnki
        21
    Dawnki  
       Apr 19, 2018 via iPhone
    看看《高性能 Mysql 》吧,有时追求性能确实要牺牲一些约束和范式的
    Dawnki
        22
    Dawnki  
       Apr 19, 2018 via iPhone
    不过优化这东西是一步一步来的,遇到慢查询时才需要另辟蹊径,一开始不要过于看重优化.
    dbpe
        23
    dbpe  
    OP
       Apr 23, 2018 via Android
    @Miy4mori 有点啥?大?
    dbpe
        24
    dbpe  
    OP
       Apr 23, 2018 via Android
    @Dawnki 只是想一步到位。。如果业务数据达不到那个量级就不考虑了。。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5388 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 84ms · UTC 09:22 · PVG 17:22 · LAX 02:22 · JFK 05:22
    ♥ Do have faith in what you're doing.