SQL Server資料庫最佳化實戰(三),sqlserver

來源:互聯網
上載者:User

SQL Server資料庫最佳化實戰(三),sqlserver

前言:

本章主要來介紹一下收縮日誌和表的壓縮。


收縮記錄檔

--利用

exec sp_spaceused

語句查看資料庫大小

--右鍵資料庫屬性

--查看選項

--將復原模式設定成簡單



--右鍵資料庫-任務-收縮-檔案



--檔案類型選擇日誌



--查看收縮後資料庫大小



--右鍵資料庫屬性-選項

--將復原模式設定成完整

--注意:此時需要進行一次資料庫完整備份


表壓縮

--SQL Server 2005及以上版本支援表分區

表分區具體操作詳見以下網址:

http://blog.csdn.net/yole_grise/article/details/18658949


-- SQL Server 2008及以上版本支援表壓縮

(標準版不可以進行表壓縮)

--對於我們的主流客戶來說,隨著時間的積累、經營規模的擴大,總部資料庫越來越大,產生很多負面影響。

例如,一個100家門店的連鎖公司,三年下來資料庫可能會達到100G至200G。

由於資料庫增大導致的主要影響如下:

1、 導致磁碟儲存成本增高;200G的資料庫加上備份需要,至少得1T磁碟才勉強夠用。

2、 資料庫效能下降。

3、 資料庫出故障的潛在風險增加。(雖然沒有直接的證據,但簡單的推理就可得出該結論)

4、 備份一次資料庫的時間太長。備份檔案的複製和還原比較麻煩。

像現在我們有很多客戶資料庫都在100G以上了。在這種背景下,“表壓縮”閃亮登場。


操作方法:

--右鍵表-儲存-管理壓縮


--壓縮前表大小:

--查看一下表大小:

--表大小由81344KB壓縮到21328KB。

壓縮後的表大小一般會是原來表大小的1/4左右

--索引壓縮也是同樣的道理

--右鍵索引-儲存-管理壓縮

現在我們對於資料庫應用的瓶頸,主要還是在磁碟IO上面。也就是讀寫磁碟的效率。

而通過表壓縮,恰好能減輕磁碟的負擔,所以通過實際應用來看,表壓縮的效果非常明顯。

當資料庫超過100G時,通過壓縮最大的幾個表(和索引),可以將資料庫減至30G左右,

速度明顯提升,管理起來也更方便。

但另一方面,壓縮也有負作用。

壓縮會增加CPU的開銷,因為要不斷地進行壓縮演算法和解壓演算法。


問題來了:

什麼樣的表需要進行壓縮?

--查看錶大小IF OBJECT_ID('tempdb..#TB_TEMP_SPACE') IS NOT NULL DROP TABLE #TB_TEMP_SPACEGOCREATE TABLE #TB_TEMP_SPACE(NAME VARCHAR(500),ROWS INT,RESERVED VARCHAR(50),DATA VARCHAR(50),INDEX_SIZE VARCHAR(50),UNUSED VARCHAR(50))GOSP_MSFOREACHTABLE 'INSERT INTO #TB_TEMP_SPACE exec sp_spaceused ''?'''GOSELECT *,'ALTER TABLE [dbo].['+NAME+'] REBUILD PARTITION = ALLWITH (DATA_COMPRESSION = PAGE)' as sqlFROM #TB_TEMP_SPACEORDER BY REPLACE(DATA,'KB','')+0 DESC

答案:

1、查詢頻率小的。

2、佔用空間大的

這樣的表需要進行表壓縮。

典型代表表:u_sale_c

一般來說,表大於1G或索引大於1G的,都是需要壓縮的。

註:叢集索引是不需要進行壓縮的。因為叢集索引本身是不佔用空間的。


壓縮和收縮的區別:

壓縮,是指通過演算法和規則,減少資料庫的資料大小。

而收縮,是指將資料庫的可用空間釋放出來,變成作業系統的可用空間。

例子:

一個資料庫有100G,我們進行表壓縮,壓縮後只有40G了;但此時mdf檔案仍然是100G。

執行sp_spaceused會發現, unallocated space中有60G,這個就是未配置的空間。

所以,我們必須通過收縮資料庫,才能將這60G空間釋放掉。

SO,表壓縮操作與收縮資料庫是緊密相連的兩個操作;只有這樣才能達到我們預期的效果。

---------------------------華麗的分割線-----------------------------------

本章結束






相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.