程序员必备!这是即将写入MySQL源码的官方bug解决方案( 二 )


6灵感来源其实在原始的AHI查询路径上已经有一个类似的优化了:
在btr_cur_search_to_nth_level中执行AHI查询前 , 如果发现AHI的hash table被其他线程X锁住了 , 直接fallback到BTree查询 。
这里的优化考量是类似的:与其等待AHI的hash table的X锁 , 不如直接走btree搜索 , 代价很可能比等待X锁更低 , 并发度更高 。
程序员必备!这是即将写入MySQL源码的官方bug解决方案文章插图
7总结该优化目前已经在TXSQL5.7最新版本中上线 , 将会有效缓解AHI构建的锁竞争问题 , 可能的场景包括不限于:系统启动、AHI开关刚开启、主备切换时 , 所有页面都还没有AHI记录 , 高并发可能导致大量的AHI构建工作 。
同时经过我们验证 , 在官方MySQL的5.7和8.0最新版本中都存在该问题 , 因此我们也已经将这个优化思路贡献给了官方 , 目前正在评估 , 相信不久将合入主线 。