0

$PARTITIONSQL Serverで使用する目的が明確にわかりませんか?MSDNのコンテンツを読みましたが、まだわかりません。

どのようなメリットがありますか?

4

2 に答える 2

0

この関数を使用して、特定の値に使用されるパーティション番号を決定できます。たとえば、日付でパーティション分割されたテーブルでは、値をテーブルに挿入する前であっても、2001 年 7 月 1 日にどのパーティションが使用されるかがわかります。

SELECT $PARTITION.PF_RangeByYear('20010701')

これを使用して、各パーティション番号の行数を見つけることもできます。

SELECT $partition.PF_RangeByYear(orderdate) AS partition#,
  COUNT(*) AS cnt
FROM Orders
GROUP BY $partition.PF_RangeByYear(orderdate);

sys.partitionsまたはからはるかに簡単にできることは間違いありませんsys.dm_db_partition_stats

(これらの例はどちらもItzik の SQL Mag 記事から引用したものです。)

于 2012-07-08T12:46:38.403 に答える
0

データベース内のテーブルを分割するということは、データベースを 1 つのテーブルのように扱いながら複数の部分に分割することを意味します。ここでは、水平分割について説明します。つまり、各分割にはすべての列が含まれ、一部の行のみが含まれます。これを行うには、パーティション分割列の行の値に基づいて、行が属するパーティションを定義するパーティション関数を定義する必要があります。$PARTITION行がどのパーティションに属しているかを示します。

行の評価を表す整数列があり、ユーザーは評価が 4 を超えるアイテムのみを要求することが多いと予想されます。評価に基づいて分割できます。パーティション関数は次のようになります。

CREATE PARTITION FUNCTION partitionByRating (int) FOR VALUES (4);

次に、テーブルの行がどのパーティションに属しているかを調べるために、次のクエリを実行できます。

SELECT $partition.partitionByRating(i.Rating) AS [Partition Number],
    rating AS [Rating],
    name AS [Item Name]
FROM dbo.Items AS i

そして、次のような結果が得られるかもしれません:

Partition    Rating    Item Name
1            1         Ball
1            4         Scooter
2            5         Blaster

つまり、Ball と Scooter は一緒に保管されますが、ストレージへのパーティションの割り当て方法によっては、Blaster が別の場所に保管される可能性があります。

于 2012-07-08T12:46:47.497 に答える