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

MySQL 5 亿数据查询如何优化

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

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

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

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

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

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