sql server 为千万级数据量的表建立分区效果如何

1.数据库所在服务器信息

2.表数据量截图

declare @table_spaceused table (name nvarchar(100) ,rows int ,reserved nvarchar(100) ,data nvarchar(100) ,index_size nvarchar(100) ,unused nvarchar(100) ) 
insert into @table_spaceused (name,rows,reserved,data,index_size,unused ) exec sp_MSforeachtable @command1='exec sp_spaceused ''?''' 
select * from @table_spaceused order  by  rows desc

3.表索引截图

4.建立分区前查询数据所用时间

 4.1准备查询语句

查询3月26日至4月1日前的数据:查询3月份内的数据

select * from t_dd_qm_quality_collection_final where collection_time >='2022-03-26' and collection_time<'2022-04-01'

查询3月26日至4月11日前的数据:查询3、4月份内的数据

select * from t_dd_qm_quality_collection_final where collection_time >='2022-03-26' and collection_time<'2022-04-11'

查询3月26日至5月11日前的数据:查询3、4、5月份内的数据

select * from t_dd_qm_quality_collection_final where collection_time >='2022-03-26' and collection_time<'2022-05-11'

查询3月26日至6月11日前的数据:查询3、4、5、6月份内的数据

select * from t_dd_qm_quality_collection_final where collection_time >='2022-03-26' and collection_time<'2022-06-11'

4.2清除所有缓存

DBCC DROPCLEANBUFFERS

4.3重启sqlserver服务

4.4执行查询语句记录时间(毫秒),每次查询前清除缓存,重启服务器

  初期清除缓存重启服务后的CPU30%,内存47%。

  查询3月份内的数据 查询3、4月份内的数据 查询3、4、5月份内的数据(未测试) 查询3、4、5、6月份内的数据(未测试)
查询结果数据量 时间 峰值CPU 峰值内存 查询结果数据量 时间 峰值CPU 峰值内存 查询结果数据量 时间 峰值CPU 峰值内存 查询结果数据量 时间 峰值CPU 峰值内存
第一次 856150 209190 67 77 2160486 249617  65  78                
第二次 856150 229190 67 77 2160486 250946  89  78                
第三次 856150 228963 68 77 2160486 250230  77  77                
平均值 856150 222448 67.5 77 2160486 250264  77  77.7                
    22653 67 51   56160   80  59                
    22664 73 52    56230   89  59                
    22910 73 53   55890  71  58                
平均值                                

 

5.为表创建分区

5.1经查询表中最早的时间是2021-09月,最晚的时间是2022-06月。本表只留近90天内的数据,其余符合历史化条件的均已历史化。2022-03月前的数据有10万+条,故可以分4个区,3月份前一个区,3月份数据一个区,4月份数据一个区,5月份数据一个区,6月份及以后一个区。

5.2创建数据库文件组:选择数据库进入属性页面,选择文件组点击添加文件组,依次录入5个文件组名称,点击确定。

 

 5.3创建数据库文件:选择数据库进入属性页面,选择文件点击添加文件,依次录入5个文件名称并选择相应的文件组,点击确定。

 5.4创建分区:选择要创建分区的表,右键选择存储-->创建分区,进入创建分区向导。

5.4.1选择分区列:选择采集时间collection_time

 

5.4.2创建分区函数

5.4.3创建分区方案

 

 5.4.4映射分区范围选择左边界,文件组中依次选择原先创建的文件组,点击设置边界,开始日期输入20220301,结束日期输入20220601,日期范围选择每月,确定后会按月依次填充到边界一列中。之后点击下一步

预计存储控件按钮不要随便点,若表内数据量小还可以,计算出来不耗时,若表内数据量大会执行很长时间。

 

 5.4.5选择输出模板,表内数据量小可以立即执行,表内数据量大选择创建脚本,之后再编辑器内执行。我这里选择创建脚本。之后点击完成。

 

 5.4.6编辑器内点击执行,创建分区。1387万的数据,脚本方式执行创建分区耗时40分钟。

 6.建立分区后查询数据所用时间

 

posted @ 2022-06-26 10:59  单纯的桃子  阅读(318)  评论(0编辑  收藏  举报