微軟SQL Server 2008 的新壓縮特性_Mssql數(shù)據(jù)庫教程
推薦:3個(gè)步驟結(jié)束網(wǎng)站惡夢(mèng)-SQL注入隱患!許多網(wǎng)站程序在編寫時(shí),沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱患。 SQL注入是什么? 許多網(wǎng)站程序在編寫時(shí),沒有對(duì)用戶輸入數(shù)據(jù)的合法性進(jìn)行判斷,使應(yīng)用程序存在安全隱
關(guān)于SQL Server壓縮的故事,最早是從SQL Server 2005開始的,在企業(yè)版和開發(fā)版中增加了一種叫做vardecimal的新存儲(chǔ)格式,這個(gè)表級(jí)的選項(xiàng)會(huì)影響到decimal和numeric字段。當(dāng)對(duì)值的精度要求低于字段可用精度,如在一個(gè)decimal(18,9)類型的字段中存儲(chǔ)1.5這個(gè)數(shù)值時(shí),存儲(chǔ)上就需要有相應(yīng)的壓縮。從效果上來看,它就是一個(gè)varchar類型的數(shù)字型版本。
SQL Server 2008所包含的已遠(yuǎn)不止這些小技巧:
無論從哪方面來看,SQL Server 2008的數(shù)據(jù)壓縮都與現(xiàn)在有著巨大的差異(盡管它依然支持或者說包括vardecimal類型)——引起這種差異的真像是,如果你對(duì)一個(gè)給定的table/index啟用壓縮功能,那么底層的row/page格式將不再相同——是的,就是這樣,你聽得沒錯(cuò)——如果你使用壓縮(ROW或者PAGE),那么SQL 2008的row/page格式將不同于現(xiàn)有的格式(如果你只是在table/index上使用壓縮的話)。因此,在SQL 2008中,有兩種,沒錯(cuò),是兩種可選row/page數(shù)據(jù)格式。你現(xiàn)在可能會(huì)想知道“那么,如果row/page格式改變了,那你們究竟是如何在這么短的時(shí)間內(nèi),依然有足夠的時(shí)間去重新生成SQL Server所有需要識(shí)別這些格式的組件的呢?”答案就是我們不需要那樣做——因?yàn)镾torage Engine是SQL 2008中唯一一個(gè)需要知道新的row/page格式的組件。
行級(jí)壓縮將大幅減少元數(shù)據(jù)所需的變量長度,較以前每個(gè)字段需要花費(fèi)2個(gè)字節(jié)來存儲(chǔ),現(xiàn)在只要僅僅3個(gè)位。字段本身現(xiàn)在也變得更小,在整型字段中存儲(chǔ)像1這樣的數(shù)值,只需要一個(gè)字節(jié),而大數(shù)值則最多只需要4個(gè)字節(jié)。
行級(jí)壓縮則允許在行間共享共有數(shù)據(jù)。這兩種技術(shù)就是列前綴和頁字典:
假設(shè)你在一頁的數(shù)據(jù)行中有一列數(shù)據(jù)有這些值:‘Chad’、‘Chadwick’、‘Chadly’、‘Chad’、‘Chadster’、‘Chadwick’和‘Chadly’(故意重復(fù)的數(shù)值)——正如你所見,有相當(dāng)多的冗余‘前綴’數(shù)據(jù)在這一頁的同一列的不同行中,是吧?因此,你最終可能會(huì)想到這樣的一個(gè)場(chǎng)景:將列的前綴‘Chad’存儲(chǔ)在CI結(jié)構(gòu)中,每一個(gè)列的最后都指向這個(gè)前綴值,最后出現(xiàn)在磁盤上的值會(huì)像這樣:‘’,‘1wick’,‘1ly’,‘1ster’,‘1wick’和‘1ly’。
所以,對(duì)于上述例子中的含有Chad的同列數(shù)值,在經(jīng)過對(duì)“列前綴”值進(jìn)行計(jì)算和存儲(chǔ)后,你可能得到一個(gè)會(huì)含有如‘1ly’和‘1wick’這些值的頁字典,而真正行內(nèi)數(shù)值則極有可能看上去像這樣:‘’、‘2’、‘3’、‘’、‘1ster’、‘3’和‘2’。通過這種方式,我們讓原本需要大約25個(gè)字節(jié)來存儲(chǔ)的行數(shù)據(jù),減少到只要大約17個(gè)字節(jié)來存儲(chǔ),節(jié)省30%以上。
每一個(gè)頁都是單獨(dú)壓縮的,前綴和字典也存儲(chǔ)在頁內(nèi)。由于頁是存儲(chǔ)分配的原子單位,將半頁壓縮到四分之一頁是沒有任何意義的,所以,只有在頁的內(nèi)容快滿的時(shí)候才會(huì)開始?jí)嚎s處理。在使用行和頁壓縮時(shí)還有一個(gè)性能權(quán)衡問題,因?yàn)镃PU使用率會(huì)上升,但I(xiàn)/O使用率和內(nèi)存占用會(huì)下降。
Backup Compression是2008的另一個(gè)特性,它是通過普通的文件系統(tǒng)型壓縮技術(shù)實(shí)現(xiàn)的,對(duì)于給定的數(shù)據(jù)庫,只有啟用或者禁用,沒有其它可調(diào)節(jié)選項(xiàng)。盡管非企業(yè)版服務(wù)器可以恢復(fù)帶壓縮的備份,但這所有的壓縮選項(xiàng)極有可能成為企業(yè)版專享選項(xiàng)。
分享:精通數(shù)據(jù)庫系列之入門——基礎(chǔ)篇1是一個(gè)實(shí)際可運(yùn)行的存儲(chǔ)、維護(hù)和應(yīng)用系統(tǒng)提供數(shù)據(jù)的軟件系統(tǒng),是存儲(chǔ)介質(zhì)、處理對(duì)象和管理系統(tǒng)的集合體。它通常由軟件、數(shù)據(jù)庫和數(shù)據(jù)管理員組成。其軟件主要包括操作系統(tǒng)、各種宿主語言,實(shí)用程
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 談值得收藏的SQL時(shí)間函數(shù)
- SQL Server記錄輪班的技巧
- 多種還原.bak數(shù)據(jù)庫文件方式
- sql動(dòng)態(tài)行轉(zhuǎn)列的兩種方法
- SQL Server 2008 安裝和配置圖解教程(附官方下載地址)
- sql2005 數(shù)據(jù)庫轉(zhuǎn)為sql2000數(shù)據(jù)庫的方法(數(shù)據(jù)導(dǎo)出導(dǎo)入)
- SQL Server 索引基礎(chǔ)知識(shí)(1)--- 記錄數(shù)據(jù)的基本格式
- 關(guān)于SQL 存儲(chǔ)過程入門基礎(chǔ)(基礎(chǔ)知識(shí))
- 揭秘操作日期的SQL語句大全
- SQLServer 2008中的代碼安全(五) 非對(duì)稱密鑰加密
猜你也喜歡看這些
- MYSQL索引建立需要注意以下幾點(diǎn)細(xì)節(jié)
- MySQL筆記之?dāng)?shù)據(jù)類型詳解
- mysql錯(cuò)誤及解決全攻略
- JDBC數(shù)據(jù)庫的使用操作總結(jié)
- mysql 超大數(shù)據(jù)/表管理技巧
- Mysql的主從數(shù)據(jù)庫沒有同步的解決辦法
- MySQL筆記之修改表的實(shí)現(xiàn)方法
- MySQL 替換某字段內(nèi)部分內(nèi)容的UPDATE語句
- 解決MYSQL出現(xiàn)Can''t create/write to file ''#sql_5c0_0.MYD''的問題
- PHP mysqli 增強(qiáng) 批量執(zhí)行sql 語句的實(shí)現(xiàn)代碼
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-微軟SQL Server 2008 的新壓縮特性
。