Sql-Server

SQL Server 2019 UTF-8 支持優勢

  • January 30, 2020

我已經很習慣在我們公司的內部論壇軟體中使用 COMPRESS()和使用DECOMPRESS()(目前在 SQL Server 2017 中),但是試圖使數據庫盡可能高效,在將來添加_UTF-8到我目前的排序規則中是否有優勢Latin1_General_100_CI_AS_SC_UTF8遷移到 SQL Server 2019?

以下是從 此處獲取的推薦用途列表

UTF-8 編碼是一種可變長度編碼,在某些情況下可能會帶來巨大的好處,但在其他情況下也會使事情變得更糟。不幸的是,鑑於數據壓縮和聚集列儲存索引在 SQL Server 的所有版本中都可用,“_UTF8”編碼幾乎沒有用處。真正受益於 UTF-8 編碼的唯一場景是滿足以下所有條件的場景:

  1. 數據大多是標準 ASCII(值 0 - 127),但要麼有,要麼可能有,少量不同範圍的 Unicode 字元(比在單個 8 位程式碼頁上找到的要多,或者可能不存在於任何 8 位程式碼頁)。
  2. 列目前(或將是)NVARCHAR(MAX)(意思是,數據不適合 NVARCHAR(4000))。
  3. 此列或一組列有大量數據(儲存在 NVARCHAR 中時為 1 GB 或更多)。
  4. 將表設置為聚集列儲存表(由於表的使用方式)或數據通常 < 8000 字節,會對性能產生負面影響操作,並使用 DECOMPRESS() 進行 SELECT 查詢(無需擔心缺乏索引 VARBINARY 值的能力,因為它是無法索引的 MAX 數據)。請記住,Gzipped 值甚至比字元串的 UTF-8 版本要小得多,儘管它需要解壓縮才能過濾(在“=”之外)或操作該值。
  5. 減少備份大小和減少備份和恢復所需時間以及減少對緩衝池的影響的好處超過了對查詢性能(CPU 和執行時間)可能產生的負面影響的成本。請記住,備份壓縮(在企業版和標準版中提供)可能會有所幫助。

儲存 HTML 頁面是符合此描述的場景的一個很好的範例。當然,UTF-8 是網際網路的首選編碼,正是因為它為最常見的字元使用了最小的空間,同時仍然允許所有的 Unicode 字元。

引用自:https://dba.stackexchange.com/questions/221531