在复杂条件搜索上,为什么MySQL只能被ES吊打?( 三 )


然后 container 内具体的存储结构要根据存入其内数据的基数来决定 。
基数小于 2 ^ 12 次方即 4096时,使用unsigned short类型的有序数组来存储,最大消耗空间就是 8 KB 。
基数大于 4096 时,则使用大小为 2 ^ 16 次方的普通 bitset 来存储,固定消耗 8 KB 。当然,有些时候也会对 bitset 进行行程长度编码(RLE)压缩,进一步减少空间占用 。
ElasticSearch 就是使用 Roaring Bitmap 来缓存不同条件查询出来的 posting list,然后再进行与操作计算出最终结果集 。
后记
至此,我们也算了解了 ElasticSearch 为什么比 MySQL 更适合复杂条件查询,但是有好就有弊,因为为了查询做了这么多的准备工作,ElasticSearch 的插入速度就会慢于 MySQL,而且数据存入ES后并不是立马就能检索到 。
作者丨历小冰
来源丨公众号:程序员历小冰(ID:gh_a1d0b50d8f0a)
关注公众号【dbaplus社群】,获取更多原创技术文章和精选工具下载

【在复杂条件搜索上,为什么MySQL只能被ES吊打?】


推荐阅读