sql server 2014
sql server 2014
SQL Server系列軟體是Microsoft 公司推出的關係型資料庫管理系統。2014年4月16日於舊金山召開的一場發布會上,微軟CEO薩蒂亞·納德拉宣布正式推出“SQL Server 2014”。
SQL Server 2014版本提供了企業駕馭海量資料的關鍵技術in-memory增強技術,內建的In-Memory技術能夠整合雲端各種資料結構,其快速運算效能及高度資料壓縮技術,可以幫助客戶加速業務和向全新的應用環境進行切換。
同時提供與Microsoft Office連結的分析工具,通過與Excel和Power BI for Office 365的集成,SQL Server 2014提供讓業務人員可以自主將資料進行即時的決策分析的商業智能功能,輕鬆幫助企業員工運用熟悉的工具,把周遭的資訊轉換成環境智慧,將資源發揮更大的營運價值,進而提升企業產能和靈活度。
此外,SQL Server 2014還啟用了全新的混合雲解決方案,可以充分獲得來自雲計算的種種益處,比如雲備份和災難恢復。
SQL Server 作為世界上部署最廣泛的資料庫管理軟體,承襲「Cloud-First」的精神,SQL Server 2014藉由突破性的效能與內建In-Memory技術,帶來實時的性能改進,能夠大幅提升資料處理與運算10倍的速度,該技術能夠飛速處理數以百萬條的記錄,甚至通過SQL Server分析服務,輕鬆擴展至數以幾十億計的分析能力。有效幫助客戶分析更龐大與多樣的結構與非結構資料,進而投入商務創新研發,更進一步幫助企業建構出環境智慧平台,幫助企業每一位員工都獲得自主分析的能力,創造出企業的資料文化。
2014版本最重要的特色是新增了線上交易(OLTP)數據處理引擎Hekaton(在希臘文里,是一百倍的意思),其內存最佳化數據表與索引功能可將數據表存儲到內存來處理,而不是硬碟,在新的架構中SQLServer的應用處理效能平均可以提升10倍。據微軟解釋,它能夠提升高達30倍的速度。微軟項目主管經理Kevin Liu在最近的一次SQL Server 2014研討會上向記者作出說明:這個項目已經研發了五年了。
從SQL 2008到SQL 2014,中間還跨越了SQL Server 2008 R2,SQL Server 2012兩個版本,這中間的改變自然遠不止內存資料庫引擎這一項功能,其實還有很多,比如說從大的方面,改善了Windows Azure的集成和面向高性能數據倉庫應用的全新索引技術。支持快速查詢和高壓縮比的列存儲索引技術,支持高可用性並實現讀寫分離的AlwaysOn技術,提供數據清理功能的數據質量服務,提供企業信息管理功能的主數據管理服務。最大的變化還包括SQL Server 2014極大的增強了對雲的支持,幫助用戶輕鬆實現混合雲方式的數據備份、災難恢復以及應用擴展。此外,SQL 2014相比於SQL 2008,在安全性、管理性、T-SQL增強、SSIS集成服務,SSAS分析服務以及SSRS報表服務方面均有很大的增強。
這套Hekaton資料庫引擎不僅能夠直接訪問內存當中的數據、具備出色的併發水平,而且能夠對執行流程進行編譯與存儲、以備日後的進一步優化。該引擎還會將一套數據副本不斷傳輸至磁碟當中,如果不在乎數據丟失的話、也可以將其禁用以最大限度提升性能表現。
性能上的好處也很實在。在Azure(四核心,7GB內存)上運行一套負載極低的虛擬機,切換至內存內表之後處理10萬次事務型操作的時間也由原先的2分54秒縮減到的36秒。
另一個好處在集成方面。你可以將內存內與基於磁碟的表引入同一套資料庫當中——不過請注意,同時針對這兩類表進行查詢時效率會受到嚴重影響。
微軟還在新的Azure的集成方面做了功課。已經有了幾個可行方案。大家可以直接啟動保存在Azure當中的資料庫文件;雖然SQL Server能夠以緩存形式保留大量活動數據,但由此帶來的延遲在很多情況下仍會使實際效果變得比較糟——從另一個角度看,將其用於歸檔倒是個很好的選擇。
目前應用範圍比較廣泛的功能之一就是利用Azure存儲機制進行備份,而且該功能在新版本中已經以內置姿態出現。在Management Studio當中,大家可以選擇URL作為備份目標,系統會自動提示要求Azure證書。另一項名為Managed Backup的新工具則更適合規模較小的企業,允許他們以自動化方式將資料庫備份保存在Azure當中。大家只需要配置相關證書以及數據保留期限即可。
另一項Azure集成化功能是將SQL Server資料庫的副本運行在Azure虛擬機之上。此外,大家還可以利用Add Azure Replica嚮導設置保證其隨時可用。
局限性也是有的。最嚴重的是內存內表有一長串不支持的T-SQL關鍵字,這之中包括IDENTITY、UNIQUE、OUTER JOIN、IN、LIKE、DISTINCT和其他的常用命令,觸發器和BLOB欄位。雖然官方建議用戶採取變通方案,但要想充分發揮其潛在能力、移動工作恐怕在所難免。
SQL Server 2014發行的第一個版本,其還存在一些局限性。微軟官方建議的內存數據不要超過256GB。這一點我們將在未來的版本中進行大幅增強。
另一大局限在於,“建議使用雙插槽硬體”以避免由NUMA(即非統一內存訪問)導致的問題影響性能表現。
目前最適合借用內存內資料庫強大實力的業務邏輯要數交互元素較少的存儲流程以及客戶端-伺服器通信。利用外部代碼實現業務邏輯的應用程序則無法發揮其全部潛能。
聚合列存儲索引效果拔群,但卻只能在一小部分應用程序當中正常起效。
1.內存優化表
內存中OLTP 是一種內存優化的資料庫引擎,它集成到 SQL Server 引擎中。內存中 OLTP 已針對 OLTP 進行優化。對於內存中 OLTP 支持的 Transact-SQL 外圍應用存在很多限制。
2.Windows Azure 中的 SQL Server 數據文件
Windows Azure 中的 SQL Server 數據文件提供對作為 Windows Azure Blob 存儲的 SQL Server 資料庫文件的本機支持。通過此功能,可以在本地或 Windows Azure 中虛擬機上運行的 SQL Server 中創建資料庫,而將數據存儲在 Windows Azure Blob 存儲中的專用存儲位置。
3.將 SQL Server 資料庫託管在 Windows Azure 虛擬機中
使用將 SQL Server 資料庫部署到 Windows Azure 虛擬機嚮導,可將資料庫從 SQL Server 實例託管到 Windows Azure 虛擬機中。
4.備份和還原增強功能
SQL Server 2014 包含針對 SQL Server 備份和還原的以下增強功能:
1) SQL Server 備份到 URL
SQL Server 備份到 URL 功能是在 SQL Server 2012 SP1 CU2 中引入的,只有 Transact-SQL、PowerShell 和 SMO 支持這一功能。
在 SQL Server 2014 中,可以使用 SQL Server Management Studio 來備份到 Windows Azure Blob 存儲服務或從中還原。“備份”任務和維護計劃都可使用該新選項。
2) SQL Server 託管備份到 Windows Azure
SQL Server 託管備份到 Windows Azure 是基於 SQL Server 備份到 URL 這一功能構建的服務,SQL Server 提供這種服務來管理和安排資料庫和日誌的備份。在SQL SERVER 2014中,只支持備份到 Windows Azure 存儲。 SQL Server 託管備份到 Windows Azure可在資料庫和實例級別同時進行配置,從而既能實現在資料庫級別的精細控制,又能實現實例級別的自動化。 SQL Server 託管備份到 Windows Azure既可在本地運行的 SQL Server 實例上配置,也可在 Windows Azure 虛擬機上運行的 SQL Server 實例上配置。建議對在 Windows Azure 虛擬機上運行的 SQL Server 實例使用此服務。
3) 備份加密
可以選擇在備份過程中對備份文件進行加密。目前支持的加密演演算法包括 AES 128、AES 192、AES 256 和 Triple DES。要在備份過程中執行加密,必須使用證書或非對稱密鑰。
5.針對基數估計的新設計
稱作基數估計器的基數估計邏輯已在 SQL Server 2014 中重新設計,以便改進查詢計劃的質量,並因此改進查詢性能。新的基數估計器納入在新型 OLTP 和數據倉庫工作負荷中表現優異的假設和演演算法。
6.延遲持續性
SQL Server 2014 將部分或所有事務指定為延遲持久事務,從而能夠縮短延遲。延遲持久事務在事務日誌記錄寫入磁碟之前將控制權歸還給客戶端。持續性可在資料庫級別、提交級別或原子塊級別進行控制。
7.AlwaysOn 增強功能
SQL Server 2014 包含針對 AlwaysOn 故障轉移群集實例和 AlwaysOn 可用性組的以下增強功能:
1) “添加 Azure 副本嚮導”簡化了用於 AlwaysOn 可用性組的混合解決方案創建。
2) 輔助副本的最大數目從 4 增加到 8。
3) 斷開與主副本的連接時,或者在缺少群集仲裁期間,可讀輔助副本現在保持可用於讀取工作負荷。
4) 故障轉移群集實例 (FCI) 現在可使用群集共享卷 (CSV) 作為群集共享磁碟。
5) 提供了一個新的系統函數 sys.fn_hadr_is_primary_replica 和一個新的 DMV sys.dm_io_cluster_valid_path_names。
6) 以下 DMV 已得到增強,現在返回 FCI 信息:sys.dm_hadr_cluster、sys.dm_hadr_cluster_members 和 sys.dm_hadr_cluster_networks。
8.分區切換和索引生成
SQL SERVER 2014可以重新生成已分區表的單獨分區。
9.管理聯機操作的鎖優先順序
ONLINE = ON 選項現在包含 WAIT_AT_LOW_PRIORITY 選項,該選項允許您指定重新生成過程對於所需鎖應等待多長時間。 WAIT_AT_LOW_PRIORITY 選項還允許您配置與該重新生成語句相關的阻止過程的終止。在 sys.dm_tran_locks (Transact-SQL) 和 sys.dm_os_wait_stats (Transact-SQL) 中提供了與新的鎖狀態類型有關的故障排除信息。
10.列存儲索引
這些新功能可供列存儲索引使用:
1) 聚集列存儲索引
使用聚集列存儲索引可提高主要執行大容量載入和只讀查詢的數據倉庫工作負荷的數據壓縮和查詢性能。由於聚集列存儲索引是可更新的,因此工作負荷可執行許多插入、更新和刪除操作。
2) SHOWPLAN
SHOWPLAN 顯示有關列存儲索引的信息。 EstimatedExecutionMode 和 ActualExecutionMode 屬性具有兩個可能值:Batch 或 Row。 Storage 屬性具有兩個可能值:RowStore 和 ColumnStore。
3) 存檔的數據壓縮
ALTER INDEX … REBUILD 提供新的 COLUMNSTORE_ARCHIVE 數據壓縮選項,可進一步壓縮列存儲索引的指定分區。這可用於存檔,或者用於要求更小數據存儲大小並且可以付出更多時間來進行存儲和檢索的其他情形。
11.緩衝池擴展
緩衝池擴展提供了固態硬碟 (SSD) 的無縫集成以作為資料庫引擎緩衝池的非易失性隨機存取內存 (NvRAM) 擴展,從而顯著提高 I/O 吞吐量。話說固態硬碟的價格真心有點貴。
12.增量統計信息
CREATE STATISTICS 和相關統計信息語句現在允許通過使用 INCREMENTAL 選項創建按分區的統計信息。
13.物理 IO 控制的資源調控器增強功能
通過資源調控器,您可以指定針對傳入應用程序請求可在資源池內使用的 CPU、物理 IO 和內存的使用量的限制。在 SQL Server 2014 中,您可以使用新的 MIN_IOPS_PER_VOLUME 和 MAX_IOPS_PER_VOLUME 設置控制某一給定資源池向用戶線程發出的物理 IO 數。有關詳細信息,請參閱資源調控器資源池和CREATE RESOURCE POOL (Transact-SQL)。
ALTER RESOURCE GOVENOR 的 MAX_OUTSTANDING_IO_PER_VOLUME 設置可設置每個磁碟卷的最大待定 I/O 操作數 (IOPS)。可以使用此設置根據某一磁碟卷的 IO 特性調整 IO 資源控制,並且可用於在 SQL Server 實例邊界限制發出的 IO 數目。
14.Online Index Operation 事件類
針對聯機索引操作事件類的進度報告現在具有兩個新數據列:PartitionId 和 PartitionNumber。
15.資料庫兼容性級別
90 兼容性級別在 SQL Server 2014 中無效。
標準版本的內存容量限制由過去的64GB提高到了128GB。處理器方面不變,仍然不能超過四個CPU插槽或者十六運算核心。企業版本則取消了上述限制。免費的精簡版只支持最高1GB內存、單一插槽或者四計算核心,資料庫規模也不允許超過10GB。
資料庫引擎對象
下表指定在 SQL Server 資料庫中定義的或在 Transact-SQL 語句中引用的各種對象的最大大小和最大數量。
SQL Server資料庫引擎 對象 | 最大大小/數量 SQL Server(32 位) | 最大大小/數量 SQL Server(64 位) |
批大小 | 65,536 * 網路數據包大小 | 65,536 * 網路數據包大小 |
每個短字元串列的位元組數 | 8,000 | 8,000 |
每個 GROUP BY、ORDER BY 的位元組數 | 8,060 | 8,060 |
每個索引鍵的位元組數 | 900 | 900 |
每個外鍵的位元組數 | 900 | 900 |
每個主鍵的位元組數 | 900 | 900 |
每行的位元組數 | 8,060 | 8,060 |
內存優化表中的每行位元組數 | 不支持 | 8,060 |
存儲過程源文本中的位元組數 | 批處理大小中的較小者或 250 MB | 批處理大小中的較小者或 250 MB |
每個varchar(max)、varbinary(max)、xml、text或image列的位元組數 | 2^31-1 | 2^31-1 |
每個ntext或nvarchar(max)列的字元數 | 2^30-1 | 2^30-1 |
每個表的聚集索引數 | 1 | 1 |
GROUP BY、ORDER BY 中的列數 | 僅受位元組數限制 | 僅受位元組數限制 |
GROUP BY WITH CUBE 或 WITH ROLLUP 語句中的列數或表達式數目 | 10 | 10 |
每個索引鍵的列數 | 16 | 16 |
每個外鍵的列數 | 16 | 16 |
每個主鍵的列數 | 16 | 16 |
每個非寬表的列數 | 1,024 | 1,024 |
每個寬表的列數 | 30,000 | 30,000 |
每個 SELECT 語句的列數 | 4,096 | 4,096 |
每個 INSERT 語句的列數 | 4096 | 4096 |
每個客戶端的連接個數 | 已配置連接的最大值 | 已配置連接的最大值 |
資料庫大小 | 524,272 TB | 524,272 TB |
每個 SQL Server 實例的資料庫數 | 32,767 | 32,767 |
每個資料庫的文件組個數 | 32,767 | 32,767 |
每個資料庫的內存優化數據文件組個數 | 不支持 | 1 |
每個資料庫的文件個數 | 32,767 | 32,767 |
文件大小(數據) | 16 TB | 16 TB |
文件大小(日誌) | 2 TB | 2 TB |
每個資料庫的內存優化數據文件個數 | 不支持 | 4.096 |
每個內存優化數據文件的差異文件 | 不支持 | 1 |
每個表的外鍵表引用數 | 253 | 253 |
標識符長度(以字元計) | 128 | 128 |
每台計算機的實例數 | 所有 SQL Server 版本的獨立伺服器上為 50 個實例。 | 獨立伺服器上為 50 個實例。 在使用共享群集磁碟作為您的群集安裝的存儲選項時,在故障轉移群集上支持 25 個實例。如果您為群集安裝選擇 SMB 文件共享作為存儲選項,則 SQL Server 在故障轉移群集上支持 50 個實例。 |
每個內存優化表的索引個數 | 不支持 | 8 |
包含 SQL 語句的字元串的長度(批大小) | 65,536 * 網路數據包大小 | 65,536 * 網路數據包大小 |
每個連接的鎖數 | 每個伺服器的最大鎖數 | 每個伺服器的最大鎖數 |
每個 SQL Server 實例的鎖數5 | 最多 2,147,483,647 | 僅受內存限制 |
嵌套存儲過程級別數 | 32 | 32 |
嵌套子查詢個數 | 32 | 32 |
嵌套觸發器層數 | 32 | 32 |
每個表的非聚集索引數 | 999 | 999 |
存在以下任意子句的情況下 GROUP BY 子句中的非重複表達式數目:CUBE、ROLLUP、GROUPING SETS、WITH CUBE、WITH ROLLUP | 32 | 32 |
GROUP BY 子句中的運算符生成的分組集數目 | 4,096 | 4,096 |
每個存儲過程的參數個數 | 2,100 | 2,100 |
每個用戶定義函數的參數個數 | 2,100 | 2,100 |
每個數據表的 REFERENCE 個數 | 253 | 253 |
每個數據表的行數 | 受可用存儲空間限制 | 受可用存儲空間限制 |
每個資料庫的表數3 | 受資料庫中對象數限制 | 受資料庫中對象數限制 |
每個分區表或索引的分區數 | 1,000Important:在 32 位系統上可以創建具有超過 1,000 個分區的表或索引,但不支持這樣做。 | 15,000 |
非索引列的統計信息條數 | 30,000 | 30,000 |
每個 SELECT 語句的表個數 | 僅受可用資源限制 | 僅受可用資源限制 |
每個表的觸發器個數3 | 受資料庫中對象數限制 | 受資料庫中對象數限制 |
每個 UPDATE 語句(寬表)的列數 | 4096 | 4096 |
用戶連接 | 32,767 | 32,767 |
XML 索引 | 249 | 249 |
1.
網路數據包大小指的是用於在應用程序和關係資料庫引擎之間進行通信的表格格式數據流 (TDS) 數據包的大小。默認的數據包大小為 4 KB,由 network packet size 配置選項控制。
2.
在 SQL Server 中,任何索引鍵的最大位元組數不能超過 900。可以使用最大大小合計超過 900 的可變長度列定義鍵,前提是這些列中所插入行的數據都不超過 900 位元組。在 SQL Server 中,可將非鍵列包含於非聚集索引中以避免最大索引鍵大小 900 位元組的限制。
3.
資料庫對象包括諸如表、視圖、存儲過程、用戶定義函數、觸發器、規則、默認值和約束等對象。資料庫中所有對象的數量總和不能超過 2,147,483,647。
4.
儘管表可以包含無限數量的 FOREIGN KEY 約束,但建議最大數量取為 253。根據承載 SQL Server 的硬體配置,指定額外的 FOREIGN KEY 約束對查詢優化器的處理而言可能開銷很大。
5.
此值針對靜態鎖分配。動態鎖僅受內存限制。
6.
如果存儲過程訪問的資料庫多於 64 個,或者交替訪問的資料庫多於 2 個,將收到錯誤信息。
7.
如果表包含一個或多個 XML 索引,由於 XML 列被添加到主 XML 索引的聚集鍵,用戶表的聚集鍵被限制為 15 列。在 SQL Server 中,可在非聚集索引中包括非鍵列以避免最多為 16 個鍵列的限制。有關詳細信息,請參閱創建帶有包含列的索引。
8.
SQL Server 支持行溢出存儲,行溢出存儲使長度可變的列可以被推送到行外。只有 24 位元組的根存儲在推送出行外的可變長度列的主記錄中;因此,此版本中的有效行限制高於 SQL Server 早期版本中的有效行限制。有關詳細信息,請參閱 SQL Server 聯機叢書中的“行溢出數據超過 8 KB”這一主題。
9.
SQL Server 內存中 OLTP 不支持行溢出存儲。可變長度列不會推送到行外。這將您可在內存優化表中指定的可變長度列的最大寬度限制為最大行大小。
SQL Server 實用工具對象
下表指定了在 SQL Server 實用工具中測試的各種對象的最大大小和最大數量。
SQL Server 實用工具對象 | 最大大小/數量 SQL Server(32 位) | 最大大小/數量 SQL Server(64 位) |
每個 SQL Server 實用工具的計算機數(物理計算機或虛擬計算機) | 100 | 100 |
每台計算機的 SQL Server 實例數 | 5 | 5 |
每個 SQL Server 實用工具的 SQL Server 實例總數 | 2001 | 2001 |
每個 SQL Server 實例的用戶資料庫數(包括數據層應用程序) | 50 | 50 |
每個 SQL Server 實用工具的用戶資料庫總數 | 1,000 | 1,000 |
每個資料庫的文件組數 | 1 | 1 |
每個文件組的數據文件數 | 1 | 1 |
每個資料庫的日誌文件數 | 1 | 1 |
每台計算機的卷數 | 3 | 3 |
1SQL Server 實用工具支持的 SQL Server 託管實例的最大數目將會依伺服器的硬體配置而定。有關入門信息,請參閱SQL Server 實用工具的功能和任務。並非在每個 SQL Server 2014 版本中均提供 SQL Server 實用工具控制點。有關 SQL Server 各版本支持的功能列表,請參閱SQL Server 2014 各個版本支持的功能。
SQL Server 數據層應用程序對象
下表指定在 SQL Server 數據層應用程序 (DAC) 中測試的各種對象的最大大小和最大數量。
SQL Server DAC 對象 | 最大大小/數量 SQL Server(32 位) | 最大大小/數量 SQL Server(64 位) |
每個 DAC 的資料庫數 | 1 | 1 |
每個 DAC 的對象數 | 受資料庫中對象數或可用內存限制。 | 受資料庫中對象數或可用內存限制。 |
1限制中包含的對象類型為用戶、表、視圖、存儲過程、用戶定義函數、用戶定義數據類型、資料庫角色、架構和用戶定義表類型。
複製對象
下表指定了在 SQL Server 複製中定義的各種對象的最大大小和最大數量。
SQL Server 複製對象 | 最大大小/數量 - SQL Server(32 位) | 最大大小/數量 - SQL Server(64 位) |
項目(合併發布) | 256 | 256 |
項目(快照發布或事務發布) | 32,767 | 32,767 |
表中的列(合併發布) | 246 | 246 |
表中的列數(SQL Server 快照發布或事務發布) | 1,000 | 1,000 |
表中的列(Oracle 快照發布或事務發布) | 995 | 995 |
行篩選器中使用的列的位元組數(合併發布) | 1,024 | 1,024 |
行篩選器中使用的列的位元組數(快照發布或事務發布) | 8,000 | 8,000 |
1如果將行跟蹤用於衝突檢測(默認設置),則基表最多可以包含 1,024 列,但必須從項目中對這些列進行篩選,以便最多可發布 246 列。如果使用列跟蹤,則基表最多可包含 246 列。
2基表可以包含發布資料庫中允許的最大數量的列(在 SQL Server 中為 1024),但如果這些列的數目超過為發布類型指定的最大值,則必須從項目中篩選這些列。