ホームページ  >  記事  >  データベース  >  MysqlパーティションとOracle 10パーティションの違いを詳しく解説

MysqlパーティションとOracle 10パーティションの違いを詳しく解説

黄舟
黄舟オリジナル
2017-03-28 13:41:351520ブラウズ

MySQL一般的に使用されるパーティションは、範囲、リスト、ハッシュ、キーです。一般的に使用される Oracle10g パーティションは、範囲 (範囲パーティション)、リスト (リスト パーティション)、ハッシュ (ハッシュ パーティション)、範囲-ハッシュ (範囲-ハッシュ) パーティションです。 )、範囲リスト (リスト複合パーティション)。この記事では、Oracle10 パーティションと Mysql パーティションの違いについて詳しく説明します。一般的に使用される Oracle10g パーティションは、range (レンジ パーティション)、list (リスト パーティション)、hash (ハッシュ パーティション) です。 range-hash (範囲) - ハッシュ パーティション)、range-list (リスト複合パーティション)。

レンジ パーティショニング: レンジ パーティショニングは、幅広い用途に使用できるテーブル パーティショニング手法であり、列の値の範囲を分割条件として使用し、その列の値が位置するレンジ パーティションにレコードを格納します。

2010 年 1 月のデータを a パーティションに配置し、b パーティションに 2 か月のデータを配置する必要があります。作成時に、ベースの列と範囲値を指定する必要があります。パーティション。

時間でパーティション分割する場合、一部のレコードの範囲が一時的に予測できない場合は、maxvalue パーティションを作成できます。指定された範囲内にないすべてのレコードは、maxvalue が配置されているパーティションに保存されます。例:

createtable pdba (id number, time date) partition by range (time)
(
partitionp1 values less than (to_date('2010-10-1', 'yyyy-mm-dd')),
partitionp2 values less than (to_date('2010-11-1', 'yyyy-mm-dd')),
partitionp3 values less than (to_date('2010-12-1', 'yyyy-mm-dd')),
partitionp4 values less than (maxvalue)
)

ハッシュ パーティション:

効果的に範囲に分割できないテーブルの場合は、ハッシュ パーティションを使用できます。これはパフォーマンスの向上に役立ちます。ハッシュ パーティション化では、テーブル内のデータが指定した複数のパーティションに均等に分散され、列が配置されるパーティションはパーティション列のハッシュ値に基づいて自動的に割り当てられるため、どのレコードが配置されるかについては制御も知識もありません。どのパーティション、ハッシュ パーティション化も複数の依存列をサポートできます。例:

createtable test
(
transaction_idnumber primary key,
item_idnumber(8) not null
)
partitionby hash(transaction_id)
(
partitionpart_01 tablespace tablespace01,
partitionpart_02 tablespace tablespace02,
partitionpart_03 tablespace tablespace03
);

ここでは、各パーティションのテーブルスペースを指定します。

リスト パーティション化:

リスト パーティション化でも、パーティション化の値を明確に指定する必要があります。パーティション依存列として同時に複数の列を指定することはできません。範囲分割またはハッシュ分割と同様ですが、単一のパーティションに対応する値は複数になる可能性があります。

パーティション化するときは、パーティション列の可能な値を決定する必要があります。挿入された列の値がパーティション範囲内にない場合、挿入/

更新

は失敗します。そのため、通常はデフォルトのパーティションを作成することをお勧めします。範囲パーティション化の maxvalue パーティション化と同様に、リスト パーティションにないレコードを格納します。 都市コードなどの特定のフィールドに基づいてパーティション化する場合、デフォルトを指定して、すべての非パーティション化ルール データをこのデフォルト パーティションに入れることができます。例:

createtable custaddr
(
idvarchar2(15 byte) not null,
areacodevarchar2(4 byte)
)
partitionby list (areacode)
(partition t_list025 values ('025'),
partitiont_list372 values ('372') ,
partitiont_list510 values ('510'),
partitionp_other values (default)
)

結合パーティション化:

特定の列に従ってパーティション化された後もテーブルがまだ大きい場合、または

その他

のニーズがある場合は、テーブル内にサブパーティションを作成してパーティションを再パーティション化することもできます。パーティション、つまりパーティションを結合する方法です。 10g には、range-hash と range-list の 2 種類の結合パーティションがあります。順序に注意してください。ルート パーティションにはレンジ パーティションのみを指定でき、サブパーティションにはハッシュ パーティションまたはリスト パーティションを指定できます。

例:

createtable test
(
transaction_idnumber primary key,
transaction_datedate
)
partitionby range(transaction_date) subpartition by hash(transaction_id)
subpartitions3 store in (tablespace01,tablespace02,tablespace03)
(
partitionpart_01 values less than(to_date('2009-01-01','yyyy-mm-dd')),
partitionpart_02 values less than(to_date('2010-01-01','yyyy-mm-dd')),
partitionpart_03 values less than(maxvalue)
);
createtable emp_sub_template (deptno number, empname varchar(32), grade number)
partitionby range(deptno) subpartition by hash(empname)
subpartitiontemplate
(subpartitiona tablespace ts1,
subpartitionb tablespace ts2,
subpartitionc tablespace ts3,
subpartitiond tablespace ts4
)
(partitionp1 values less than (1000),
partitionp2 values less than (2000),
partitionp3 values less than (maxvalue)
);
createtable quarterly_regional_sales
(deptnonumber, item_no varchar2(20),
txn_datedate, txn_amount number, state varchar2(2))
tablespacets4
partitionby range (txn_date)
subpartitionby list (state)
(partitionq1_1999 values less than (to_date('1-apr-1999','dd-mon-yyyy'))
(subpartitionq1_1999_northwest values ('or', 'wa'),
subpartitionq1_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq1_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq1_1999_southeast values ('fl', 'ga'),
subpartitionq1_1999_northcentral values ('sd', 'wi'),
subpartitionq1_1999_southcentral values ('ok', 'tx')
),
partitionq2_1999 values less than ( to_date('1-jul-1999','dd-mon-yyyy'))
(subpartitionq2_1999_northwest values ('or', 'wa'),
subpartitionq2_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq2_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq2_1999_southeast values ('fl', 'ga'),
subpartitionq2_1999_northcentral values ('sd', 'wi'),
subpartitionq2_1999_southcentral values ('ok', 'tx')
),
partitionq3_1999 values less than (to_date('1-oct-1999','dd-mon-yyyy'))
(subpartitionq3_1999_northwest values ('or', 'wa'),
subpartitionq3_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq3_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq3_1999_southeast values ('fl', 'ga'),
subpartitionq3_1999_northcentral values ('sd', 'wi'),
subpartitionq3_1999_southcentral values ('ok', 'tx')
),
partitionq4_1999 values less than ( to_date('1-jan-2000','dd-mon-yyyy'))
(subpartitionq4_1999_northwest values ('or', 'wa'),
subpartitionq4_1999_southwest values ('az', 'ut', 'nm'),
subpartitionq4_1999_northeast values ('ny', 'vm', 'nj'),
subpartitionq4_1999_southeast values ('fl', 'ga'),
subpartitionq4_1999_northcentral values ('sd', 'wi'),
subpartitionq4_1999_southcentral values ('ok', 'tx')
)
);

一般的に使用される MySQL パーティションは次のとおりです: 範囲、リスト、ハッシュ、キー

RANGE パーティショニング (ポーション): カラム値が属する範囲間隔に従って、各パーティションにタプルを割り当てます。

 LIST パーティショニング: RANGE によるパーティショニングと似ていますが、異なる点は、LIST パーティショニングは、離散値セット内の特定の値に一致する列値に基づいて選択されることです。

 HASHパーティショニング: ユーザー定義

関数の戻り値

に基づいて選択されるパーティション、は、テーブルに挿入される行の列値を使用して計算されます。この関数には、負でない integer 値を生成する MySQL の有効な式を含めることができます。  KEY パーティショニング: HASH パーティショニングと似ていますが、異なる点は、KEY パーティショニングが 1 つ以上の列の計算のみをサポートし、MySQL サーバーが独自のハッシュ関数を提供することです。

以上がMysqlパーティションとOracle 10パーティションの違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。