Problem: ======= row_search_mvcc() does whole table traversal for range query even though the end range is passed. Whole table traversal happens when the record is not with in transaction read view. Solution: ======== Convert the innodb last record of page to mysql format and compare with end range if the traversal of row_search_mvcc() exceeds 100, no ICP involved. If it is out of range then InnoDB can avoid the whole table traversal.这句话什么意思
时间: 2024-04-25 18:26:50 浏览: 169
这段话是关于InnoDB数据库引擎的一个问题和解决方法。问题是,在进行范围查询时,即使传入了结束范围,row_search_mvcc()函数仍会对整个表进行遍历。这是因为当记录不在事务读视图中时,需要对整个表进行遍历。解决方法是将InnoDB页面的最后一条记录转换为MySQL格式,并与结束范围进行比较。如果row_search_mvcc()函数的遍历超过了100次,且没有使用索引范围扫描(ICP),就会进行整个表的遍历。如果在范围之外,则InnoDB可以避免对整个表进行遍历。
阅读全文