Agrupación de tablas en OceanBase

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     |
+-----------------+------------+---------------+

Etiquetas: OceanBase tablegroup SQL particionamiento DDL

Publicado el 7-17 07:05