V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
546L5LiK6ZOt
V2EX  ›  问与答

es 查询一定比 mysql 快吗

  •  
  •   546L5LiK6ZOt · 2021-12-18 21:13:10 +08:00 · 2394 次点击
    这是一个创建于 1104 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前工作的项目中,es 是 10 分片、3 副本,上面有一个索引的文档数量是 1500 万左右,这个索引是聚合了多个库多个表的数据。我看代码里很多地方都是通过 id 来从 es 查询(当然也有些场景是复杂条件查询的)。我在想,通过 id 来查询的这种场景,能不能通过构造一张 mysql 的宽表,直接走数据库索引来查会不会更快一点呢?

    为什么会有这个想法呢?直觉告诉我同样配置(或同样价格)的机器下,mysql 性能会比 es 高。理由如下:

    1. mysql 是用 C++ 写的,没有 gc ,且内存消耗比基于 Java 的 es 要低
    2. es 查询时会路由转发请求给其它数据节点,这当中会有网络 io 消耗;而 mysql 可以直接单表存储 1500 万数据

    我在网上找不到关于 mysql 和 es 的 benchmark 对比,所以不是很肯定这个想法,请各位大神赐教

    7 条回复    2021-12-19 16:33:17 +08:00
    stabc
        1
    stabc  
       2021-12-18 21:21:14 +08:00
    Uber 就是用 mysql 做类似的事。
    3dwelcome
        2
    3dwelcome  
       2021-12-18 21:31:45 +08:00 via Android
    没实际测试过,我猜光查询 id ,mysql 肯定不差。
    但是通常情况下,业务逻辑都会包涵复杂查询的,而这部分逻辑,基本上都是整个项目的木桶短板。
    如果光一个 ID ,那无脑选 google 的 leveldb ,纯键值数据库,查询绝对最快了。
    512357301
        3
    512357301  
       2021-12-18 22:06:56 +08:00 via Android
    es 不清楚,但是之前最近用 clickhouse 测试过,同样的数据量,同样的三表 join ,MySQL 一小时,clickhouse 五秒钟,这还是 MySQL 建了索引 clickhouse 没建索引的情况下
    MySQL 单表性能确实不错,联查就有点吃力了,轻轻松松几十秒甚至几百几千秒
    eason1874
        4
    eason1874  
       2021-12-18 22:36:51 +08:00
    “我和同事们一直努力让 MySQL 优化器能够达到 2000 年初的标准设计水平,还做出了不少很好的调整,但也就是这样了。”

    看看一周前的业界新闻《 Oracle 大佬离职,怒喷 MySQL “糟糕的数据库”》
    https://www.infoq.cn/article/tkakzijrforgcyrhbytq
    bxb100
        5
    bxb100  
       2021-12-19 08:21:36 +08:00 via Android
    Es 热数据在内存里面啊
    lemonf233
        6
    lemonf233  
       2021-12-19 15:35:22 +08:00
    @bxb100 mysql 也有数据在内存的 buffer pool
    zmxnv123
        7
    zmxnv123  
       2021-12-19 16:33:17 +08:00
    这两应用场景都不一样,没啥可比较的。

    一个是搜索,主要是非结构话数据。另一个是 SQL(Struct Query Language)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3469 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:59 · PVG 12:59 · LAX 20:59 · JFK 23:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.