技術預覽SQL Server 2016 RC0

by adonis 16. 三月 2016 15:50

作    者:楊先民
審    稿:張智凱

 

前言

原本來沒打算撰寫 SQL Server 2016的任何功能的,因為很多功能有時正式版就消失了(例如 2005時說好的DATE與TIME資料型別,正式版硬生生的消失),不過既然 SQL SERVER 的 Team這麼有誠意的在網誌上發佈了 SQL Server 2016 RC0的概覽,就讓我們先來看看可能會有的新功能吧,到時正式版再看看是否又被晃點了。

概覽之前

SQL Server 的工程團隊很高興的宣布 SQL Server 2016 的 RC0版。這是 SQL Server的一個重要的里程碑。它代表了該產品最豐富最完整的功能已經上市,包含了:即時的營運分析、在行動裝置中豐富的可視化、內建先進的分析、新的且先進的安全功能,以及新的混合方案讓你可以和雲端資料整合。

想更了解RC0版,可以到 SQL Server 2016的預覽網頁,可以下載預覽程式體驗這些讓人興奮的功能,如果有問題的話你可以到 MSDN網站以及 StackOverflow網站留下你的意見。


資料庫層級的組態


這次的 RC0版新增了新的資料庫層級的物件,這個物件可以保留在資料庫層級中的應用程式碼的 optional組態,透過新的語法 Alter database scoped configuration指令達成。這個指令可以修改 SQL Server對特定資料庫的預設行為。

這些選項包含了:

清除預存程序的快取。
設定 MAXDOP參數在特定的資料庫中。
在資料庫層級啟用或是停用查詢最佳化 hotfixed。

可以使用下列的SQL指令:

ALTER DATABASE SCOPED CONFIGURATION
{
{ [ FOR SECONDARY] SET }
}
| CLEAR PROCEDURE_CACHE
[;]
< set_options > ::=
{
MAXDOP = { | PRIMARY}
| LEGACY_CARDINALITY_ESTIMATION = { ON | OFF | PRIMARY}
| PARAMETER_SNIFFING = { ON | OFF | PRIMARY}
| QUERY_OPTIMIZER_HOTFIXES = { ON | OFF | PRIMARY}
}

這個功能將支援 Azure以及 SQL Server Database版本。

In-Memory OLAP的新功能

Non-clustered index的平行掃描:所有在 memory-optimized資料表上的索引現在都支援平行掃描,這對於需要掃描大量資料的分析查詢可以增進效能。

在升級時減少 downtime時間:升級自舊版的 SQL Server不再需要執行資料庫復原,所以資料庫的大小並不會影響升級的時間。

內建的 @@spid函式可以在 natively compiled T-SQL程式中。

Log-optimized和 parallel ALTER:大多數的 ALTER TABLE指令現在都支援平行處理,大幅增進了效能。   

對大量外來主索引鍵的支援 :
在有1萬個外來主索引鍵參考的情況之下對資料表更有效率的 update。也對分割資料表的 Update與 Delete更有效率。

但是下面的限制還是存在的:
Merge指令還是不支援大量的外來主索引鍵的支援。
大量的外來主索引鍵目前還不支援 memory-optimized資料表或是 stretch 資料庫。


新的內建 Table-Valued 函式:STRING_SPLIT

SQL Server 2016新增了一個內建的 table-valued函式 STRING_SPLIT,可以把中間隔著間隔逗號(或是任何你想分隔的字串),變成一個資料回傳。
語法:
STRING_SPLIT ( string, separator )
回傳: 資料表
範例:
SELECT * FROM STRING_SPLIT(‘Lorem,ipsum,dolor,sit,amet.’, ”)
結果會變成:

—–
Lorem
ipsum
dolor
sit
amet.

附註:可惜還是沒有支援陣列的使用啊。

支援匯入匯出 UTF-8的資料


現在檔案若用 UTF-8的方式儲存的話,可以利用 BULK INSERT指令或是 bcp的語法將檔案匯入或是匯出。當匯入動作發生時, UTF-8編碼的字串會從檔案讀出,然後轉換成 native data types,再對應到相關的 SQL Server資料表欄位中。而匯出動作發生時,資料也會從 native data types轉換成 UTF-8然後再存到檔案中。所有 native data都支援,但是不支援 XML、SqlVariant、Text、NText以及 image。

範例:

從檔案中利用BULK INSERT 匯入SQL Server


BULK INSERT MyTable FROM ‘path\file.csv’
WITH ( FIELDTERMINATOR = ‘,’, CODEPAGE = ‘65001’, DATAFILETYPE = ‘Char’)

從檔案中利用bcp 指令匯入SQL Server


bcp MyTable in   “path\file.csv” -T -t , -c -C 65001

從 SQL Server中將資料表資料匯出檔案


bcp MyTable out “path\file.csv” -T -t , -c -C 65001

AlwaysOn Availability Groups的支援

    分散式的Availability Groups:現在可以在availability group中設定replication。需要注意的是,這在不同的 Windows Clusters中會有不同的availability groups的差異存在。

    複寫端利用Streaming加速複製:新的第二台複製端在Availability Group中可以不需要使用備份還原的方式以加速複寫資料的產生。

結語

SQL Server 2016 RC0己經出來了,當然在正式版上市的時後我應該還會再寫一篇文章介紹正式版有哪些功能吧,從之前一直累積到現在的新功能就資料庫引擎上來說也蠻多的,是該好好整理一下並且稍微了解它的更進階的使用。

LAST

Tags:

新增評論




  Country flag
biuquote
  • 評論
  • 線上預覽
Loading






NET Magazine國際中文電子雜誌

NET Magazine國際中文電子版雜誌,由恆逸資訊創立於2000,自發刊日起迄今已發行超過500篇.NET相關技術文章,擁有超過40000名註冊讀者群。NET Magazine國際中文電子版雜誌希望藉於電子雜誌與NET Developer達到共同學習與技術新知分享,歡迎每一位對.NET 技術有興趣的朋友們多多支持本雜誌,讓作者群們可以有持續性的動力繼續爬文。<請加入免費訂閱>

月分類Month List