Definición de grupos de tablas
Para crear un grupo de tablas, se emplea la siguiente instrucción SQL:
mysql> CREATE TABLEGROUP my_group PARTITION BY HASH PARTITIONS 6;
Query OK, 0 rows affected (2.33 sec)
Para inspeccionar los grupos de tablas existentes y su composición, se utiliza SHOW TABLEGROUPS:
mysql> SHOW TABLEGROUPS WHERE tablegroup_name = 'my_group';
+-----------------+------------+---------------+
| Tablegroup_name | Table_name | Database_name |
+-----------------+------------+---------------+
| my_group | NULL | NULL |
+-----------------+------------+---------------+
Para obtener la sentencia de creación de un grupo de tablas:
mysql> SHOW CREATE TABLEGROUP my_group;
+------------+-------------------------------------------------------------------------------+
| Tablegroup | Create Tablegroup |
+------------+-------------------------------------------------------------------------------+
| my_group | CREATE TABLEGROUP IF NOT EXISTS `my_group`
PARTITION BY HASH PARTITIONS 6
|
+------------+-------------------------------------------------------------------------------+
Asignación de tablas durante la creación
Se puede vincular una tabla a un grupo de tablas en el momento de su definición:
mysql> CREATE TABLE t1 (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(30)
) TABLEGROUP my_group PARTITION BY HASH(id) PARTITIONS 6;
Al consultar nuevamente el grupo:
mysql> SHOW TABLEGROUPS WHERE tablegroup_name = 'my_group';
+-----------------+------------+---------------+
| Tablegroup_name | Table_name | Database_name |
+-----------------+------------+---------------+
| my_group | t1 | oceanbase |
+-----------------+------------+---------------+
Inclusión mediante ALTER TABLE
Tras crear una tabla sin grupo:
CREATE TABLE t2 (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(30)
) PARTITION BY HASH(id) PARTITIONS 6;
Estado inicial del grupo:
mysql> SHOW TABLEGROUPS WHERE tablegroup_name = 'my_group';
+-----------------+------------+---------------+
| Tablegroup_name | Table_name | Database_name |
+-----------------+------------+---------------+
| my_group | t1 | oceanbase |
+-----------------+------------+---------------+
Se agrega t2 al grupo mediante ALTER TABLE:
ALTER TABLE t2 TABLEGROUP = 'my_group';
Resultdao después de la operación:
mysql> SHOW TABLEGROUPS WHERE tablegroup_name = 'my_group';
+-----------------+------------+---------------+
| Tablegroup_name | Table_name | Database_name |
+-----------------+------------+---------------+
| my_group | t1 | oceanbase |
| my_group | t2 | oceanbase |
+-----------------+------------+---------------+
Inclusión mediante ALTER TABLEGROUP
Otra alternativa es usar ALTER TABLEGROUP. Primero se crea una nueva tabla:
CREATE TABLE t3 (
id INT NOT NULL PRIMARY KEY,
name VARCHAR(30)
) PARTITION BY HASH(id) PARTITIONS 6;
Estado del grupo antes de agregar t3:
mysql> SHOW TABLEGROUPS WHERE tablegroup_name = 'my_group';
+-----------------+------------+---------------+
| Tablegroup_name | Table_name | Database_name |
+-----------------+------------+---------------+
| my_group | t1 | oceanbase |
| my_group | t2 | oceanbase |
+-----------------+------------+---------------+
Se ejecuta la adición:
ALTER TABLEGROUP my_group ADD t3;
Resultado final:
mysql> SHOW TABLEGROUPS WHERE tablegroup_name = 'my_group';
+-----------------+------------+---------------+
| Tablegroup_name | Table_name | Database_name |
+-----------------+------------+---------------+
| my_group | t1 | oceanbase |
| my_group | t2 | oceanbase |
| my_group | t3 | oceanbase |
+-----------------+------------+---------------+