Saturday, 15 February 2014

Adding compression to a table at row or page level

It is possible to add compression to a table at row or page level. At row level, any row values that can be stored in a smaller data type, will be. At page level, row level compression is used, and any duplicate data is rolled up within the page, creating more space in each page. The gain in disk space (and therefore fewer reads / writes) is to the detriment of CPU utilisation when reading / writing the data. You can check how much space you can save by using row or page compression by using the following stored procedure:
EXEC sp_estimate_data_compression_savings [Schema], [TableName], NULL, NULL, 'ROW'
You can then add the desired compression type to a table as follows:
ALTER TABLE [TableName]
REBUILD WITH (DATA_COMPRESSION = PAGE)

Updating massive amount of rows whilst avoiding blocking

The following SQL is a good means to split an update on a massive table into smaller chunks, whilst reducing blocking. The method is to upda...