美文网首页
Elasticsearch专题:索引

Elasticsearch专题:索引

作者: 北交吴志炜 | 来源:发表于2019-02-20 15:29 被阅读0次

原文在此,希望看一手资料的建议看原文,希望看总结的可以看我的笔记
https://www.infoq.cn/article/database-timestamp-02?utm_source=infoq&utm_medium=related_content_link&utm_campaign=relatedContent_articles_clk

本文算读书笔记,图直接截取原文

mysql的B+树索引是一个二叉树,查找效率是logN,同时插入新的节点不必移动全部节点。兼顾了插入/更新与查询性能。
ES的Lucene 的倒排索引以追求查询的性能为第一目标,牺牲了一些更新的速度。

为什么 Elasticsearch/Lucene 检索可以比 mysql 快?

image.png

相对于mysql,索引以B+树的结构放在磁盘。
es有一个放在内存中的“索引的索引”,即Term index,先通过内存中的Term index查找对应Term dictionary的block位置,然后再去磁盘找相应的Term,由于这一层“索引的索引”设计,导致es比mysql查询过程中需要的磁盘随机读次数更少,那么查询速度自然更快。

还有特点是,直接截图了


image.png

其实所有的高性能依赖的都是具体的细节,每一个环节性能提高一点,最终实现高性能。

es组合索引与mysql的不同
mysql
如果是a,b的两个单列索引。使用查询条件select xxx from table where a=x,b=y时,默认数据库会选一个区分度更大的索引。就是说只能2选一。
如果是(a,b)这样的组合索引,那么这其实就是一个索引,a,b在一个B+树上。
ES
ES即使是组合索引,其实也是单独的单列索引分别查询,然后对结果进行归并。


image.png

使用者两种方式来使用组合索引

相关文章

网友评论

      本文标题:Elasticsearch专题:索引

      本文链接:https://www.haomeiwen.com/subject/cmrhyqtx.html