MySQL 테이블 파티션을 테이블로 승격
내 Google 검색 기술로는 이에 대한 해결책을 찾지 못했습니다. 가능한 경우 테이블의 파티션을 자체적으로 테이블로 승격하려면 어떻게해야합니까?
의 내가 가진 가정하자 part0
, part1
하고 part2
. 어떤 거기에 ALTER TABLE
내가 그 변환을 줄 수있는 part0
새 테이블로?
제 생각에는 데이터가 디스크의 별도 파일에 이미 존재하기 때문에 테이블 생성 프로세스가 SELECT
쿼리를 사용하여 새 테이블을 생성하는 것보다 빠를 수 있습니다 .
답변
당신은 필요하지 않습니다 SELECT
. 이것은 순수한 DDL로 수행 할 수 있습니다.
이 예에서 파티션을 나눈 테이블이 다음과 같다고 가정합니다.
- 데이터 베이스
mydb
- 표
mytable
- 파티션 (
part0
,part1
,part2
)
까다로울 수 있지만 여기에 있습니다.
USE mydb
CREATE TABLE mynewtable LIKE mytable;
ALTER TABLE mynewtable REMOVE PARTITIONING;
ALTER TABLE mytable
EXCHANGE PARTITION p0
WITH TABLE mynewtable
WITHOUT VALIDATION
;
ALTER TABLE mytable DROP PARTITION p0;
이것이하는 일은 mynewtable
다른 모든 측면에서 파티션과 동일한 스키마없이 먼저 만드는 것입니다. 그런 다음 mynewtable
테이블을 part0
.
확실하지 않은 경우 다음을 실행하십시오.
USE mydb
CREATE TABLE mynewtable LIKE mytable;
ALTER TABLE mynewtable REMOVE PARTITIONING;
ALTER TABLE mytable
EXCHANGE PARTITION p0
WITH TABLE mynewtable
WITHOUT VALIDATION
;
의 행을 검사 mynewtable
하고 새로운 part0
및 확인
mynewtable
원본의 데이터가 있습니다part0
- 새 항목
part0
은 비어 있어야합니다.
조옮김이 작동했다고 확신하면 다음을 실행하십시오.
ALTER TABLE mytable DROP PARTITION p0;
실험실 또는 sqlfiddle에서 이것을 테스트하십시오. 시도 해봐 !!!
예, a PARTITION
는 TABLE
. 그러나 파티션을 테이블로 또는 그 반대로 전환하려면 몇 가지 특별한 명령이 필요합니다.
"transportable tablespaces"및 FLUSH TABLES ptable FOR EXPORT를 참조하십시오. ALTER TABLE ptable DISCARD TABLESPACE; ALTER TABLE ptable IMPORT TABLESPACE. 세부 사항은 MySQL 5.6과 5.7 이상에서 다릅니다.
http://mysql.rjweb.org/doc.php/partitionmaint#use_cases_for_partitioning 기술을 논의하는 몇 곳의 링크가 있습니다.