ALTER TABLESPACE
Sintaxe:
ALTER TABLESPACE tablespace_name {ADD|DROP} DATAFILE 'file_name' [INITIAL_SIZE [=] size] [WAIT] ENGINE [=] engine_name
Descrição:
Esta instrução pode ser usada tanto para adicionar um novo arquivo de dados, quanto para excluir um arquivo de dados de um tablespace.
A variante ADD DATAFILE permite a você especificar um tamanho inicial usando uma cláusula INITIAL_SIZE, onde o tamanho é medido em bytes; o valor padrão é de 128M (128 megatybtes). Opcionalmente, você pode acompanhar este valor inteiro com uma abreviatura de uma letra para uma ordem de grandeza, semelhante a aquelas usadas no my.cnf. Geralmente é uma das letras M (megabytes) ou G (gigabytes).
Nota*: Todos os objetos de dados de disco do MySQL Cluster compartilham o mesmo namespace. Isto significa que cada objeto de dados do disco deve ser nomeado exclusivamente (e não apenas cada objeto de dados de disco de um determinado tipo). Por exemplo, você não pode ter um espaço de tabela e um arquivo de log undo com o mesmo nome, ou um arquivo de log undo e um arquivo de dados com o mesmo nome.
Antes do MySQL Cluster NDB 6.2.17, 6.3.23, e 6.4.3, os nomes de arquivos e caminhos para arquivos log undo não podiam ser maiores do que 128 caracteres. (Bug#31770 (http://bugs.mysql.com/31770))
Em sistemas de 32-bits, o valor máximo suportado para INITIAL_SIZE é 4G. (Bug#29186 (http://bugs.mysql.com/29186))
Uma vez que o arquivo de dados tem sido criado, não pode ser alterado o tamanho deste; no entanto, você pode adicionar mais arquivos de dado ao tablespace usando instruções adicionais ALTER TABLESPACE ... ADD DATAFILE.
O uso de DROP DATAFILE com ALTER TABLESPACE exclui o 'file_name' do arquivo de dados, do tablespace. Este arquivo deve ter sido adicionado ao tablespace usando CREATE TABLESPACE ou ALTERTABLESPACE; Caso contrario ocorrerá um erro.
Ambos, ALTER TABLESPACE ... ADD DATAFILE e ALTER TABLESPACE ... DROP DATAFILE requerem uma cláusula ENGINE que especifique o mecanismo de armazenamento usado pelo tablespace. No MySQL 5.1 os únicos valores aceitados para engine_name são NDB e NDBCLUSTER.
WAIT é analisado mas por outro lado ignorado, portanto não tem efeito no MySQL 5.1. Está destinado a uma futura expansão.
Quando ALTER TABLESPACE ... ADD DATAFILE é usado com ENGINE = NDB, um arquivo de dados é criado em cada nó de dados do Cluster. Você pode verificar que os arquivos de dados foram criados e obter informação sobre eles consultando a tabela INFORMATION_SCHEMA.FILES. Por exemplo, a seguinte consulta mostra todos os arquivos de dados pertencentes ao tablespace chamado newts:
mysql> SELECT LOGFILE_GROUP_NAME, FILE_NAME, EXTRA -> FROM INFORMATION_SCHEMA.FILES -> WHERE TABLESPACE_NAME = 'newts' AND FILE_TYPE = 'DATAFILE'; +--------------------+--------------+----------------+ | LOGFILE_GROUP_NAME | FILE_NAME | EXTRA | +--------------------+--------------+----------------+ | lg_3 | newdata.dat | CLUSTER_NODE=3 | | lg_3 | newdata.dat | CLUSTER_NODE=4 | | lg_3 | newdata2.dat | CLUSTER_NODE=3 | | lg_3 | newdata2.dat | CLUSTER_NODE=4 | +--------------------+--------------+----------------+ 2 rows in set (0.03 sec)
ALTER TABLESPACE foi adicionado no MySQL 5.1.6. No MySQL 5.1, somente é útil com armazenamento de dados para MySQL Cluster. Veja http://dev.mysql.com/doc/refman/5.1/en/mysql-cluster-disk-data.html.