MySQL Innodb数据库性能实践——VARCHAR vs CHAR(2)
来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:37 点击:次
	   
	
	【表配置】
	VARCHAR平均长度200,CHAR长度250,其它配置如下:
| 配置项 | 配置 | 
| 记录数 | 1000万,2000万,5000万,1亿 | 
| 存储引擎 | Innodb | 
| 行格式 | compact | 
	
	性能测试结果如下:
	【查询】
	
	
	【插入】
	
	
	【更新】
	更新时VARCHAR也是随机长度
	
	
	【删除】
	
	
	测试结果展现了一个与理论不太相符的现象:当表大小小于Innodb buffer pool时,CHAR和VARCHAR没有差别,而在表大小大于Innodb buffer pool时,VARCHAR性能反而更高!这是为什么呢?
	
	首先,性能是综合硬件、配置、表记录数、业务模型等多种因素综合后的结果,单一因素的差异,对整体来说可能几乎没有影响;
	例如,执行一个操作需要100ms,而CHAR 比 VARCHAR性能上只快了1微秒,那么最终的性能就不会有影响。
	这就是当Innodb buffer pool足够大时,CHAR 和VARCHAR没有差别的原因。
	
	再次,理论上CHAR比VARCHAR快的根本原因是站在CPU的角度来说的,但性能是综合各种因素后的最终结果,当Innodb buffer pool小于表大小时,"磁盘读写"成为了性能的关键因素,而VARCHAR更短,因此性能反而比CHAR高。
	
	
相关新闻>>
- 发表评论
- 
				
- 最新评论 进入详细评论页>>





