2011-07-10 7 views
4

SQL Server 2008 R2の標準エディションでXMLデータ型の列を直接圧縮する方法はありますか?SQL Server 2008 R2のX​​ML列の圧縮

私の制約は以下のとおりです。

  1. のSQL Server 2008 R2 Standard Editionの。
  2. 生のXM1をデータベースに保存する必要があります。

私はこれまで一般化されたテキストストレージCompressing a text field in Sql Server 2k8 R2について同様の質問をしており、結果としてFILESTREAMSを使用していました。 SQL Serverが公開しているすべてのXML機能を失うことになりますが、私はそれをここでやっていきたいと思います。

+0

特定の列を圧縮することはできませんが、SQL Server 2008以降では、行またはページを圧縮できます。[このブログの記事](http://blogs.msdn.com/b/sqlserverstorageengine/archive/)を参照してください。 2007/11/12/types-of-data-compression-in-sql-server-2008.aspx)の紹介 –

答えて

4

いつでもXMLをNVARCHARとして保存し、そのデータをXMLに最初に変換するその列に対するビューでXML機能を利用できます。ただし、実行時の作業量が圧縮の利点をどれだけ相殺するか(実際に達成される圧縮量に比例した相当なCPUオーバーヘッドがあります)をどれだけ評価する必要がありますか。 I/O対応システムでこのようなことをしたいという希望は理解できますが、XML列は正確に圧縮の候補にはならないと考えられます。コストは利点を上回ることが多いでしょう。データを圧縮して保存することを本当に心掛けており、ストレージスペースが最大の問題であれば、アプリケーションに圧縮をさせることを検討します(C#はT-SQLよりもはるかに柔軟性があり、ネイティブの圧縮も可能です)また、アプリケーションでXML機能を処理できるようにします。

0

PAGE/ROW COMPRESSION私が知っている唯一の「直接的な」方法は、LOBページでは機能しないためXML列では機能しません。 in this very good articleのように、CLRで実装されたGZIP圧縮を使用した回避策があります。 1つの欠点は、クエリを実行するときに、XML全体がメモリに収まる必要があることです。さらに、 がかなり遅いので、「注意して、すべての要因を考慮に入れてください」

関連する問題