SQL Server’da Tüm Tablolar için Veri Sıkıştırma Prosedürü
Herkese merhaba,
Bu yazıda SQL Server’da tüm tablolar için veri sıkıştırma prosedürü hakkında bilgi vereceğim.
İki tür veri sıkıştırma türü vardır.
Satır Düzeyinde Veri Sıkıştırma : Sabit uzunluktaki veri türlerini değişken uzunluktaki veri türlerine dönüştüren ve boş alanı boşaltan bir sıkıştırma yöntemidir. Ayrıca sıfır ve boş değerleri yok sayarak ek alan tasarrufu sağlar. Buna karşılık, tek bir veri sayfasına daha fazla satır sığdırabilir.
Sayfa Düzeyinde Veri Sıkıştırma : Satır düzeyinde veri sıkıştırma ile başlayan ve ardından veri sayfaları için bir önek ve bir sözlük sıkıştırması ekleyen bir sıkıştırma yöntemidir.
Aşağıdaki prosedür, ROW veya PAGE parametreden birini bekler. Hangi sıkıştırma türünü kullanmak istiyorsanız o parametreyi prosedüre yazarak çalıştırabilirsiniz.
CREATE PROCEDURE TumTablolaricinVeriSikistirmaProseduru
(@sikistirma_metodu CHAR(4))
AS
SET NOCOUNT ON;
BEGIN
DECLARE @schema_name sysname,
@table_name sysname;
CREATE TABLE #compress_report_tb
(
ObjName sysname,
schemaName sysname,
indx_ID INT,
partit_number INT,
size_with_current_compression_setting BIGINT,
size_with_requested_compression_setting BIGINT,
sample_size_with_current_compression_setting BIGINT,
sample_size_with_requested_compression_setting BIGINT
);
DECLARE c_sch_tb_crs CURSOR FOR
SELECT TABLE_SCHEMA,
TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE LIKE 'BASE%'
AND TABLE_CATALOG = UPPER(DB_NAME());
OPEN c_sch_tb_crs;
FETCH NEXT FROM c_sch_tb_crs
INTO @schema_name,
@table_name;
WHILE @@Fetch_Status = 0
BEGIN
INSERT INTO #compress_report_tb
EXEC sp_estimate_data_compression_savings @schema_name = @schema_name,
@object_name = @table_name,
@index_id = NULL,
@partition_number = NULL,
@data_compression = @sikistirma_metodu;
FETCH NEXT FROM c_sch_tb_crs
INTO @schema_name,
@table_name;
END;
CLOSE c_sch_tb_crs;
DEALLOCATE c_sch_tb_crs;
SELECT schemaName AS [schema_name],
ObjName AS [table_name],
AVG(size_with_current_compression_setting) AS avg_size_with_current_compression_setting,
AVG(size_with_requested_compression_setting) AS avg_size_with_requested_compression_setting,
AVG(size_with_current_compression_setting - size_with_requested_compression_setting) AS avg_size_saving
FROM #compress_report_tb
GROUP BY schemaName,
ObjName
ORDER BY schemaName ASC,
avg_size_saving DESC;
DROP TABLE #compress_report_tb;
END;
SET NOCOUNT OFF;
--Kullanımı
--İlgili veritabanını seçtikten sonra çalıştırın. Aksi durumda sorumluluk size aittir.
EXEC TumTablolaricinVeriSikistirmaProseduru @sikistirma_metodu = 'PAGE';
GO
Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.