Minhas habilidades de pesquisa no Google não foram suficientes para encontrar uma solução para isso. Se possível, como posso promover uma partição em uma tabela para uma tabela por conta própria?
Vamos supor que eu tenho part0
, part1
, e part2
. Existe algum ALTER TABLE
que eu possa dar que converte part0
para uma nova tabela?
Meu processo de pensamento foi que, como os dados já existem em um arquivo separado no disco, o processo de criação da tabela pode ser mais rápido do que criar uma nova tabela usando uma SELECT
consulta.
Sim, um
PARTITION
é umTABLE
. No entanto, são necessários alguns comandos especiais para transformar uma partição em uma tabela ou vice-versa.Consulte "espaços de tabela transportáveis" e FLUSH TABLES ptable FOR EXPORT; ALTER TABLE ptable DISCARD TABLESPACE; ALTER TABLE ptable IMPORT TABLESPACE. Os detalhes são diferentes entre o MySQL 5.6 e 5.7+.
http://mysql.rjweb.org/doc.php/partitionmaint#use_cases_for_partitioning tem links para alguns lugares que discutem as técnicas.
Você não precisa
SELECT
. Isso pode ser feito com DDL puro.Para este exemplo, digamos que a tabela particionada seja a seguinte:
mydb
mytable
part0
,part1
,part2
)Isso pode ser complicado, mas aqui vai
O que isso faz é primeiro fazer
mynewtable
sem partições e o mesmo esquema em todos os outros aspectos. Em seguida, ele troca amynewtable
tabela compart0
.Se você não tem certeza disso, então execute
Examine as linhas
mynewtable
e as novaspart0
e certifique-se demynewtable
tem os dados do originalpart0
part0
deve estar vazioQuando tiver certeza de que a transposição funcionou, execute
Por favor, teste isso em um laboratório ou sqlfiddle. DE UMA CHANCE !!!