V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
VincentYoung
V2EX  ›  程序员

MySQL 5 亿数据查询如何优化

  •  
  •   VincentYoung · 241 天前 · 2854 次点击
    这是一个创建于 241 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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