SQL Server資料庫中char, varchar, nvarchar的差異

來源:互聯網
上載者:User
1. char     固定長度,最長n個字元。
2. varchar     最大長度為n的可變字串。(n為某一整數,不同資料庫,最大長度n不同)
char和varchar區別:     varchar必char節省空間的,但在效率上比char稍微差一些。     說varchar比char節省空間的,是因為varchar是可變字串,比如:用varchar(5)儲存字串“abc”,只佔用3個位元組的儲存空間,而用char(5)儲存,則佔用5個位元組(“abc  ”)。     說varchar比char效率稍差,是因為,當修改varchar資料時,可能因為資料長度不同,導致資料移轉(即:多餘I/O)。其中,oracle對此多餘I/O描述的表達是:“行遷移”(Row Migration)。
“行遷移”(Row Migration):       “當一行的記錄初始插入時是可以儲存在一個block中的,由於更新操作導致行增加了,而block的自由空間已經完全滿了,這個時候就產生了行遷移。在這種情況下,oracle將會把整行資料移轉到一個新的block中,oracle會保留被遷移的行的原始指標指向新的存允許存取資料的block,這就意味著被遷移行的ROW ID是不會改變的。"     其中要解釋一下:block是oracle中最小的資料群組織與管理單位,是資料檔案磁碟儲存空間單位,也是 資料庫I/O最小單位( 也就是說,讀和寫都是一個block打大小,所以如果block沒滿時,更新內容長度變更的varchar欄位,和更新內容長度沒變的varchar欄位,I/O次數是一樣,不存在額外消耗,只有在block滿時,才會出現額外I/O,所以char和varchar效能之間的效能差異,是相當細微的,絕大多數情況下可以忽略不計,所以上文描述的“稍”差的含義)。     所以,一般的開發經驗是(個人認為):“如果該欄位不是固定字元的儲存, 用varchar完全代替char吧,沒什麼好顧慮的”。
3. nvarchar     nvarchar的特性,需要和varchar對比。     nvarchar和varchar的不同主要是在對於資料的儲存方式上:     1). varchar: 按位元組儲存資料          varchar(6),最多能儲存6個位元組的資料,比如:“哈哈哈”,“abcdef”...... 備忘:一個中文字元在資料庫裡佔多少個位元組,要看unicode的編碼方式,比如:utf8在mysql上佔3個位元組,sqlserver的Chinese_PRC_CI_AS佔2個位元組...     2). nvarchar: 按字元儲存資料          nvarchar(6),最多能儲存6個字元/中文資料,比如:"哈哈哈哈哈哈",“abcdef”......          nvarchar(m)最大儲存的實際位元組長度=n*m(n跟據編碼方式而定),如果nvarchar儲存的是英文字元,也是根據編碼方式儲存n的位元組長度。也就是說,如果 nvarchar儲存英文字元,會浪費一半以上的儲存空間....           總結:     1. char和varchar的效能差距是很小的,可以考慮忽略不計。      2. 在大資料量應用中,使用char和nvarchar有可能導致大量的儲存空間的浪費。

 

參考部落格:http://www.cnblogs.com/hyddd/  參考文章:《Row Chaining and Row Migration》《SQLSERVER char與varchar的效能測試》      
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.