成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server表分區的NULL值問題

數據庫 SQL Server
SQL Server表分區只支持range分區這一種類型,往往會被大家吐槽 人家MySQL支持四種類型:RANGE分區、LIST分區、HASH分區、KEY分區。

  SQL Server表分區只支持range分區這一種類型,往往會被大家吐槽

  人家MySQL支持四種類型:RANGE分區、LIST分區、HASH分區、KEY分區

  共同點是MySQL跟SQL Server也有分區對齊的問題,都是水平切分,大家都允許分區列存在NULL值

  這次我們測試SQL Server表分區的分區列的NULL值,究竟NULL值是被存放在哪個區間,以前一直沒有注意

  測試腳本

 

  1. --1.創建文件組 
  2. ALTER DATABASE [sss] 
  3. ADD FILEGROUP [FG_TinyBlog_Id_01] 
  4.  
  5. ALTER DATABASE [sss] 
  6. ADD FILEGROUP [FG_TinyBlog_Id_02] 
  7.  
  8. ALTER DATABASE [sss] 
  9. ADD FILEGROUP [FG_TinyBlog_Id_03] 
  10.  
  11. ALTER DATABASE [sss] 
  12. ADD FILEGROUP [FG_TinyBlog_Id_04] 
  13.  
  14. ALTER DATABASE [sss] 
  15. ADD FILEGROUP [FG_TinyBlog_Id_05] 
  16.  
  17.  
  18. --2.創建文件 
  19. ALTER DATABASE [sss] 
  20. ADD FILE 
  21. (NAME = N'FG_TinyBlog_Id_01_data',FILENAME = N'E:\DataBase\sss\FG_TinyBlog_Id_01_data.ndf',SIZE = 96MB, FILEGROWTH = 24MB ) 
  22. TO FILEGROUP [FG_TinyBlog_Id_01]; 
  23.  
  24. ALTER DATABASE [sss] 
  25. ADD FILE 
  26. (NAME = N'FG_TinyBlog_Id_02_data',FILENAME = N'E:\DataBase\sss\FG_TinyBlog_Id_02_data.ndf',SIZE = 96MB, FILEGROWTH = 24MB ) 
  27. TO FILEGROUP [FG_TinyBlog_Id_02]; 
  28.  
  29. ALTER DATABASE [sss] 
  30. ADD FILE 
  31. (NAME = N'FG_TinyBlog_Id_03_data',FILENAME = N'E:\DataBase\sss\FG_TinyBlog_Id_03_data.ndf',SIZE = 96MB, FILEGROWTH = 24MB ) 
  32. TO FILEGROUP [FG_TinyBlog_Id_03]; 
  33.  
  34. ALTER DATABASE [sss] 
  35. ADD FILE 
  36. (NAME = N'FG_TinyBlog_Id_04_data',FILENAME = N'E:\DataBase\sss\FG_TinyBlog_Id_04_data.ndf',SIZE = 96MB, FILEGROWTH = 24MB ) 
  37. TO FILEGROUP [FG_TinyBlog_Id_04]; 
  38.  
  39. ALTER DATABASE [sss] 
  40. ADD FILE 
  41. (NAME = N'FG_TinyBlog_Id_05_data',FILENAME = N'E:\DataBase\sss\FG_TinyBlog_Id_05_data.ndf',SIZE = 96MB, FILEGROWTH = 24MB ) 
  42. TO FILEGROUP [FG_TinyBlog_Id_05]; 
  43.  
  44.  
  45. --3.創建分區函數 
  46. CREATE PARTITION FUNCTION 
  47. Fun_TinyBlog_Id(INTAS 
  48. RANGE LEFT 
  49. FOR VALUES(-10,0,1,6) 
  50.  
  51.  
  52. --4.創建分區方案 
  53. CREATE PARTITION SCHEME 
  54. [Sch_TinyBlog_Id] AS 
  55. PARTITION [Fun_TinyBlog_Id] 
  56. TO([FG_TinyBlog_Id_01],[FG_TinyBlog_Id_02],[FG_TinyBlog_Id_03],[FG_TinyBlog_Id_04],[FG_TinyBlog_Id_05]) 

 

  插入測試數據

 

  1. USE [sss] 
  2.  
  3.  
  4.  
  5. CREATE TABLE TinyBlog(id INT  NULL,NAME VARCHAR(100))  
  6.  ON [Sch_TinyBlog_Id](id) 
  7.  
  8.  
  9.  
  10.  
  11. SELECT * FROM TinyBlog ORDER BY id  
  12.  
  13.  
  14. INSERT INTO [dbo].[TinyBlog] 
  15.         ( [id], [NAME] ) 
  16. VALUES  ( NULL-- id - int 
  17.           '3232'  -- NAME - varchar(100) 
  18.           ) 
  19.  
  20. INSERT INTO [dbo].[TinyBlog] 
  21.         ( [id], [NAME] ) 
  22. VALUES  ( -2, -- id - int 
  23.           '-2'  -- NAME - varchar(100) 
  24.           ) 
  25.  
  26.  
  27. INSERT INTO [dbo].[TinyBlog] 
  28.         ( [id], [NAME] ) 
  29. VALUES  ( 66, -- id - int 
  30.           '66'  -- NAME - varchar(100) 
  31.           ) 
  32.  
  33. INSERT INTO [dbo].[TinyBlog] 
  34.         ( [id], [NAME] ) 
  35. VALUES  ( 0, -- id - int 
  36.           '0'  -- NAME - varchar(100) 
  37.           ) 
  38.  
  39. INSERT INTO [dbo].[TinyBlog] 
  40.         ( [id], [NAME] ) 
  41. VALUES  ( -30, -- id - int 
  42.           '-30'  -- NAME - varchar(100) 
  43.           ) 

 

  表數據如下

 

  1. SELECT * FROM TinyBlog ORDER BY id  

  

 分區分布 

  1. --查看分區架構文件組分布 
  2. SELECT  CONVERT(VARCHAR(MAX), ps.nameAS partition_scheme , 
  3.         p.partition_number , 
  4.         CONVERT(VARCHAR(MAX), ds2.nameAS filegroup , 
  5.         CONVERT(VARCHAR(MAX), ISNULL(v.value, ''), 120) AS range_boundary , 
  6.         STR(p.rows, 9) AS rows 
  7. FROM    sys.indexes i 
  8.         JOIN sys.partition_schemes ps ON i.data_space_id = ps.data_space_id 
  9.         JOIN sys.destination_data_spaces dds ON ps.data_space_id = dds.partition_scheme_id 
  10.         JOIN sys.data_spaces ds2 ON dds.data_space_id = ds2.data_space_id 
  11.         JOIN sys.partitions p ON dds.destination_id = p.partition_number 
  12.                                  AND p.object_id = i.object_id 
  13.                                  AND p.index_id = i.index_id 
  14.         JOIN sys.partition_functions pf ON ps.function_id = pf.function_id 
  15.         LEFT JOIN sys.Partition_Range_values v ON pf.function_id = v.function_id 
  16.                                                   AND v.boundary_id = p.partition_number 
  17.                                                   - pf.boundary_value_on_right 
  18. WHERE   i.object_id = OBJECT_ID('TinyBlog'
  19.         AND i.index_id IN ( 0, 1 ) 
  20. ORDER BY p.partition_number 
  21.  
  22.  
  23. --分區區間 
  24. --SELECT  *  FROM    sys.partition_range_values 

 


 分區情況  

  1. --分區情況 
  2. SELECT  c.* , 
  3.         b.[groupname] AS '分區方案對應的文件組名稱' , 
  4.         d.name '當前分區函數對應的分區方案' 
  5. FROM    sys.destination_data_spaces AS a 
  6.         INNER JOIN sysfilegroups AS b ON a.[data_space_id] = b.[groupid] 
  7.         INNER JOIN ( SELECT $PARTITION.Fun_TinyBlog_Id(id) AS 分區編號 , 
  8.                             MIN(id) AS Min_value , 
  9.                             MAX(id) AS Max_value , 
  10.                             COUNT(id) AS 記錄數 
  11.                      FROM   [dbo].[TinyBlog] 
  12.                      GROUP BY $PARTITION.Fun_TinyBlog_Id(id) 
  13.                    ) AS c ON c.[分區編號] = a.[destination_id] 
  14.         INNER JOIN sys.partition_schemes AS d ON a.[partition_scheme_id] = d.data_space_id 
  15. ORDER BY c.[分區編號] 

  

 

  第二個視圖直接把NULL值忽略了

  根據***個視圖,我們畫出一個總結圖

  

 

  分析一下

  

 

  總結

  結論其實很清晰,分區列不要允許NULL,如果允許列,那么我們交換分區歸檔數據的時候就會有麻煩了,因為無法判斷分區列是NULL值的那些數據行是老數據還是新數據。

責任編輯:honglu 來源: 博客園
相關推薦

2010-11-10 14:47:11

SQL Server創

2021-01-18 05:23:14

SQL 排序Server

2010-07-19 11:01:55

SQL Server

2010-09-28 11:48:36

SQL NULL值

2011-04-13 14:20:52

SQL Server主鍵

2010-09-13 11:09:34

SQL SERVER分

2011-07-20 16:03:06

SQL Server數分區表

2010-09-10 13:37:30

表分區SQL Server

2010-09-16 15:25:46

SqlServer20

2010-09-16 14:38:55

Sql server表

2010-09-16 16:06:01

sql server表

2010-11-10 14:35:17

SQL Server創

2010-10-19 16:40:34

sql server掛

2010-07-13 12:26:49

SQL Server

2010-07-23 14:11:18

SQL Server

2010-07-22 16:02:29

2011-04-18 10:13:15

SQL Server 自動化表分區

2011-05-19 14:40:33

SQL Server

2010-07-26 14:09:32

SQL Server

2022-09-13 08:33:05

SQLNULL三值邏輯
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91精品国产综合久久婷婷香蕉 | 国产精品久久久久久一区二区三区 | 亚洲国产成人精品久久 | 成人久久久久 | 久久精品| 午夜日韩 | 懂色av色香蕉一区二区蜜桃 | 99久久久久久久 | 国产精品久久久久久吹潮 | 国产精品免费在线 | 激情欧美一区二区三区中文字幕 | 精品视频一区二区三区在线观看 | 美国av毛片 | 精品日韩一区 | 欧美一级电影免费观看 | 一级中国毛片 | 91视频进入 | 国产免费一区二区三区 | 99tv| 91国内精品久久 | 北条麻妃av一区二区三区 | 国产精品久久二区 | 精品国产一区二区国模嫣然 | 国产精品一区二区久久 | 亚洲综合二区 | 国产精品久久久久久久久免费软件 | 成人免费视频网站在线看 | 欧美日韩高清在线观看 | 国产一区不卡 | 久色视频在线观看 | 国产综合精品一区二区三区 | 在线亚洲一区 | 美女在线一区二区 | 天天澡天天狠天天天做 | 精品www | 午夜激情小视频 | 欧美国产激情二区三区 | 黄色网址在线免费观看 | 中文字幕免费中文 | 九九久久在线看 | 天天玩天天干天天操 |