none
パーテショニングテーブルの挙動に関して RRS feed

  • 質問

  • SQL Svr 2008 Enterprise Editionのパーテショニングテーブルの挙動に関してご教授いただけませんでしょうか。

    本来であれば、実機確認したいのですが、ライセンスがなく確認できない状態でして。。。

    大変申し訳ありません。

    1億件のレコードがあり、そのデータを以下のようにパーテーションしたとします。

    (配置するハードディスクは同一のものとします。)

    ***********************************************************

    3月 2500万件

    4月 2500万件

    5月 2500万件

    6月 2500万件

    ***********************************************************

    この場合もし、同じディスクにパーテーションの領域を作った場合は、

    パーテーションとしての効果はないのでしょうか。

    私の理解ではパーテーションは走査する部分、バッファキャッシュに乗せる部分を必要な部分から必要なもののみ

    とするという理解ですので、3月、4月、5月、6月とテーブルを分けて2500万件ずつレコードを挿入し、

    必要に応じてSQLでテーブル結合してもあまり変わりが無いように感じてしまい、、、

    ぜひともご教授のほどよろしくお願いいたします。

    2012年3月24日 4:25

回答

  • 機能評価は評価版のSQL Serverが提供されているので、そちらで試してみればよいのではないでしょうか?

    実業務だと数千万件ぐらいからOracleに行っちゃう仕事しかしていないので、SQL Serverで億オーダーがどれぐらいの差がでるかははっきり知らないのですが、

    > 必要に応じてSQLでテーブル結合してもあまり変わりが無いように感じてしまい、、、

    パーティショニングを行うのは、それを人間が行うコストを下げることが、目的の1つなのではないですか?(SQL Server の値段 < ◎◎年間の保守における人件費、みたいな)

    各月のテーブルを作成するような設計にして、抽出も更新も管理できて、ロック(部分のロック、全体のロック)もきちんとできて、テーブルを読み取り専用にしたり統計情報やら何やらのメンテナンスもきちんとできるというなら、月毎にテーブルを作成してもよいんじゃないでしょうか。

    OLAPの更新とか、月毎のテーブルをUNIONしたものを使って更新をするとか、まともなパフォーマンスのクエリが書けて保守できるのか?とか、月毎のテーブルを作ることでどこに影響があるのかを運用全体でみて考えて判断すればよいのではないでしょうか。

    • 回答の候補に設定 山本春海 2012年4月2日 8:38
    • 回答としてマーク 山本春海 2012年4月12日 1:14
    2012年3月26日 15:16
  • 別ディスクの方が効果は高いと思いますが、SQL Server ではパーティションに
    特化した機能向上が入っています。
    http://msdn.microsoft.com/ja-jp/library/ms345599.aspx

    そのため結合するよりは管理性およびクエリオプティマイザの選択肢が
    増えるという意味で良いのではないかと思っています。
    またどのような処理を行うのかにも依存するかと思います。

    パーティションテーブルはEvaluation Editionでも使えるので試してみてはいかがでしょうか。
    http://msdn.microsoft.com/ja-jp/library/ms188706.aspx

    • 回答の候補に設定 山本春海 2012年4月2日 8:38
    • 回答としてマーク 山本春海 2012年4月12日 1:14
    2012年3月26日 15:33
    モデレータ

すべての返信

  • 機能評価は評価版のSQL Serverが提供されているので、そちらで試してみればよいのではないでしょうか?

    実業務だと数千万件ぐらいからOracleに行っちゃう仕事しかしていないので、SQL Serverで億オーダーがどれぐらいの差がでるかははっきり知らないのですが、

    > 必要に応じてSQLでテーブル結合してもあまり変わりが無いように感じてしまい、、、

    パーティショニングを行うのは、それを人間が行うコストを下げることが、目的の1つなのではないですか?(SQL Server の値段 < ◎◎年間の保守における人件費、みたいな)

    各月のテーブルを作成するような設計にして、抽出も更新も管理できて、ロック(部分のロック、全体のロック)もきちんとできて、テーブルを読み取り専用にしたり統計情報やら何やらのメンテナンスもきちんとできるというなら、月毎にテーブルを作成してもよいんじゃないでしょうか。

    OLAPの更新とか、月毎のテーブルをUNIONしたものを使って更新をするとか、まともなパフォーマンスのクエリが書けて保守できるのか?とか、月毎のテーブルを作ることでどこに影響があるのかを運用全体でみて考えて判断すればよいのではないでしょうか。

    • 回答の候補に設定 山本春海 2012年4月2日 8:38
    • 回答としてマーク 山本春海 2012年4月12日 1:14
    2012年3月26日 15:16
  • 別ディスクの方が効果は高いと思いますが、SQL Server ではパーティションに
    特化した機能向上が入っています。
    http://msdn.microsoft.com/ja-jp/library/ms345599.aspx

    そのため結合するよりは管理性およびクエリオプティマイザの選択肢が
    増えるという意味で良いのではないかと思っています。
    またどのような処理を行うのかにも依存するかと思います。

    パーティションテーブルはEvaluation Editionでも使えるので試してみてはいかがでしょうか。
    http://msdn.microsoft.com/ja-jp/library/ms188706.aspx

    • 回答の候補に設定 山本春海 2012年4月2日 8:38
    • 回答としてマーク 山本春海 2012年4月12日 1:14
    2012年3月26日 15:33
    モデレータ