来自MySQL5.7源代码,当使用优先级队列排序时,我们不能使用打包的加载项。没有pq,我们可以试试。问:为什么MySQL5.7在优先级队列中不使用打包插件?
ukxgm1gy1#
打包一个记录的想法是限制内存,例如一个空的 varchar(10000) 使用。但在最坏的情况下(例如,使用最大长度的varchar),打包的记录实际上比未打包的记录需要更多的空间。对于优先级队列排序,内存是在开始时分配的,因为它必须能够保存最坏情况的记录,所以打包它是没有意义的,所以不使用它。在代码中的这一点上,它实际上是不能被使用的,因为当前的实现和代码的其余部分都希望这些记录被解包(例如,队列分配的内存少于最坏情况下打包的记录所需的内存)。
varchar(10000)
1条答案
按热度按时间ukxgm1gy1#
打包一个记录的想法是限制内存,例如一个空的
varchar(10000)
使用。但在最坏的情况下(例如,使用最大长度的varchar),打包的记录实际上比未打包的记录需要更多的空间。对于优先级队列排序,内存是在开始时分配的,因为它必须能够保存最坏情况的记录,所以打包它是没有意义的,所以不使用它。在代码中的这一点上,它实际上是不能被使用的,因为当前的实现和代码的其余部分都希望这些记录被解包(例如,队列分配的内存少于最坏情况下打包的记录所需的内存)。