Mengaktifkan Page Compression pada Semua Tabel

Untuk data yang sangat besar, database bisa memanfaatkan fitur kompresi pada sqlserver untuk diaktifkan, hal itu berguna untuk mengurangi space dan meningkatkan performa (mengurangi IO cost).

bentuk – bentuk kompresi antara lain :

  1. Page Compression
  2. Row Compression

Banyak sumber mengatakan bahwa Page Compression lebih memberikan efek pada kompresi maupun pada performa.

sedangkan untuk object database yang dapat dilakukan kompresi adalah :

  1. Tabel
  2. Index

Untuk merubah satu buah tabel cukup mudah yaitu dengan cara :

ALTER TABLE {NAMA TABEL} REBUILD WITH (DATA_COMPRESSION=PAGE);

sedangkan untuk index seperti :

ALTER INDEX {NAMA INDEX} ON {NAMA TABEL} REBUILD WITH (DATA_COMPRESSION=PAGE);

namun masalah muncul saat kita sudah memiliki banyak tabel dan banyak index, tentu sangat melelahkan untuk melakukan script satu demi satu. Solusinya saya menemukan script yang mengenerate script untuk melakukan pengaktifan kompresi pada semua tabel dan pada semua index.

Untuk Semua Tabel :

SELECT 'ALTER TABLE ' + '[' + s.[name] + ']'+'.' + '[' + o.[name] + ']' + ' REBUILD WITH (DATA_COMPRESSION=PAGE);'
FROM sys.objects AS o WITH (NOLOCK)
INNER JOIN sys.indexes AS i WITH (NOLOCK)
ON o.[object_id] = i.[object_id]
INNER JOIN sys.schemas AS s WITH (NOLOCK)
ON o.[schema_id] = s.[schema_id]
INNER JOIN sys.dm_db_partition_stats AS ps WITH (NOLOCK)
ON i.[object_id] = ps.[object_id]
AND ps.[index_id] = i.[index_id]
WHERE o.[type] = 'U'
ORDER BY ps.[reserved_page_count]

Untuk Semua Index :

SELECT 'ALTER INDEX '+ '[' + i.[name] + ']' + ' ON ' + '[' + s.[name] + ']' + '.' + '[' + o.[name] + ']' + ' REBUILD WITH (DATA_COMPRESSION=PAGE);'
FROM sys.objects AS o WITH (NOLOCK)
INNER JOIN sys.indexes AS i WITH (NOLOCK)
ON o.[object_id] = i.[object_id]
INNER JOIN sys.schemas s WITH (NOLOCK)
ON o.[schema_id] = s.[schema_id]
INNER JOIN sys.dm_db_partition_stats AS ps WITH (NOLOCK)
ON i.[object_id] = ps.[object_id]
AND ps.[index_id] = i.[index_id]
WHERE o.type = 'U' AND i.[index_id] >0
ORDER BY ps.[reserved_page_count]

 

kedua script tersebut, tinggal dijalankan pada SQLServer Management Studio kesayangan anda, dan voilla! script yang didambakan akan muncul 😀

ok, semoga bermanfaat

Leave a Reply

Your email address will not be published. Required fields are marked *