Spec-Zone .ru
спецификации, руководства, описания, API
|
Таблицы, которые делятся хешем или ключом, очень подобны друг другу относительно произведения изменений в
установке разделения, и оба отличаются многими способами от таблиц, которые были разделены диапазоном или
списком. По этой причине этот раздел адресует модификацию таблиц, разделенных хешем или ключом только. Для
обсуждения добавления и отбрасывания разделов таблиц, которые делятся диапазоном или списком, см. Раздел 17.3.1, "Управление RANGE
и LIST
Разделы".
Невозможно отбросить разделы от таблиц, которые делятся HASH
или KEY
таким же образом то, что Вы можете от таблиц, которые делятся RANGE
или LIST
. Однако, можно объединиться HASH
или KEY
разделы используя ALTER
TABLE ... COALESCE PARTITION
оператор. Предположите, что у Вас есть таблица, содержащая данные о
клиентах, которые делятся на двенадцать разделов. clients
таблица определяется как
показано здесь:
CREATE TABLE clients ( id INT, fname VARCHAR(30), lname VARCHAR(30), signed DATE)PARTITION BY HASH( MONTH(signed) )PARTITIONS 12;
Чтобы сократить количество разделов от двенадцать до восемь, выполните следующий ALTER TABLE
команда:
mysql> ALTER TABLE clients COALESCE PARTITION
4;
Query OK, 0 rows affected (0.02 sec)
COALESCE
работы одинаково хорошо с таблицами, которые делятся HASH
,
KEY
, LINEAR HASH
, или LINEAR
KEY
. Вот пример, подобный предыдущему, отличаясь только, в котором таблица делится LINEAR KEY
:
mysql>CREATE TABLE clients_lk (
->id INT,
->fname VARCHAR(30),
->lname VARCHAR(30),
->signed DATE
->)
->PARTITION BY LINEAR KEY(signed)
->PARTITIONS 12;
Query OK, 0 rows affected (0.03 sec)mysql>ALTER TABLE clients_lk COALESCE PARTITION 4;
Query OK, 0 rows affected (0.06 sec)Records: 0 Duplicates: 0 Warnings: 0
Отметьте что число после COALESCE PARTITION
число разделов, чтобы объединиться в
остаток — другими словами, это - число разделов, чтобы удалить из таблицы.
Если Вы пытаетесь удалить больше разделов, чем таблица имеет, результатом является ошибка как один показанный:
mysql> ALTER TABLE clients COALESCE PARTITION
18;
ERROR 1478 (HY000): Cannot remove all partitions, use DROP TABLE instead
Увеличивать число разделов для clients
таблица от 12 до 18. использовать ALTER TABLE ... ADD PARTITION
как показано здесь:
ALTER TABLE clients ADD PARTITION PARTITIONS 6;