• elasticsearch为什么比mysql快


    mysql关系型数据库索引原理

    数据库的索引是B+tree结构

    主键是聚合索引 其他索引是非聚合索引,先从非聚合索引找,见下图

     elasticsearch倒排索引原理

     两者对比

    对于倒排索引,要分两种情况:

    1、基于分词后的全文检索

    这种情况是es的强项,而对于mysql关系型数据库而言完全是灾难

    因为es分词后,每个字都可以利用FST高速找到倒排索引的位置,并迅速获取文档id列表

    但是对于mysql检索中间的词只能全表扫(如果不是搜头几个字符)

    2、精确检索

    这种情况我想两种相差不大,有些情况下mysql的可能会更快些

    如果mysql的非聚合索引用上了覆盖索引,无需回表,则速度可能更快

    es还是通过FST找到倒排索引的位置并获取文档id列表,再根据文档id获取文档并根据相关度算分进行排序,但es还有个杀手锏,即天然的分布式使得在大数据量面前可以通过分片降低每个分片的检索规模,并且可以并行检索提升效率

    用filter时更是可以直接跳过检索直接走缓存

  • 相关阅读:
    android的HTTP框架之Volley
    android学习笔记五。2、其他组件
    android学习笔记四
    android学习笔记二、Activity深入学习
    android事件学习
    android之handler机制深入解析
    java线程深入学习
    K-Means
    git fetch + merge与 git pull的区别
    git分支管理
  • 原文地址:https://www.cnblogs.com/liliuguang/p/14428562.html
Copyright © 2020-2023  润新知