Partition:Partiton Scheme是否指定Next Used?

来源:http://www.cnblogs.com/ljhdo/archive/2016/11/11/5039403.html
-Advertisement-
Play Games

在SQL Server中,為Partition Scheme多次指定Next Used,不會出錯,最後一次指定的FileGroup是Partition Scheme的Next Used,建議,在執行Partition Split操作之前,都要為Partition Scheme指定Next Used。 ...


在SQL Server中,為Partition Scheme多次指定Next Used,不會出錯,最後一次指定的FileGroup是Partition Scheme的Next Used,建議,在執行Partition Split操作之前,都要為Partition Scheme指定Next Used。

但是,SQL Server是否提供metadata,查看Partiton Scheme是否指定Next Used FileGroup?答案是系統視圖:sys.destination_data_spaces。如果存在FileGroup被指定為Next Used ,那麼視圖返回的Partition的個數會比Partition Function劃分的分區數量多1個。

一,分析視圖:sys.destination_data_spaces

該視圖返回三列,表示Partition Scheme的每個Partition和FileGroup之間的關係:

  • partition_scheme_id :ID of the partition-scheme that is partitioning to the data space.                  
  • destination_id :ID (1-based ordinal) of the destination-mapping, unique within the partition scheme.     
  • data_space_id :ID of the data space to which data for this scheme's destination is being mapped.

從表的存儲結構來分析這三列的意義:

  • partition_scheme_id 是數據表存儲的空間,該空間不是具體的某個FileGroup。普通的表只有一個分區,只能存儲在單個FileGroup中,但是,通過Partition Scheme,將表數據分割成多個分區,每個分區存儲到指定的FileGroup中,在物理存儲上,每個分區都是分開(separate)存儲的。
  • destination_id:是Partition Number,每個分區的編號
  • data_space_id:是FileGroupID,分區存儲的FileGroup。

二,測試用例

1,創建分區函數

-- create parition function
CREATE PARTITION FUNCTION pf_int_Left (int)
AS 
RANGE LEFT 
FOR VALUES (10,20);

2,創建分區scheme

--create partition scheme
CREATE PARTITION SCHEME PS_int_Left
AS 
PARTITION pf_int_Left
TO ([primary], [primary], [primary]);

3,在split partition之前,必須使用alter partition scheme 指定一個Next Used FileGroup。如果Partiton Scheme沒有指定 next used filegroup,那麼alter partition function split range command 執行失敗,不改變partition scheme。

--split range and add new one boudary value
ALTER PARTITION FUNCTION pf_int_Left ()
split range (30);

Msg 7710, Level 16, State 1, Line 2
Warning: The partition scheme 'PS_int_Left' does not have any next used filegroup. Partition scheme has not been changed.

4,如果檢查 Partiton Scheme是否指定Next Used FileGroup?

使用sys.destination_data_spaces視圖來檢查,該系統視圖返回Partition 和filegroup之間的Mapping關係。如果一個FileGoup被alter partition scheme 標記為next used Filegroup,那麼Partition 的個數會比多Partition function劃分的分區多一個。

select ps.name as PartitionSchemeName,
    ps.data_space_id as PartitionSchemeID,
    pf.name as PartitionFunctionName,
    ps.function_id as PartitionFunctionID,
    pf.boundary_value_on_right,
    dds.destination_id as PartitionNumber,
    dds.data_space_id as FileGroupID
from sys.partition_schemes ps
inner join sys.destination_data_spaces dds
    on ps.data_space_id=dds.partition_scheme_id
inner join sys.partition_functions pf
    on ps.function_id=pf.function_id
where ps.name='PS_int_Left'

上述腳本返回3個partition,說明沒有next used filegroup。

5,使用 alter partition scheme標記 next used filegroup

--alter partition scheme to mark next used filegroup
ALTER PARTITION SCHEME PS_int_Left 
NEXT USED [db_fg1];

查看分區個數

select ps.name as PartitionSchemeName,
    ps.data_space_id as PartitionSchemeID,
    pf.name as PartitionFunctionName,
    ps.function_id as PartitionFunctionID,
    pf.boundary_value_on_right,
    dds.destination_id as PartitionNumber,
    dds.data_space_id as FileGroupID
from sys.partition_schemes ps
inner join sys.destination_data_spaces dds
    on ps.data_space_id=dds.partition_scheme_id
inner join sys.partition_functions pf
    on ps.function_id=pf.function_id
where ps.name='PS_int_Left'

可以看到,多了一個partition,partition number=4,存放的FileGroupID=2。

6,將 FileGroup 取消標記為 next used filegroup

--alter partition scheme to cancel next used filegroup
ALTER PARTITION SCHEME PS_int_Left 
NEXT USED;

7,Merge Range移除FileGroup

--merge range
ALTER PARTITION FUNCTION pf_int_Left ()
merge range (20);

查看Partition Function指定的Boundary Value

select pf.name as PartitionFunctionName,
    pf.function_id,
    pf.type,
    pf.type_desc,
    pf.boundary_value_on_right,
    pf.fanout,
    prv.boundary_id,
    prv.value
from sys.partition_functions pf
inner join sys.partition_range_values prv
    on pf.function_id=prv.function_id
where pf.name='pf_int_Left'

綁定到Partition Scheme的Filegroup如下

select ps.name as PartitionSchemeName,
    ps.data_space_id as PartitionSchemeID,
    pf.name as PartitionFunctionName,
    ps.function_id as PartitionFunctionID,
    pf.boundary_value_on_right,
    dds.destination_id as PartitionNumber,
    dds.data_space_id as FileGroupID
from sys.partition_schemes ps
inner join sys.destination_data_spaces dds
    on ps.data_space_id=dds.partition_scheme_id
inner join sys.partition_functions pf
    on ps.function_id=pf.function_id
where ps.name='PS_int_Left'

參考文檔:

How to Remember the Next Used Filegroup in a Partition Scheme


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言: 雖說網上有太多的Android課程,但是大多都是視頻,有Android線上開發環境的幾乎沒有,但是對於學習Android的人來說擁有線上的Android開發環境是非常好的,可以隨時動手操作學習Android開發,及時瞭解自己的掌握情況! 實驗樓就提供了Android線上開發環境,你不需要本地 ...
  • const,static,extern 簡介 一、const與巨集的區別: const簡介:之前常用的字元串常量,一般是抽成巨集,但是蘋果不推薦我們抽成巨集,推薦我們使用const常量。 執行時刻:巨集是預編譯 ( 編譯之前處理 ),const是編譯階段。 編譯檢查:巨集不做檢查,不會報編譯錯誤,只是替換,c ...
  • Weex 是什麼 Weex是阿裡發佈的一款用WEB方式開發原生app的開源產品 Weex能夠完美兼顧性能與動態性,讓移動開發者通過簡捷的前端語法寫出Native級別的性能體驗,並支持iOS、安卓、YunOS及Web等多端部署。對於移動開發者來說,Weex主要解決了頻繁發版和多端研發兩大痛點,同時解決 ...
  • 大家都知道如果手機只有一個活動的應用,那這個應用也太簡單了吧。如同網頁一下,是有多個組成的,在C#中我們可以使用各程skip控制項或代碼,這裡不再贅述。 ...
  • 一、TCP/IP協議(傳輸層協議) 1、Socket與ServerSocket Socket是應用層與TCP/IP協議簇通訊的中間抽象層,Socket是一組介面,在設計模式中,Socket的設計就是門面模式,它把複雜的TCP/IP協議簇的內容隱藏在套接字介面後面,用戶無需關心協議的實現,只需使用So ...
  • 場景【1】多表聯查時,主表與關聯表同時與同一張(第三張表)有關聯,類似三角戀關係- - 涉及表: HOUSE:記錄了房屋信息 ROOMS:記錄了房間信息 HOUSE_STATUS:記錄了狀態信息的中文欄位 房屋信息HOUSE表中有一個關於記錄房屋狀態的欄位,status_id,與HOUSE_STAT ...
  • info 伺服器基本信息 monitor 實時轉儲收到的請求 flushdb 清空當前資料庫 flushall 清空所有資料庫 quit 關閉連接 save 將數據同步保持到磁碟 bgsave 非同步 lastsave 返回最後一次成功保存數據到磁碟的時間戳 shundown 將數據同步保持到磁碟並關 ...
  • AND 和 OR 運算符用於基於一個以上的條件對記錄進行過濾。 AND 和 OR 運算符用於基於一個以上的條件對記錄進行過濾。 AND 和 OR 運算符 AND 和 OR 可在 WHERE 子語句中把兩個或多個條件結合起來。 如果第一個條件和第二個條件都成立,則 AND 運算符顯示一條記錄。 如果第 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...