在查找性能方面,与正常列相比,mediumblob是否会导致任何额外开销?

时间:2013-01-29 14:33:05

标签: mysql

在查找性能方面,mediumblob是否会导致与普通列相比的额外开销?

我很清楚它会导致每个插入数据的标准磁盘开销(数据的字节数+ 3个字节),但是如果我(例如)执行涉及where的查找语句和join之外的所有其他列上的简单mediumblob,与mediumblob列不存在时的效果会有所不同吗?

1 个答案:

答案 0 :(得分:3)

简短回答:可能不是;)

答案很长:

我建议您阅读这篇有趣的blog post

  

使用COMPACT和REDUNDANT行格式(在Innodb插件之前使用   并且在Innodb Plugin和XtraDB中命名为“Antelope”)Innodb会尝试   将整行放到Innodb页面上。至少需要2行才能适应   每个页面加上一些页面数据,这使得限制大约8000字节。   如果行完全适合Innodb将它存储在页面上而不使用   外部blob存储页面。

在这种情况下,是的,你很可能会看到性能下降。

Conversely

  

当innodb_file_format设置为Barracuda并创建一个表时   使用ROW_FORMAT = DYNAMIC或ROW_FORMAT = COMPRESSED,列值较长   完全存储在页外,并且聚集索引记录包含   只有一个指向溢出页面的20字节指针。

在这种情况下,我认为性能成本是微不足道的,如果有的话。但是,和往常一样,YMMV和你应该用你的实际数据集进行测试。