私はドキュメント( http://dev.mysql.com/doc/refman/5.1/en/partitioning.html )を読みましたが、あなた自身の言葉でそれが何であり、なぜそれが使われるのか。
パーティション化の背後にある考え方は、複数のサーバーを使用するのではなく、1つのテーブルではなく複数のテーブルを使用することです。テーブルを複数のテーブルに分割して、1つのサブテーブルに古いデータを入れ、別のテーブルに新しいデータを入れることができます。その後、データベースは、2番目のテーブルにあることがわかっている新しいデータを要求するクエリを最適化できます。さらに、データの分割方法を定義します。
MySQLドキュメンテーション の簡単な例 :
CREATE TABLE employees (
id INT NOT NULL,
fname VARCHAR(30),
lname VARCHAR(30),
hired DATE NOT NULL DEFAULT '1970-01-01',
separated DATE NOT NULL DEFAULT '9999-12-31',
job_code INT,
store_id INT
)
PARTITION BY RANGE ( YEAR(separated) ) (
PARTITION p0 VALUES LESS THAN (1991),
PARTITION p1 VALUES LESS THAN (1996),
PARTITION p2 VALUES LESS THAN (2001),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
これにより、速度を上げることができます:
古いデータを簡単に削除する:
ALTER TABLE employees DROP PARTITION p0;
データベースは、次のようなクエリを高速化できます。
SELECT COUNT(*)
FROM employees
WHERE separated BETWEEN '2000-01-01' AND '2000-12-31'
GROUP BY store_id;
すべてのデータはp2パーティションにのみ保存されることを知っています。
パーティション化されたテーブルは、複数の物理サブテーブルで構成される単一の論理テーブルです。パーティショニングコードは、実際には、基になるパーティションを表す一連のHandlerオブジェクトのラッパーであり、Handlerオブジェクトを介して要求をストレージエンジンに転送します。パーティションは一種のブラックボックスであり、SQLレイヤーで基礎となるパーティションを非表示にしますが、ファイルシステムを見ると非常に簡単に確認できます。ファイルシステムを見ると、ハッシュ区切りの命名規則を持つコンポーネントテーブルが表示されます。
たとえば、次の例は、毎年の売上高を個別のパーティションに配置する簡単な方法です。
CREATE TABLE sales (
order_date DATETIME NOT NULL,
-- Other columns omitted
) ENGINE=InnoDB PARTITION BY RANGE(YEAR(order_date)) (
PARTITION p_2010 VALUES LESS THAN (2010),
PARTITION p_2011 VALUES LESS THAN (2011),
PARTITION p_2012 VALUES LESS THAN (2012),
PARTITION p_catchall VALUES LESS THAN MAXVALUE );
続きを読む ここ 。