码迷,mamicode.com
首页 > 数据库 > 详细

Mysql性能优化GUID主键

时间:2014-12-03 20:48:49      阅读:327      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   ar   使用   sp   on   文件   数据   

由于系统中大量使用GUID作为主键,导致数据文件大,数据查询速度慢。意向转为Int主键。先查看下单表测试GUID和Int分别作为主键的结果。

测试条件如下:

AMD E1-1200 APU 1.4G 2GRam 100Lan, 250GB HD

Mysql 5.5,innodb_buffer_pool_size = 512M

测试表order_dish_history:60个字段,共5个索引,4个guid索引,1个timestamp+PK索引用于表分区,其它字段两表完全相同;表分为12个分区每个月份一个分区,每个分区10万条数据

GUID表及INT表信息

bubuko.com,布布扣

10万数据:

SELECT SQL_NO_CACHE SUM(dish_num),SUM(dish_money),SUM(dish_price),
AVG(dish_num),AVG(dish_money),AVG(dish_price),
MAX(dish_num),MAX(dish_money),MAX(dish_price)
FROM order_dish_history_int WHERE business_date BETWEEN ‘2014-01-01‘ AND ‘2014-01-02‘
GROUP BY dish_id

bubuko.com,布布扣

50万数据:

读取5个分表的数据,WHERE business_date BETWEEN ‘2014-01-01‘ AND ‘2014-05-02‘

bubuko.com,布布扣

100万数据:

读取10个分表的数据,WHERE business_date BETWEEN ‘2014-01-01‘ AND ‘2014-10-02‘

bubuko.com,布布扣

可以看出Int做主键在数据量大的时候,查询速度和对机子内存的要求明显胜出。

对表结构的数据类型做更改

bubuko.com,布布扣

数据类型等根据数据取值范围更改为tinyint,mediumint unsigned等。

对于分布式连锁的,在总部采用了联合主键。例如,可以取分店的唯一标识shop_id + 分店该表的主键

 

Mysql性能优化GUID主键

标签:style   blog   http   ar   使用   sp   on   文件   数据   

原文地址:http://www.cnblogs.com/zzq417/p/Mysql_Optimize_Pk.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!