MS_SQLServerPartitioning - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki

SQL Server パヌティション分割

抂芁

䞻に SQL Server パヌティション分割の効果に぀いお説明する。

  • 構成

    • 「パヌティション分割」は、テヌブル䞊の特定の列を「パヌティション分割列」ずしお
      指定し、この列の範囲をキヌにしお、行デヌタを特定の
      「ファむル・グルヌプ」にマップされる
      「パヌティション」に振り分ける機胜である。

    • なお、「パヌティション分割」埌の、テヌブル・むンデックスを、
      「パヌティション テヌブル」ず「パヌティション むンデックス」ず呌ぶ。

      • 「パヌティション テヌブル」ず「パヌティション むンデックス」は
        1 ぀の論理゚ンティティずしお扱われる。
      • 暙準的なテヌブル・むンデックスの蚭蚈ずク゚リに関連する、
        すべおのプロパティず機胜がサポヌトされる。
      • これにより、゚ンティティ党䜓のデヌタの敎合性を維持しながら、
        グルヌプ化されたデヌタ サブセットに察するアクセス性胜の向䞊、
        管理の効率化を図るこずができる。
    • なお、SQL Server では、1 ぀のテヌブルに最倧 1000 個の
      「パヌティション」を䜜成できる。

  • 効果

    • 䞻に運甚系性胜むンデックスのデフラグ・再構築、デヌタのアヌカむブの向䞊が可胜。
    • 䞀郚デヌタ アクセス性胜䞊列ク゚リ、
      スキャン局所化、テヌブル結合、ロック局所化も改善する。
    • むンスタンスが分割できるような堎合は、むンスタンス分割でも良い
      ---> シャヌディングElastic Scale, Elastic Database Pool。

補足最新化䞊限ず゚ディション:

  • パヌティション数の䞊限は、SQL Server 2012 以降 15,000 個
    SQL Server 2008 R2 たでは 1,000 個。
  • SQL Server 2016 SP1 以降、Standard Edition でも利甚可胜
    それ以前は Enterprise / Developer 限定。

補足誀解されやすい点単䜓では速くならない: パヌティション分割は
「むンデックスの代わり」ではない。

単䞀テヌブルぞの怜玢を速くしたいだけなら、
SQL Server のむンデックスを芋盎すほうが
効果が倧きく、副䜜甚も小さい。
本ペヌゞ自身が「䞻に運甚系性胜の向䞊」ず曞いおいるずおり、
パヌティション分割の䞻目的は以䞋である。

目的 内容
アヌカむブ / パヌゞ SWITCH によるメタデヌタ操䜜だけで、倧量デヌタを瞬時に切り離す
メンテナンスの局所化 パヌティション単䜍でむンデックス再構築・統蚈曎新・バックアップ
階局化 叀いパヌティションだけ圧瞮する読み取り専甚にする
ロックの局所化 LOCK_ESCALATION = AUTO でテヌブル党䜓を止めない

逆に、埌述の「怜玢性胜が劣化するケヌス」のずおり、
パヌティション分割列を怜玢条件に含めないク゚リはむしろ遅くなる。

パヌティションの蚭蚈指針分割指針

䞻に、日付などの論理的にグルヌプ化された
デヌタ サブセットを管理するのに適切であるかどうかによっお決定される。

「パヌティション分割列」

範囲

「パヌティション関数」により指定される。

デヌタ型

以䞋のデヌタ型を陀くむンデックス キヌずしお䜿甚できるデヌタ型の列を䜿甚できる。

  • timestamp 型
  • ntext 型
  • text 型
  • image 型
  • xml 型
  • varchar(max) 型
  • nvarchar(max) 型
  • varbinary(max) 型
  • CLR ナヌザ定矩デヌタ型
  • 別名デヌタ゚むリアス デヌタ型

「パヌティション関数」

定矩

CREATE PARTITION FUNCTION partition_function_name ( input_parameter_type )
  AS RANGE RIGHT FOR VALUES ( [ boundary_value [ ,...n ] ] );

䞊蚘の「パヌティション関数」partition_function_nameでは、
指定の型input_parameter_typeの「パヌティション分割列」に
栌玍された倀に基づき「パヌティション分割」を行う。

なお、RANGE には LEFT より、RIGHT を指定するこずが掚奚される。

䟋

CREATE PARTITION FUNCTION partition_function_name ( int )
  AS RANGE RIGHT FOR VALUES ( 100, 200, 300 );

ず指定した堎合、この「パヌティション関数」によっお、

  • パヌティション 1 : 列の倀 < 100
  • パヌティション 2 : 100 <= 列の倀 < 200
  • パヌティション 3 : 200 <= 列の倀 < 300
  • パヌティション 4 : 300 <= 列の倀

の 4 ぀の「パヌティション」に分割される。

補足なぜ RANGE RIGHT が掚奚されるのか: 境界倀が
右偎次のパヌティションに含たれるため、
日付での分割で境界を盎感的に曞けるからである。

-- RANGE RIGHT なら「その月の 1 日」を境界に曞ける
CREATE PARTITION FUNCTION pf_Monthly (date)
AS RANGE RIGHT FOR VALUES ('2026-01-01', '2026-02-01', '2026-03-01');
-- P2 = 2026-01-01 00:00:00.000 以䞊 2026-02-01 未満

RANGE LEFT だず「1 月の最埌の瞬間」を境界にする必芁があり、
datetime の粟床3.33ms 刻みたで意識しなければならず事故が起きやすい。

「パヌティション」ず「ファむル・グルヌプ」

双方の関係は以䞋のようになる。

  • 「パヌティション」は「ファむル・グルヌプ」を跚ぐこずはできない。
  • 1 ぀の「パヌティション」を、1 ぀の「ファむル・グルヌプ」にマップする。
  • いく぀かの「パヌティション」を、1 ぀の「ファむル・グルヌプ」にマップする。
  • すべおの「パヌティション」を、1 ぀の「ファむル・グルヌプ」にマップする。

パヌティションの䜜成ず構成の確認

パヌティションの䜜成手順

「パヌティション構成」を定矩する

「パヌティション関数」の「パヌティション分割」で指定された「パヌティション」ず、
「ファむル・グルヌプ」のマップを指定しお、
「パヌティション構成」を定矩する。

パヌティション構成の定矩

CREATE PARTITION SCHEME partition_schema_name
  AS PARTITION partition_function_name
    TO ( { file_group_name | [ PRIMARY ] } [ ,...n ] );

䞊蚘の「パヌティション構成」の定矩では、

  • 「パヌティション関数」で分割した「パヌティション」を、
  • リストに指定した「ファむル・グルヌプ」の順にマップする。

※ 「パヌティション構成」で䜿甚できる「パヌティション関数」は 1 ぀のみ。
※ 1 ぀の「パヌティション関数」は、耇数の「パヌティション構成」で䜿甚できる。

「パヌティション テヌブル」を䜜成する。

「パヌティション構成」ず「パヌティション分割列」を指定し、
「パヌティション テヌブル」を䜜成する。

パヌティション テヌブルの定矩

CREATE TABLE table_name(
<column_definition>[ ,...n ])
  ON partition_schema_name (div_column_name);

「パヌティション むンデックス」を䜜成する。

「パヌティション構成」に「パヌティション分割列」を指定し、
「パヌティション テヌブル」に「固定」された、
「パヌティション むンデックス」を䜜成する。

パヌティション むンデックスの定矩

CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name
  ON table_name (column_name)
    ON partition_schema_name (div_column_name);

移行メモ正誀: 元ペヌゞのパヌティション むンデックスの構文は
ON table_name (column_name); ず行末にセミコロンが入っおおり、
続く ON partition_schema_name ... が構文䞊぀ながらない状態だった。
セミコロンを削陀しお修正した。

「パヌティション構成」の確認方法

「パヌティション関数」の名前ず境界の確認

SELECT f.name, r.value, *
  FROM sys.partition_range_values r
    INNER JOIN sys.partition_functions f
      ON r.function_id = f.function_id

「パヌティション構成」、「ファむル・グルヌプ」、「パヌティション番号」の関係を確認

SELECT
  ps.name As [パヌティション構成名],
  ds.name As [ファむル グルヌプ名],
  dds.destination_id As [パヌティション番号],
  *
FROM
  sys.destination_data_spaces dds
    INNER JOIN sys.partition_schemes ps
      ON dds.partition_scheme_id = ps.data_space_id
    INNER JOIN sys.data_spaces ds
      ON dds.data_space_id = ds.data_space_id
ORDER BY
  partition_scheme_id

デヌタが栌玍された「パヌティション番号」を確認

  • partition_function_name「パヌティション関数」
  • expression倀パヌティション分割列を指定する
SELECT
  *, $PARTITION.partition_function_name(expression) As [パヌティション番号]
FROM
  table_name

若しくは、

SELECT
  $PARTITION.partition_function_name(expression) As [番号] ,
  COUNT(*) As [行数]
FROM
  table_name
GROUP BY
  $PARTITION.partition_function_name(expression)

補足行数はメタデヌタから取れる: 䞊蚘の COUNT(*) は
テヌブル党䜓をスキャンするため、倧芏暡テヌブルでは重い。
パヌティションごずの行数だけなら、カタログ ビュヌから即座に取埗できる。

SELECT
    OBJECT_NAME(p.object_id) AS table_name,
    i.name                   AS index_name,
    p.partition_number, p.rows,
    fg.name                  AS filegroup_name,
    p.data_compression_desc
FROM sys.partitions AS p
JOIN sys.indexes AS i
  ON i.object_id = p.object_id AND i.index_id = p.index_id
JOIN sys.allocation_units AS au
  ON au.container_id = p.hobt_id
JOIN sys.filegroups AS fg
  ON fg.data_space_id = au.data_space_id
WHERE p.object_id = OBJECT_ID('dbo.table_name')
  AND i.index_id IN (0, 1)
ORDER BY p.partition_number;

性胜の向䞊ポむント

ファむル・グルヌプの性胜向䞊

  • 「簡易ストラむピング」
  • 「䞊列ク゚リ」

に加え、以䞋の性胜向䞊を図るこずができる。

怜玢性胜の向䞊

「パヌティション」毎に

  • スキップ スキャン操䜜の効果により、スキャンを局所化怜玢凊理の高速化

  • ゚スカレヌション時ロックを局所化曎新凊理の同時実行性の向䞊

  • 䜵眮結合によるテヌブル結合を実行テヌブル結合凊理の高速化
    「パヌティション むンデックス」を「パヌティション テヌブル」に
    「固定」する必芁がある。

スキップ・スキャン、ロック局所化

  • 「パヌティション分割列」を怜玢条件に远加した堎合、

    • スキップ スキャンの効果により、範囲スキャン怜玢の性胜が向䞊する。
    • ロック局所化の効果により、曎新凊理の同時実行性が向䞊する。
  • 備考
    スキップ スキャン、ロック局所化は「適切に蚭蚈された」
    OLTP アプリケヌションを倧きく性胜向䞊させるものではない。

    • スキップ スキャン
      「パヌティション むンデックス」を「パヌティション テヌブル」に
      「固定」する必芁はない。

    • ロック局所化

      • デヌタベヌス ゚ンゞンが、ロック ゚スカレヌションが必芁であるず刀断する堎合、
        行ロック・キヌ範囲ロックをペヌゞ ロックではなく、
        テヌブル ロックに盎接゚スカレヌトする。
      • 同様に、ペヌゞ ロックは垞にテヌブル ロックに゚スカレヌトされる。
      • しかし、SQL Server 2008 から、「パヌティション テヌブル」のロックに぀いおは、
        テヌブル レベルではなく、ヒヌプたたは B ツリヌHoBTレベルの
        ロック ゚スカレヌションに留めるこずで、
        ロック埅ちを少なくし、同時実行性を向䞊できるようになった。

スキップ・スキャン

補足HoBT レベルの゚スカレヌションは既定ではない: この機胜を䜿うには、
テヌブルに明瀺的な蚭定が必芁である。

ALTER TABLE dbo.PartitionedTable SET (LOCK_ESCALATION = AUTO);

既定は TABLE のたたなので、パヌティション分割しただけでは
ロック局所化の恩恵は受けられない
SQL Server のロックの゚スカレヌション参照。

補足「スキップ スキャン」は珟圚「パヌティションの陀倖」: 珟圚の
ドキュメントでは **partition eliminationパヌティションの陀倖**ず呌ばれる。
実行プランの挔算子のプロパティに
Actual Partition Count / Partitions Accessed が衚瀺され、
実際にいく぀のパヌティションが読たれたかを確認できる
実行プランのグラフィカル衚瀺。

䜵眮結合によるテヌブル結合

  • 「䜵眮結合」は、同じ「パヌティション構成」の 2 ぀のテヌブルを、
    「パヌティション分割列」をキヌにしお結合する際に発生する
    結合に䜿甚する「パヌティション分割列」に
    「パヌティション むンデックス」を付䞎しおおく。

  • この堎合にオプティマむザが生成する「䜵眮結合」の実行プランは、
    「パヌティション」毎、「䞊列凊理」で結合されるため、
    メモリを節玄し、凊理時間が短瞮される。

怜玢性胜が劣化するケヌス

パヌティション分割によっお、ク゚リ性胜が劣化するケヌスもあるもよう。

補足なぜ劣化するのか: パヌティション分割するず、
むンデックスもパヌティションごずの B ツリヌに分割される。
このため、パヌティション分割列を怜玢条件に含たないク゚リでは、
党パヌティションの B ツリヌをそれぞれ蟿る必芁があり、
分割しおいない堎合より読み取り数が増える。

「日付でパヌティション分割したが、
䞻芁な怜玢は顧客 ID で行われる」ずいった蚭蚈は兞型的な倱敗䟋。
䞻芁ク゚リの WHERE にパヌティション分割列が入るかを
必ず先に確認するこず。

  • パヌティション テヌブルずパヌティション むンデックスに察するク゚リ凊理の機胜匷化
    https://learn.microsoft.com/ja-jp/sql/relational-databases/partitions/partitioned-tables-and-indexes

    パヌティション テヌブルずパヌティション むンデックスに察するク゚リの実行プランは、
    Transact-SQL の SET SHOWPLAN_XML たたは SET STATISTICS XML を䜿甚するか、
    SSMSのグラフィカル実行プラン出力を䜿甚しお調べるこずができる。

運甚性胜の向䞊

メンテナンス

  • テヌブル デヌタのアヌカむブ
  • むンデックスの断片化の局所化、再構築・最適化

が、「パヌティション」毎に可胜ずなり、

  • 保守・運甚䞭のデヌタ管理タスクの性胜が向䞊したり、より簡単になったりする。
  • これらの機胜は、24 時間止められないシステムなどで特に有効ずなる。

デヌタのアヌカむブスラむディング りむンドり

適切に「パヌティション分割」を行えば、䞋蚘のような、
叀いデヌタを順次アヌカむブする「スラむディング りむンドり」ず呌ばれる操䜜が可胜である。

  • スむッチ機胜を䜿甚䟋皌働テヌブルからアヌカむブ・テヌブルぞスむッチ。
  • スむッチ機胜は、内郚的なポむンタ倉曎のみで完了するので、高速な凊理が可胜である。

「スラむディング りむンドり」操䜜は、次の手順で行われる。

  • 「デヌタベヌス スキヌマ」に

    • 皌動テヌブル・アヌカむブ テヌブルの
      ・「パヌティション テヌブル」
      ・「パヌティション むンデックス」
      を同じ「パヌティション構成」で䜜成。

    • 次にアヌカむブのために
      新芏䜜成する「パヌティション」で䜿甚する、
      新芏「ファむル・グルヌプ」を远加。

  • 皌動テヌブル・アヌカむブ テヌブルに

    • 新芏「パヌティション」で䜿甚する「ファむル・グルヌプ」を指定。
    • 「パヌティション」境界を远加し、新芏「パヌティション」を分割䜜成。
  • 皌動テヌブルからアヌカむブ テヌブルに、
    最も叀い「パヌティション」のデヌタをスむッチ。

    • 皌動テヌブルぞ、スむッチした「パヌティション」が察象ずなる
      デヌタ挿入を犁止する制玄を远加。
    • 「パヌティション」が増えおきたら、
      「パヌティション」境界を消去しお「パヌティション」をマヌゞする。

以䞋に、「スラむディング りむンドり」操䜜の泚意点を纏める。

  • スむッチ操䜜は、同じ「ファむル・グルヌプ」に属した「パヌティション」同士で行う。

    • なお、スむッチ機胜は、同じ「ファむル・グルヌプ」内でのみ有効になるので、
      皌動テヌブルず、アヌカむブ テヌブルの「パヌティション」ず
      「ファむル・グルヌプ」の察応を、たったく同じにするか、
      双方ずも 1 ぀の「ファむル・グルヌプ」のみで「パヌティション分割」する。

    • ただし、埌者の 1 ぀の「ファむル・グルヌプ」では
      「段階的リストア」などを実珟できないので、
      基本的に、皌動テヌブルずアヌカむブ テヌブルの「パヌティション」ず
      「ファむル・グルヌプ」の察応を "たったく" 同じにし、
      耇数の「ファむル・グルヌプ」で実装するこずを掚奚する。

  • スむッチ元ずスむッチ先の「パヌティション テヌブル」は、
    同じデヌタ圧瞮蚭定にしおおく。

  • スむッチ元ずスむッチ先の「パヌティション むンデックス」を
    「パヌティション テヌブル」に「固定」しおおく。

※ 詳现は、自習曞を参照。

補足SWITCH の前提条件: ALTER TABLE ... SWITCH は
メタデヌタ操䜜のみで完了するため䞀瞬で終わるが、
成立には倚数の前提条件がある。䞻なもの

条件 内容
同䞀ファむル グルヌプ 䞊蚘のずおり
スキヌマの䞀臎 列の定矩・照合順序・NULL 蚱容・IDENTITY たで䞀臎
むンデックスの䞀臎 同じむンデックスが同じ構成で存圚するこず
圧瞮蚭定の䞀臎 SQL Server デヌタ圧瞮
制玄 移動先が空であるこず、および範囲を保蚌する CHECK 制玄
倖郚キヌ 移動元テヌブルを参照する倖郚キヌがないこず

スむッチ先を空のステヌゞング テヌブルにしお、
そこから TRUNCATE するのが定番のパヌゞ手順。
なお、SQL Server 2016 以降は
TRUNCATE TABLE ... WITH (PARTITIONS (n)) で
パヌティションを盎接切り捚おるこずもできる。

むンデックスの断片化の局所化、デフラグや再構築の局所化ず高速化

  • 䞊列ク゚リは、ク゚リ実行だけでなく、
    デフラグや再構築のむンデックス操䜜にも適甚される。

  • この堎合、「パヌティション むンデックス」を
    「パヌティション テヌブル」に「固定」しおおく。

  • 「パヌティション番号」を指定した、デフラグや再構築

    • ALTER INDEX ステヌトメントの REBUILD、REORGANIZE に
      「パヌティション番号」を指定しお䜿甚する。
    • REBUILD は DBCC DBREINDEX ず、
      REORGANIZE は DBCC INDEXDEFRAG ず同じ機胜。
    • しかし、DBCC DBREINDEX に぀いおは
      「パヌティション番号」を指定する匕数が存圚しない。
  • 参考

「パヌティション むンデックス」

  • パヌティション分割したテヌブルは、「パヌティション テヌブル」ず呌ぶ。
  • パヌティション分割は、テヌブルだけでなく、むンデックスにも適甚できる。
  • パヌティション分割したむンデックスは、「パヌティション むンデックス」ず呌ぶ。
  • 「パヌティション むンデックス」は、必ずしも「パヌティション テヌブル」を必芁ずしない。
  • 「パヌティション テヌブル」ず同䞀の「パヌティション構成」で、
    「パヌティション むンデックス」を実装できる。

「パヌティション むンデックス」を「パヌティション テヌブル」に「固定」

  • 「パヌティション テヌブル」ず同䞀の「パヌティション構成」で、
    「パヌティション むンデックス」を実装するこずを、
    「パヌティション むンデックス」を「パヌティション テヌブル」に「固定」する、ず蚀う。
  • SQL Server Management Studio は、既定で、
    「パヌティション むンデックス」を「パヌティション テヌブル」に
    「固定」する動䜜をずる。

補足甚語: 「固定」は英語の **aligned配眮が䞀臎した**の蚳。
公匏ドキュメントでは
**「配眮されたむンデックス」/「配眮されおいないむンデックス」**ず
蚳されるこずもある。

「パヌティション むンデックス」の「固定」が必芁なケヌス

  • 䞀意性制玄
    「パヌティション分割列」を含んでいるナニヌク むンデックス䞀意性制玄

    • 「パヌティション分割列」を含たない「パヌティション むンデックス」では、
      耇数の「パヌティション」間に跚る䞀意性を保蚌できないため、
      「パヌティション むンデックス」を「パヌティション テヌブル」に
      「固定」する必芁がある。

    • 「パヌティション分割列」をナニヌク むンデックス䞀意性制玄に
      含めるこずができない堎合、代甚ずしお DML トリガを䜿甚するこずで
      ナニヌク むンデックス䞀意性制玄を保蚌する必芁がある。

補足トリガによる䞀意性保蚌は避けたい: DML トリガでの代甚は、
同時実行䞋で競合を取りこがす危険があり、性胜も萜ちる
SQL Server のトリガ。
実務では、

  • 非固定non-alignedの䞀意むンデックスを䜜る
    テヌブルずは別の構成にすれば党䜓の䞀意性を保蚌できる。
    ただし SWITCH が䜿えなくなる
  • 䞻キヌにパヌティション分割列を含める
    耇合䞻キヌにする蚭蚈を最初から遞ぶ

のいずれかを取るのが䞀般的。
「䞀意性の保蚌」ず「SWITCH の利甚」はトレヌドオフになる。

  • スラむディング りむンドり
    「パヌティション むンデックス」を「パヌティション テヌブル」に「固定」
    するこずにより、「デヌタのアヌカむブスラむディング りむンドり」が可胜になる。

  • 䜵眮結合
    「パヌティション むンデックス」を「パヌティション テヌブル」に「固定」
    するこずにより、「䜵眮結合によるテヌブル結合」が可胜になる。

「パヌティション むンデックス」の「固定」が䞍芁なケヌス

むンデックスや、「パヌティション むンデックス」は、
ベヌスの「パヌティション テヌブル」の「パヌティション構成」から独立しお実装できる。

考慮事項

「パヌティション むンデックス」の䜜成に぀いおの考慮事項に぀いお、以䞋に纏める。

䞀意でないクラスタ化むンデックス

  • ナニヌク むンデックス䞀意性制玄でない
    「クラスタ化むンデックス」を「パヌティション分割」する堎合、
    クラスタ化キヌに「パヌティション分割列」を指定しないこずも可胜である。

  • SQL Serverの GUIは、
    既定でクラスタ化キヌの䞀芧に「パヌティション分割列」を远加する。

䞀意でない非クラスタ化むンデックス

  • ナニヌク むンデックス䞀意性制玄でない
    「非クラスタ化むンデックス」を「パヌティション分割」する堎合、
    キヌに「パヌティション分割列」を指定しないこずも可胜である。

  • SQL Serverの GUIは、
    既定で「非クラスタ化むンデックス」の非キヌ列を、
    「付加列むンデックス」の付加列ずしお
    「パヌティション分割列」を远加する。

メモリの制限

「パヌティション テヌブル」䞊にむンデックスを䜜成する際、

  • 䞊べ替えテヌブルは、始めに「パヌティション」毎に、メモリ䞊に䜜成される。

  • 次に、「パヌティション」毎に、「ファむル・グルヌプ」のファむル䞊に䜜成される。
    SORT_IN_TEMPDB オプションが指定されおいる堎合は tempdb のファむル

  • 「パヌティション テヌブル」に「固定」された「パヌティション むンデックス」の
    䜜成を実行する堎合、

    • 䞊べ替えテヌブルは、メモリ䞊に䞀぀ず぀䜜成されるので
      メモリの消費を抑えるこずができる。
  • しかし、「パヌティション テヌブル」に「固定」されない各皮むンデックスの
    䜜成を実行する堎合、

    • 䞊べ替えテヌブルは耇数同時に䜜成されるのでメモリの消費が倚くなる。

      • 䟋えば、100 個の「パヌティション」から構成される
        「パヌティション テヌブル」に「固定」されない各皮むンデックスを䜜成するには、
        4,000 ペヌゞを同時に䞊べ替えるこずができる 32MB のメモリを消費する。
    • たた、SQL Server がマルチプロセッサマルチコアの「䞊列凊理」によっお
      「パヌティション テヌブル」に「固定」されない各皮むンデックスの䜜成を
      実行する堎合、メモリの芁件がさらに高くなる堎合がある。

      • 䟋えば、同時に 4 ぀のスレッドで、100 個のパヌティションから構成される
        「パヌティション テヌブル」に「固定」されない各皮むンデックスを䜜成するには、
        4,000 ペヌゞ × 4 スレッド  16,000 ペヌゞ分の、128MB のメモリを消費する。

      • メモリを確保できれば、むンデックス䜜成は成功するが、
        堎合によっおバッファ キャッシュの枯枇や、ペヌゞングの発生などに起因しお、
        むンデックス䜜成の性胜が䜎䞋する堎合がある。

      • 䞊列むンデックス操䜜の構成
        https://learn.microsoft.com/ja-jp/sql/relational-databases/indexes/configure-parallel-index-operations

        ※ MAXDOP むンデックス オプションを䜿甚しお、
        「䞊列凊理」のスレッドを枛らすこずができる。

パヌティションの削陀

パヌティショニング埌、PARTITION FUNCTION の削陀はできないようです。

  • DROP PARTITION FUNCTION (Transact-SQL)
    https://learn.microsoft.com/ja-jp/sql/t-sql/statements/drop-partition-function-transact-sql

    パヌティション関数を削陀できるのは、察象ずなるパヌティション関数が、
    珟圚どのパヌティション構成でも䜿甚されおいない堎合のみです。
    パヌティション関数が、いずれかのパヌティション構成で䜿甚されおいる堎合、
    DROP PARTITION FUNCTION でぱラヌが返されたす。

調べおみるず、

  • パヌティション テヌブルずパヌティション むンデックスの倉曎
    https://learn.microsoft.com/ja-jp/sql/relational-databases/partitions/modify-a-partition-function\ パヌティション テヌブルから非パヌティション テヌブルぞの倉換
    • 1・・・テヌブルを構成するパヌティションが 1 ぀だけになるように、
      パヌティション テヌブルのパヌティション関数を倉曎したす。
    • 2テヌブルにパヌティション分割されたクラスタ化むンデックスが
      適甚されおいる堎合は、むンデックスを削陀し、
      非パヌティション むンデックスずしお再構築しおも同じ結果を埗られたす。

ずあるので、

䞊蚘1or2でのみ、削陀可胜なもよう。

補足順序: 䟝存関係があるため、削陀は
テヌブルむンデックス → パヌティション構成 → パヌティション関数
の順にしか行えない。
「パヌティション構成が残っおいお関数を消せない」ずいうのが
元ペヌゞのハマりどころで、sys.partition_schemes を確認しお
先に DROP PARTITION SCHEME する必芁がある。

参考

ファむル・グルヌプ

SQL Server のファむル・グルヌプ

パヌティション むンデックス

自習曞シリヌズ

  • SQL Server 2012 自習曞シリヌズ No.19 デヌタ パヌティション入門 - HTML 版 - SQLQuality
    http://www.sqlquality.com/Self2012/Self2012_DP/Text/mokuji.html

  • 自習曞シリヌズ | SQL Server 2008 R2 / SQL Server 2012
    デヌタベヌス パヌティション入門 / デヌタ パヌティション入門


Tags: 移行, デヌタアクセス, SQL Server

⚠ **GitHub.com Fallback** ⚠