And*_*ift 7 mysql optimization varchar innodb tinytext
我在MySQL中优化了一些innodb表,所以我运行了analsye()程序以查看建议是什么.
对于之前设置为varchar(255)的所有字段,结果建议使用tinytext而不是 varchar(255)
是否有一个性能增益,以通过使用了TINYTEXT?我只关心这里的速度,而不是尺寸.
小智 6
不要相信是否有人告诉你TINYTEXT以其他方式存储,而不是VARCHAR.
实际差异是:
TINYTEXT和其他TEXT字段与MySQL堆内的内存行分开存储,而VARCHAR()字段加起来限制为64k(因此TINYTEXT中可以有超过64k,而不能使用VARCHAR).
TINYTEXT和其他"blob-like"字段将强制SQL层(MySQL)在使用它们时使用磁盘上的临时表,而VARCHAR仍将在"内存中"排序(尽管将在整个宽度上转换为CHAR) .
InnoDB内部并不关心它是tinytext还是varchar.它很容易验证,创建两个表,一个使用VARCHAR(255),另一个使用TINYINT,并向两者插入记录.它们都将采用单个16k页面 - 而如果使用溢出页面,TINYTEXT表应显示为在"SHOW TABLE STATUS"中至少占用32k.
我通常更喜欢VARCHAR(255) - 它们不会对单行造成太多的堆碎片,并且可以在MySQL内存中作为单个64k对象处理.在InnoDB上,大小差异可以忽略不计.
| 归档时间: |
|
| 查看次数: |
6284 次 |
| 最近记录: |