国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > SQL Server > 正文

SQL SERVER 2014--學習筆記1

2024-08-31 00:55:46
字體:
供稿:網(wǎng)友
SQL SERVER 2014--學習筆記1

--=======================================================

在SQL SERVER 2014中,最吸引眼球的就是內(nèi)存表和本地編譯存儲過程,在MS強大的宣傳下,內(nèi)存表和本地編譯存儲過程似乎成了能搞定一切的救世主,這是真的嗎? 讓我們一步一步來學習探索吧

--=======================================================

創(chuàng)建數(shù)據(jù)庫

由于內(nèi)存表數(shù)據(jù)的存放機制和普通表(基于磁盤的表)完全不同,因此內(nèi)存表的數(shù)據(jù)需要一個特別的文件夾(注意不是文件哦)來存放,后續(xù)會涉及到數(shù)據(jù)存放原理,此時先放一放,我們來看下數(shù)據(jù)庫創(chuàng)建腳本:

USE [master]--創(chuàng)建數(shù)據(jù)庫CREATE DATABASE [TestDB]ON  PRIMARY ( NAME = N'TestDB', FILENAME = N'D:/SQL2104/SQLData/TestDB.mdf' , SIZE = 204800KB , MAXSIZE = UNLIMITED, FILEGROWTH = 204800KB ) LOG ON ( NAME = N'TestDB_log', FILENAME = N'D:/SQL2104/SQLData/TestDB_log.ldf' , SIZE = 204800KB , MAXSIZE = 2048GB , FILEGROWTH = 204800KB )GO--創(chuàng)建內(nèi)存表使用的文件組ALTER DATABASE [TestDB] ADD FILEGROUP [TestDB_MFG1] CONTAINS MEMORY_OPTIMIZED_DATAGO--創(chuàng)建內(nèi)存表使用的文件夾ALTER DATABASE [TestDB] ADD FILE ( NAME = N'TestDB_MDir1', FILENAME = N'D:/SQL2104/SQLData/TestDB_MDir1') TO FILEGROUP [TestDB_MFG1]GO

對于每個數(shù)據(jù)庫,只能創(chuàng)建一個內(nèi)存優(yōu)化文件組(Memory-Optimized Filegroup),而對于每個內(nèi)存優(yōu)化文件組,可以創(chuàng)建多個關(guān)聯(lián)的文件夾。

PS:內(nèi)存優(yōu)化文件組基與FILESTREAM文件組,但是無需為內(nèi)存優(yōu)化文件組來啟用FILESTREAM。

--=======================================================

創(chuàng)建內(nèi)存表

創(chuàng)建內(nèi)存表限制比較多:

1. 支持的數(shù)據(jù)類型:http://msdn.microsoft.com/ZH-CN/library/dn133179(v=sql.120).aspx

2. 內(nèi)存優(yōu)化表支持自增,但唯一允許用于 seed 和 increment 的值為 1;(1,1) 是 seed 和 increment 的默認值;

3. 內(nèi)存優(yōu)化表不支持CHECK約束,在非hash索引列上也不行;

4. 內(nèi)存優(yōu)化表不支持使用的排序規(guī)則所具有的代碼頁并非 1252 的數(shù)據(jù)類型 char(n) 和 varchar(n);

5. 內(nèi)存優(yōu)化表不支持nvarchar(max)或varchar(max)

6. 內(nèi)存優(yōu)化表索引不支持未使用 *_BIN2 排序規(guī)則的字符列上的索引,在非hash索引列上也不行;

7. 內(nèi)存優(yōu)化表上的索引不支持索引鍵中有可為 Null 的列,在非hash索引列上也不行;

8. 內(nèi)存優(yōu)化表必須有至少一個索引或主鍵

創(chuàng)建內(nèi)存優(yōu)化表Demo

CREATE TABLE [dbo].[TB1_IM](    [c1] [int] NOT NULL IDENTITY(1,1) PRIMARY KEY     NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000),     [c2] [nchar](200)  COLLATE Chinese_PRC_Stroke_90_BIN2 NOT NULL     INDEX ix_c2 NONCLUSTERED HASH WITH (BUCKET_COUNT=1000000),    [c3] [nvarchar](200) COLLATE Chinese_PRC_Stroke_90_BIN2 NOT NULL,    [c4] [nvarchar](200) COLLATE Chinese_PRC_Stroke_90_BIN2 NOT NULL,    INDEX ix_c3_c4 NONCLUSTERED HASH(c3,c4) WITH(BUCKET_COUNT=1000000),    INDEX ix_c2_c3  NONCLUSTERED (c2,c3))WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )

內(nèi)存優(yōu)化表的最大特色就是HASH索引,而HASH索引最大的特色就是點查詢比較快,但是對于范圍查找就蒼白無力啦。

上帝為你打開一扇窗的時候,他肯定順手關(guān)掉一扇門。

--===============================================================================

關(guān)于BUCKET_COUNT的值的設(shè)置

MS有如下建議:

在大多數(shù)情況下,Bucket 計數(shù)應該介于索引鍵中非重復值數(shù)目的 1 到 2 倍之間。 如果索引鍵包含許多重復值,且平均而言對于每個索引鍵值超過 10 行,則改用非聚集索引

您不見得始終都能夠預測到某個特定索引鍵可能具有或?qū)⒕哂卸嗌賯€值。 如果 BUCKET_COUNT 值處于實際鍵值數(shù)目的 5 倍之內(nèi),性能就應該是可接受的。

簡單理解就是: 要盡可能保持每個Bucket里存放數(shù)據(jù)而又不存放過多數(shù)據(jù),如果空閑Bucket過多就會造成浪費,如果單個Bucket中存放過多行數(shù)據(jù),就會造成性能問題。

--=================================================================================

關(guān)于索引維護和表修改

內(nèi)存索引表不支持ALTER TABLE 和 ALTER INDEX操作,如果需要修改表或者修改索引,那么SORRY,請重新刪除創(chuàng)建!(有沒有瞬間無愛的趕腳!)

--=================================================================================

關(guān)于數(shù)據(jù)持續(xù)性

對于內(nèi)存優(yōu)化表,有兩種持續(xù)性可以選擇:SCHEMA_ONLY(非持久表)和SCHEMA_AND_DATA(持久表),SCHEMA_ONLY 選項會導致數(shù)據(jù)在實例重啟后丟失;而對于SCHEMA_AND_DATA(持久表),又可以設(shè)置完全持久行還是延遲持續(xù)性,延遲持續(xù)性選項允許在事務提交時可以不立即將日志寫入磁盤,從而提升性能,當然代價就是發(fā)生故障時可能丟失數(shù)據(jù)。

--===============================================================================

未完待續(xù)


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 汤原县| 吉木萨尔县| 牡丹江市| 营山县| 宜丰县| 安塞县| 忻城县| 永州市| 明溪县| 霍林郭勒市| 华阴市| 湖北省| 仪征市| 佛坪县| 南涧| 宿松县| 临桂县| 洛川县| 札达县| 鄂温| 安新县| 五台县| 永丰县| 邵武市| 闸北区| 左贡县| 邵阳市| 鞍山市| 临夏市| 红安县| 万安县| 资源县| 墨竹工卡县| 保康县| 康乐县| 乐都县| 安顺市| 双牌县| 沧州市| 康马县| 泗水县|