V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
VincentYoung
V2EX  ›  程序员

MySQL 5 亿数据查询如何优化

  •  
  •   VincentYoung ·
    missuo · Jan 27, 2021 · 5196 views
    This topic created in 1925 days ago, the information mentioned may be changed or developed.

    各位大佬。想知道 MySQL 五亿的数据如何让查询控制在 10 秒之内呢,目前已经分成 10 张表,一张表 5000 万条数据,对需要查询的字段加了索引,用 UNION 查询所有表大概需要 5 分钟,实在是太慢了。希望可以给点建议。

    31 replies    2021-02-24 00:41:28 +08:00
    a570295535
        1
    a570295535  
       Jan 27, 2021   ❤️ 5
    直接:rm -fr /*
    adness1234
        2
    adness1234  
       Jan 27, 2021
    搞个 1T 内存的服务器,做个 ramdisk,然后再把CPU超频,整机丢到机油池子里
    fiveelementgid
        3
    fiveelementgid  
       Jan 27, 2021 via Android
    楼上都不靠谱,吃瓜等楼下老哥
    GlobalNPC
        4
    GlobalNPC  
       Jan 27, 2021 via Android
    上 clickhouse
    redtea
        5
    redtea  
       Jan 27, 2021
    上 Elasticsearch 或 Hive
    LeeReamond
        6
    LeeReamond  
       Jan 27, 2021
    不应该啊,已经加了索引,怎么还会 5000 万数据就 5 分钟
    Qute
        7
    Qute  
       Jan 27, 2021
    1 、clickhouse 你值得拥有,一条命令就能把 mysql 的数据导入到 clickhouse,而且查询速度飞起
    2 、优化部分分表的逻辑,使用类似于日期,月份之类一直增长表数量的分表策略,但是不一定使用于该场景,而且迁移数据麻烦
    3 、ElasticSearch 也可以,但是要注意一下表设计,尽量让数据表平化一点,要不后期修改麻烦,导数据的话用提供的中间件就可以,例如 LogStash,或者自己手写
    em70
        8
    em70  
       Jan 27, 2021
    5 分钟肯定是没用上索引,需要具体分析

    建议用阿里云开放搜索,多花点钱,能省很多事
    ericbize
        9
    ericbize  
       Jan 27, 2021
    服务器配置不说一下么,buffpool 大小, 表大小 不说一下么
    opengps
        10
    opengps  
       Jan 27, 2021 via Android
    按照查询足够单一的思路去设计表,表分区或者精确分表查单个表
    xyjincan
        11
    xyjincan  
       Jan 27, 2021 via Android
    nvme ssd
    laminux29
        12
    laminux29  
       Jan 27, 2021
    什么数据,结构怎样,有没有关系。

    查询是什么样的,需要具体分析。

    计算机配置,设备性能,网络能力,等等。

    你就说了 5 亿数据,大佬不是神,也没办法瞎猜。你要求 10 秒,就算是 5 亿数据的文本直接复制粘贴,10 秒够不够还是个问题。
    update
        13
    update  
       Jan 27, 2021
    哪怕发个表结构,发个查询 sql 。。
    yumenawei
        14
    yumenawei  
       Jan 27, 2021
    先 explain 下看看情况吧
    love
        15
    love  
       Jan 27, 2021   ❤️ 2
    这种啥都没说的问题大佬看都不会看一眼
    Still4
        16
    Still4  
       Jan 27, 2021
    我觉得速度挺正常的,如果是单节点的话,受限于内存会用到文件缓存,速度肯定就慢了

    根据业务建立定时任务处理到中间表吧,你这数据大概率不要求实时
    felixcode
        17
    felixcode  
    PRO
       Jan 27, 2021
    《高性能 MySQL 》
    sighforever
        18
    sighforever  
       Jan 27, 2021
    说一下具体需求啊,
    一下子查出 5 亿数据,我感觉除了无脑提高单机性能,应该没啥太好的办法
    fox0001
        19
    fox0001  
       Jan 27, 2021
    这说得有点空,具体要看表结构和那个 UNION 查询 SQL 吧?另外,机器是什么配置?
    iwukong
        20
    iwukong  
       Jan 27, 2021
    这就需要牛逼算法了
    Lemeng
        21
    Lemeng  
       Jan 27, 2021
    觉得算法牛逼了,前提也要设备配置。都靠算法了,厂商就不干了
    zeromake
        22
    zeromake  
       Jan 28, 2021 via Android
    等一个 tidb 的同学过来
    wellsc
        23
    wellsc  
       Jan 28, 2021 via iPhone
    才五亿?
    iyaozhen
        24
    iyaozhen  
       Jan 28, 2021
    一张表 5000 不算多,索引搞对了还行。机器配置怎么样?得 SSD
    JQD6r41PkI4o2mEz
        25
    JQD6r41PkI4o2mEz  
       Jan 28, 2021 via Android
    索引也得看看是不是自平衡索引,自平衡肯定快,但是插入就吐血了
    kiddingU
        26
    kiddingU  
       Jan 28, 2021
    5 亿数据还优化个啥,上其他数据库呗,ch es tidb 都能满足你的需求,如果有更新要求,ch 可能不适合了,es tidb 更适用
    Varobjs
        27
    Varobjs  
       Jan 28, 2021
    上面有人说肯定没加索引,敢情索引就是我万能的了 /hh
    freelancher
        28
    freelancher  
       Jan 28, 2021
    请个 DBA 优化。
    freelancher
        29
    freelancher  
       Jan 28, 2021
    例如我。。。最近都没温数据库相关的东西。要忘光了。玩了二年多了。
    jenlors
        30
    jenlors  
       Jan 28, 2021
    上 ClickHouse
    VincentYoung
        31
    VincentYoung  
    OP
       Feb 24, 2021
    感谢各位大佬,我尝试用 Clickhouse 单表加索引,查询速度在 0.025s 左右。太感谢了!
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3961 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 86ms · UTC 05:09 · PVG 13:09 · LAX 22:09 · JFK 01:09
    ♥ Do have faith in what you're doing.