2010-05-26 6 views
1

키 분할 테이블과 일반 테이블의 성능을 별도로 측정했습니다. 그러나 파티셔닝으로 성능 향상을 찾을 수 없었습니다. 쿼리가 제거됩니다.MySQL 분할 성능

RHEL에 4

표 세부 사항의 MySQL 5.1.47을 사용 :

UserUsage을 - 각 날짜에 대한 사용자의 휴대폰 번호와 데이터 사용에 대한 항목이 있습니다. PRI KEY로 모바일 번호와 날짜.

UserProfile - 검색어는 이전 표와 각 휴대 전화 번호에 대한 요약을 저장합니다. 휴대폰 번호 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; 

번째 테이블이 펄 프로그램의 첫 번째 테이블에서 날짜를 선택하고 주문 조회에 의해 업데이트되는, 쿼리

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

[펄 프로세스 데이터]이다

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

파티션 설명해 select의 경우, 특정 파티션에서만 스캔되는 행을 표시합니다.

파티션 설계가 일반 테이블에 비해 거의 동일하거나 더 많은 시간이 걸리므로 파티션 설계 또는 쿼리에 문제가 있습니까?

+0

테이블에 몇 개의 레코드가 있습니까? – Quassnoi

+0

Mn 레코드 약 1 개 –

답변

0

파티션 설계가 일반 테이블에 비해 거의 동일하거나 더 많은 시간이 걸리므로 문제가 있습니까?

아니요. 전체 테이블을 한 번에 백업하거나 재구성 할 필요가 없도록 테이블을 파티션합니다. 파티셔닝을 사용하면 대형 테이블을보다 잘 관리 할 수 ​​있습니다. 파티셔닝은 성능 향상 장치가 아닙니다.

0

데이터의 크기와 파티션의 이점에 따라 쿼리의 이점이 달라집니다. 예를 들어, 5 년에 걸쳐 1,000 만 개의 레코드가 있고 연도별로 분할하는 경우 1 년 동안 레코드를 선택하는 쿼리는 분할하지 않고 분할하는 것보다 훨씬 빠르게 실행됩니다.