sql >> データベース >  >> RDS >> Sqlserver

SQL Server(T-SQL)でテーブルのパーティション情報を取得する2つの方法

    SQLServerでテーブルのパーティション情報を返す方法はいくつかあります。

    • sys.partitionsを使用できます テーブルおよびほとんどの種類のビューのパーティション情報を返すシステムカタログビュー。
    • sys.dm_db_partition_statsを使用できます 現在のデータベース内のすべてのパーティションのページおよび行数情報を返すシステム動的管理ビュー。

    テーブルまたはインデックスがパーティション化されていない場合でも、これらのビューはパーティション情報を返します( partition_number 1の )。これは、SQL Serverのすべてのテーブルとインデックスに、明示的にパーティション化されているかどうかに関係なく、少なくとも1つのパーティションが含まれているためです。

    sys.partitions

    sys.partitions ビューには、データベース内のすべてのテーブルとほとんどのタイプのインデックスの各パーティションの行が含まれています。 Full-Text、Spatial、XMLなどの特別なインデックスタイプは含まれていません。

    実例を示します。

    SELECT *
    FROM sys.partitions
    WHERE object_id = OBJECT_ID('Movies');

    結果:

    +-------------------+-------------+------------+--------------------+-------------------+--------+---------------------------+--------------------+-------------------------+
    | partition_id      | object_id   | index_id   | partition_number   | hobt_id           | rows   | filestream_filegroup_id   | data_compression   | data_compression_desc   |
    |-------------------+-------------+------------+--------------------+-------------------+--------+---------------------------+--------------------+-------------------------|
    | 72057594049986560 | 91147370    | 1          | 1                  | 72057594049986560 | 0      | 0                         | 0                  | NONE                    |
    | 72057594050052096 | 91147370    | 1          | 2                  | 72057594050052096 | 100    | 0                         | 0                  | NONE                    |
    | 72057594050117632 | 91147370    | 1          | 3                  | 72057594050117632 | 3979   | 0                         | 0                  | NONE                    |
    | 72057594050183168 | 91147370    | 1          | 4                  | 72057594050183168 | 0      | 0                         | 0                  | NONE                    |
    +-------------------+-------------+------------+--------------------+-------------------+--------+---------------------------+--------------------+-------------------------+

    このテーブルには4つのパーティションがあることがわかります。

    ここでも、今回は垂直出力を使用しています(横にスクロールする必要がないようにするため):

    -[ RECORD 1 ]-------------------------
    partition_id            | 72057594049986560
    object_id               | 91147370
    index_id                | 1
    partition_number        | 1
    hobt_id                 | 72057594049986560
    rows                    | 0
    filestream_filegroup_id | 0
    data_compression        | 0
    data_compression_desc   | NONE
    -[ RECORD 2 ]-------------------------
    partition_id            | 72057594050052096
    object_id               | 91147370
    index_id                | 1
    partition_number        | 2
    hobt_id                 | 72057594050052096
    rows                    | 100
    filestream_filegroup_id | 0
    data_compression        | 0
    data_compression_desc   | NONE
    -[ RECORD 3 ]-------------------------
    partition_id            | 72057594050117632
    object_id               | 91147370
    index_id                | 1
    partition_number        | 3
    hobt_id                 | 72057594050117632
    rows                    | 3979
    filestream_filegroup_id | 0
    data_compression        | 0
    data_compression_desc   | NONE
    -[ RECORD 4 ]-------------------------
    partition_id            | 72057594050183168
    object_id               | 91147370
    index_id                | 1
    partition_number        | 4
    hobt_id                 | 72057594050183168
    rows                    | 0
    filestream_filegroup_id | 0
    data_compression        | 0
    data_compression_desc   | NONE

    sys.dm_db_partition_stats

    sys.dm_db_partition_stats view 現在のデータベース内のすべてのパーティションのページおよび行数の情報を返します。ただし、1つのテーブルのみに関心がある場合は、そのテーブルだけに絞り込むこともできます。

    これが例です。

    SELECT *
    FROM sys.dm_db_partition_stats
    WHERE object_id = OBJECT_ID('Movies');

    結果:

    +-------------------+-------------+------------+--------------------+--------------------------+--------------------------+------------------------------+-----------------------+---------------------------+--------------------------------+------------------------------------+-------------------+-----------------------+-------------+
    | partition_id      | object_id   | index_id   | partition_number   | in_row_data_page_count   | in_row_used_page_count   | in_row_reserved_page_count   | lob_used_page_count   | lob_reserved_page_count   | row_overflow_used_page_count   | row_overflow_reserved_page_count   | used_page_count   | reserved_page_count   | row_count   |
    |-------------------+-------------+------------+--------------------+--------------------------+--------------------------+------------------------------+-----------------------+---------------------------+--------------------------------+------------------------------------+-------------------+-----------------------+-------------|
    | 72057594049986560 | 91147370    | 1          | 1                  | 0                        | 0                        | 0                            | 0                     | 0                         | 0                              | 0                                  | 0                 | 0                     | 0           |
    | 72057594050052096 | 91147370    | 1          | 2                  | 1                        | 2                        | 9                            | 0                     | 0                         | 0                              | 0                                  | 2                 | 9                     | 100         |
    | 72057594050117632 | 91147370    | 1          | 3                  | 13                       | 15                       | 33                           | 0                     | 0                         | 0                              | 0                                  | 15                | 33                    | 3979        |
    | 72057594050183168 | 91147370    | 1          | 4                  | 0                        | 0                        | 0                            | 0                     | 0                         | 0                              | 0                                  | 0                 | 0                     | 0           |
    +-------------------+-------------+------------+--------------------+--------------------------+--------------------------+------------------------------+-----------------------+---------------------------+--------------------------------+------------------------------------+-------------------+-----------------------+-------------+

    ここでも垂直出力を使用しています:

    -[ RECORD 1 ]-------------------------
    partition_id                     | 72057594049986560
    object_id                        | 91147370
    index_id                         | 1
    partition_number                 | 1
    in_row_data_page_count           | 0
    in_row_used_page_count           | 0
    in_row_reserved_page_count       | 0
    lob_used_page_count              | 0
    lob_reserved_page_count          | 0
    row_overflow_used_page_count     | 0
    row_overflow_reserved_page_count | 0
    used_page_count                  | 0
    reserved_page_count              | 0
    row_count                        | 0
    -[ RECORD 2 ]-------------------------
    partition_id                     | 72057594050052096
    object_id                        | 91147370
    index_id                         | 1
    partition_number                 | 2
    in_row_data_page_count           | 1
    in_row_used_page_count           | 2
    in_row_reserved_page_count       | 9
    lob_used_page_count              | 0
    lob_reserved_page_count          | 0
    row_overflow_used_page_count     | 0
    row_overflow_reserved_page_count | 0
    used_page_count                  | 2
    reserved_page_count              | 9
    row_count                        | 100
    -[ RECORD 3 ]-------------------------
    partition_id                     | 72057594050117632
    object_id                        | 91147370
    index_id                         | 1
    partition_number                 | 3
    in_row_data_page_count           | 13
    in_row_used_page_count           | 15
    in_row_reserved_page_count       | 33
    lob_used_page_count              | 0
    lob_reserved_page_count          | 0
    row_overflow_used_page_count     | 0
    row_overflow_reserved_page_count | 0
    used_page_count                  | 15
    reserved_page_count              | 33
    row_count                        | 3979
    -[ RECORD 4 ]-------------------------
    partition_id                     | 72057594050183168
    object_id                        | 91147370
    index_id                         | 1
    partition_number                 | 4
    in_row_data_page_count           | 0
    in_row_used_page_count           | 0
    in_row_reserved_page_count       | 0
    lob_used_page_count              | 0
    lob_reserved_page_count          | 0
    row_overflow_used_page_count     | 0
    row_overflow_reserved_page_count | 0
    used_page_count                  | 0
    reserved_page_count              | 0
    row_count                        | 0

    このサンプルテーブルは、パーティション範囲の両端に空のパーティションを保持するというMicrosoft推奨の方法を使用してパーティション化されています。これにより、将来のパーティションの分割/マージによって予期しないデータ移動が発生することがなくなります。


    1. Mysqlまたは/および優先順位?

    2. 外部キーでリンクされたテーブルにデータを挿入する

    3. SSMS2016エラーAzureSQLv12 bacpacのインポート:パスワードなしのマスターキーはサポートされていません

    4. Oracle10gExpressのホームページが表示されない