테이블을 분할했습니다 (메모리 부족 오류 - 테이블이 너무 큼). 아래와 같이 나는 타임 스탬프 열을 분할했다 :타임 스탬프에서 MySQL 테이블 파티셔닝
CREATE TABLE test (
fname VARCHAR(50) NOT NULL,
lname VARCHAR(50) NOT NULL,
dob timestamp NOT NULL
)
PARTITION BY RANGE(unix_timestamp(dob)) (
PARTITION p2012 VALUES LESS THAN (unix_timestamp('2013-01-01 00:00:00')),
PARTITION p2013 VALUES LESS THAN (unix_timestamp('2014-01-01 00:00:00')),
PARTITION pNew VALUES LESS THAN MAXVALUE
);
내가 분할의 과정은 또한 실행하는 데 몇 시간이 걸릴 whihc 내 쿼리의 몇 가속화에 도움이 될 것으로 기대했다; 그러나이 유형의 파티션은 시작되지 않으며 모든 파티션이 여전히 사용 중이며 쿼리를 통해 스캔됩니다. 나는 시도하고, 부부와 함께, 실패한 더 접근 방법 : Error Code: 1486. Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed
2) 준 :
1) 오류의 결과는 것을,
CREATE TABLE t2 (
fname VARCHAR(50) NOT NULL,
lname VARCHAR(50) NOT NULL,
region_code TINYINT UNSIGNED NOT NULL,
dob timestamp NOT NULL
)
PARTITION BY RANGE(YEAR(dob)) (
PARTITION p2012 VALUES LESS THAN (2013),
PARTITION p2013 VALUES LESS THAN (2014),
PARTITION pNew VALUES LESS THAN MAXVALUE
);
그러나 파티션에 대해 서로 다른 범위를 사용하는 시도 MySQL의 Doc-18.5 Partition Selection에 제안 된대로 다음과 같이 select 문에서 어떤 파티션을 사용할 지 지정하는 시도를했다.
select * from t2 partition (p2012)
그러나 구문 오류가 반환됩니다. Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(p2012) LIMIT 0, 1000' at line 1
쿼리를 최적화하기 위해 테이블 파티셔닝을 활용할 수있는 다른 방법이 있습니까?
파티션 'p2012'가 실제로 테이블에 있습니까? – hashbrown
사용중인 정확한 MySQL 버전은 무엇입니까? – Mchl
나는 5.1.26을 사용하고있다 – Kate