国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL Server 2008中數據壓縮

2024-08-31 00:55:56
字體:
來源:轉載
供稿:網友
SQL Server 2008中數據壓縮

SQL Server 2008中引入了數據壓縮的功能,允許在表、索引和分區中執行數據壓縮。這樣不僅可以大大節省磁盤的占用空間,還允許將更多數據頁裝入內存中,從而降低磁盤IO,提升查詢的性能。當然,凡事有利有弊,在啟用數據壓縮后,數據庫服務器就需要額外的CPU資源來進行壓縮處理。一般說來,數據庫服務器的CPU占用率不會太高,而磁盤IO容易成為瓶頸,所以在大多數情況下對大數據庫特別是數據倉庫啟用該項功能還是利大于弊。

AD:2013云計算架構師峰會課程資料下

SQL Server 2008的數據壓縮分為行壓縮和頁壓縮兩種。行壓縮主要是通過將固定長度類型存儲為可變長度類型來實現,同時還減少了與記錄相關聯的元數據開銷。頁壓縮在行壓縮的基礎上又增加了前綴壓縮和字典壓縮,能獲得更大的壓縮率。

要啟用數據庫壓縮只需在建表語句后加入WITH (DATA_COMPRESSION = ROW)或是WITH (DATA_COMPRESSION = PAGE)即可。如需將現有的索引修改為啟用壓縮,可通過ALTER INDEX index ON Table REBUILD WITH (DATA_C0MPRESSION=ROW)或ALTER INDEX index ON Table REBUILD WITH (DATA_C0MPRESSION=PAGE)實現。

最后提供一段簡單的用以判斷是否需要壓縮數據表的腳本,并自動生成壓縮腳本供系統管理員執行。這里用到未公開的存儲過程sp_MSforeachtable。在這段腳本中@precommand參數用于執行command指令執行前的SQL命令,建立一張臨時表用于保存數據表的信息,@command1參數表示需要執行的SQL命令,對每一張表都利用sp_spaceused存儲過程獲取表的磁盤占用信息并保存到建立的臨時表中,@postcommand參數用于執行command指令后的SQL命令,將之前建立的臨時表與系統關聯,根據設置的條件(數據表占用空間大于10G)生成數據表壓縮腳本。

  1. execsp_MSforeachtable
  2. @precommand=N'
  3. createtable##(
  4. idintidentity,
  5. namesysname,
  6. rowsint,
  7. reservedNvarchar(50),
  8. datavarchar(50),
  9. indexdatavarchar(50),
  10. unusedvarchar(50))',
  11. @command1=N'insertinto##(name,rows,reserved,data,indexdata,unused)execsp_spaceused''?''
  12. update##setdata=SUBSTRING(data,1,LEN(data)-2)whereid=scope_identity()ANDLEN(data)>=2',
  13. @postcommand=N'SELECT''ALTERTABLE''+TABLENAME+''REBUILDWITH(DATA_COMPRESSION=PAGE)''FROMsys.tablesA
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 神农架林区| 新邵县| 遂平县| 龙江县| 勐海县| 威信县| 东方市| 许昌县| 辽源市| 齐齐哈尔市| 施秉县| 兴国县| 兴和县| 苍溪县| 肃北| 扎赉特旗| 庆安县| 铜山县| 平潭县| 长丰县| 陵川县| 台南县| 错那县| 合肥市| 溆浦县| 敖汉旗| 巨野县| 尖扎县| 常州市| 北宁市| 横峰县| 巫溪县| 洛浦县| 湄潭县| 汽车| 昌都县| 云安县| 进贤县| 泰顺县| 南宁市| 金乡县|