V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
546L5LiK6ZOt
V2EX  ›  问与答

es 查询一定比 mysql 快吗

  •  
  •   546L5LiK6ZOt · Dec 18, 2021 · 3285 views
    This topic created in 1595 days ago, the information mentioned may be changed or developed.

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

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

    一个是搜索,主要是非结构话数据。另一个是 SQL(Struct Query Language)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2592 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 06:13 · PVG 14:13 · LAX 23:13 · JFK 02:13
    ♥ Do have faith in what you're doing.