innoDB-全文索引

当B+树无法满足索引要求时,比如根据前几个关键字来查询所有相关数据。
InnoDB 1.2.x版本开始支持全文检索

倒排索引

全文检索一般使用倒排索引来实现。倒排索引和B+树一样也是一种索引结构,它在辅助表中存储了单词与单词自身在一个或多个文档中所在位置的映射(1对多)。主要有两种表现形式:

  • {单词,单词所在文档的ID}
  • {单词,(单词所在文档的ID,在文档中的具体位置)}

比如一个表t存储的内容如下图:
在这里插入图片描述
然后倒排索引会根据相关的word来构造一个关联数组,如下图:
在这里插入图片描述
如果是按照第二种格式来存储,即还要存储word在文档中的位置的话:
在这里插入图片描述

InnoDB全文检索

1.2.x版本开始支持全文检索,采用了第二种full inverted index方式,把(DocumentID,Position)视为一个list。
InnoDB为了提高全文检索的并行性能,设置了6个辅助表,每张表根据word的Latin编码来进行排序分区。

这6张表是持久表,存在磁盘上,InnoBD为了他踢高检索性能,也搞了一个FTS Index Cache(全文检索索引缓存),这个缓存时一个红黑树,根据(word,list)进行排序,在插入数据的时候会动态的更新表,然后再批量的刷新到磁盘的表上。

数据库关闭时FTS Index Cache中的数据库会同步到磁盘上的Auxiliary table上。
参数innodb_ft_cache_size来控制FTS Index Cache的大小。默认是32M

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值