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

MySQL 5 亿数据查询如何优化

  •  
  •   VincentYoung ·
    missuo · 2021-01-27 19:07:46 +08:00 · 4099 次点击
    这是一个创建于 1155 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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