無料PHPプログラム

MySQL 5.1 リファレンスマニュアル :: 15 パーティショニング :: 15.3 パーティショニング管理 :: 15.3.2 HASH や KEY パーティションの管理
« 15.3.1 RANGE と LIST パーティションの管理

15.3.3 パーティションのメンテナンス »
Section Navigation      [Toggle]
  • 15.3 パーティショニング管理
  • 15.3.1 RANGE と LIST パーティションの管理
  • 15.3.2 HASH や KEY パーティションの管理
  • 15.3.3 パーティションのメンテナンス
  • 15.3.4 パーティション情報の取得

15.3.2. HASH や KEY パーティションの管理

ハッシュやキーによりパーティショニングされたテーブルの変更はパーティショニングの設定を行う際と手順が似ており、レンジやリストによりパーティショニングされたテーブルとは違いがあります。そのため、このセクションはハッシュやキーのみによりパーティショニングされたテーブルの変更に関するトピックに絞って説明をおこないます。レンジやリストによりパーティショニングされたテーブルの追加や削除については、項15.3.1. 「RANGE と LIST パーティションの管理」 を参照してください。

HASH や KEY によりパーティショニングされたテーブルを RANGE や LIST によりパーティショニングされたテーブルと同じように削除することはできません。ただし、HASH や KEY パーティショニングは ALTER TABLE ...COALESCE PARTITIONコマンドを使って結合することはできます。例えば、12のパーティションに分かれた、クライアントのデータを含むテーブルがあるとします。clients テーブルは以下の様に定義されています。

CREATE TABLE clients (
    id INT,
    fname VARCHAR(30),
    lname VARCHAR(30),
    signed DATE
)
PARTITION BY HASH( MONTH(signed) )
PARTITIONS 12;

パーティションの数を12から8に減らす場合、以下の 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;
Copyright c 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates

無料CGI PHPスクリプト | 新着情報スクリプト | 営業日カレンダー | PHPマニュアル | MySQLマニュアル | PEARマニュアル

Copyright (c) 2010 jmcodex.com All rights reserved.