2010-05-26 72 views
1

分别在关键分区表和常规表上测量性能。但是我们无法通过分区找到任何性能改进。查询被修剪。MySQL分区性能

RHEL上使用MySQL 5.1.47 4.

表的细节:

UserUsage - 将对用户的手机号码和数据使用每个日期条目。手机号码和日期作为PRI KEY。

UserProfile - 查询prev表并存储每个手机号码的摘要。手机号码PRI KEY。

CREATE TABLE `UserUsage` (
`Msisdn` decimal(20,0) NOT NULL, 
`Date` date NOT NULL, 
. 
. 
PRIMARY KEY USING BTREE (`Msisdn`,`Date`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 
PARTITION BY KEY(Msisdn) 
PARTITIONS 50; 


CREATE TABLE `UserProfile` (
`Msisdn` decimal(20,0) NOT NULL, 
. 
. 
PRIMARY KEY (`Msisdn`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 
PARTITION BY KEY(Msisdn) 
PARTITIONS 50; 

二表由查询更新日期在第一表格中一个perl程序选择和订购,查询是

select * from UserUsage where Msisdn=number order by Date desc limit 7 

[在Perl过程数据]

update UserProfile values(....) where Msisdn=number 

解释分区对于select,显示仅在特定分区中扫描的行。

分区设计或查询有问题,因为分区与普通表相比几乎相同或更多时间?

+0

表中有多少条记录? – Quassnoi 2010-05-26 10:24:09

+0

约1锰记录 – 2010-05-26 12:30:36

回答

0

分区设计或查询有什么问题,因为分区与正常表相比几乎相同或更多时间?

不可以。您对表分区,以便您不必一次备份或重新组织整个表。分区允许您更好地管理大型表格。分区不是一个性能增强器。

0

这取决于您的数据有多大以及您的查询如何从分区中受益。例如,如果您在5年内有1000万条记录并按年分区。从一年中选择记录的查询将通过分区执行得更快,而不是不进行分区。