ES为什么比MySQL快?

470 阅读2分钟
  1. 数据存储方式不同 :MySQL为关系型数据库,通常使用表格的形式组织存储数据,而ES是非关系型数据库,更适合半结构化和非结构化的数据,允许每个文档具有不同的字段和结构,这使得ES在处理复杂数据结构和灵活模型时更加高效。
  2. 全文搜索和分词:ES在设计的时候专注于全文搜索和分词功能,因此设计了倒排索引这种数据结构,使得能够快速的找到包含特定词汇的文档,倒排索引在全文搜索中非常高效,使得ES成为文本搜索的首选工具,而MySQL对这方面的支持相对较弱,全文搜索需要额外的配置和索引,不如ES直接。
  3. 分布式架构:ES是一个分布式搜索引擎,支持分布式系统,可以再多台机器上分布数据和查询负载,这意味着可以将将数据分散到多个节点上进行查询处理,以此来加快查询速度,而MySQL主要是单节点的关系型数据库,这就受限于单台服务器的性能。
  4. 查询性能优化:ES专注于优化搜素和大规模数据存储,通过一系列的查询优化策略和算法来提高查询性能,ES的查询引擎和优化器更适合处理大量的文本数据和复杂的查询需求,从而提供更多的响应时间。
  5. 缓存和内存优化:ES使用缓存来加速查询,虽然MySQL第一步也会走查询缓存,但ES为搜索做了专门的优化,比MySQL更占优势。

2.何为倒排索引?

将存储的数据进行一定方式(一般有两种分词方式:ik_smart和ik_max_word)的分词,然后将分词后的内容存放到一个分词库中,并将每个词条和所属文档建立关联(对于每个关键词条,记录它在哪些文档中出现过,一个关键词条可能对应多个文档id),形成倒排索引。当我们去检索的时候,会把我们检索的条件中的关键词再进行分词,分完词后去分词库中进行匹配内容,匹配完得到数据的id标识,最后根据id标识去存放数据的位置拉取到指定数据。