-1

SQLサーバーのデータテーブルに「行」データ圧縮を実装しようとしていました。116000 レコードと 30 列 (10 ~ 15 列は行データ圧縮の対象となる可能性があります) を持つ 1 つのデータ テーブルでスクリプトを正常に実行した後、物理メモリ消費量を検証するために以下の手順に従います。

ステップ 1) ドライブ内のデータベースのすべてのデータ ファイル (mfd、ldf、および ndf) のストレージ スペースを計算すると、6.63 GB になります。

ステップ 2) 行データ圧縮スクリプトが正常に実行された例

USE [DbName]
ALTER TABLE [dbo].[TableName] REBUILD PARTITION = ALL
WITH 
(DATA_COMPRESSION = ROW
)

手順 3) 手順 1) に従うと、6.66GB になります。これらのステップの間に単一のトランザクションとデータ挿入はありませんでした。

私は間違った検証を行っているのでしょうか、それともデータ圧縮について間違った考えを持っていますか?

Assumptions: Data columns with Int(4 byte) data type and storing value less than 100 will be compressed to store in 1 byte(small Int) of space. Similarly for other data columns.

4

1 に答える 1

0

データを表示する手順があります: sp_estimate_data_compression_ Savings。テーブルが圧縮の恩恵を受けるかどうかを評価する前に、これを実行できます。

テーブルのサイズについては、システム関数を使用してサイズを決定できます。これは良い出発点になる可能性があります。

declare @object_id int = object_id('dbo.mytable');
declare @dbid int = db_id();
select 
table_size_in_bytes = page_count * 8192
--, * 
from sys.dm_db_index_physical_stats(@dbid, @object_id, -1, 0, null)
where index_id in (0,1);
于 2015-01-07T09:09:40.967 に答える