当前位置: 首页 > news >正文

SQLSERVER数据库表分区学习(未在项目上使用)

由于业务系统 TJ_TJJLMXB数据量达到亿级,高峰期对该表操作堵塞导致系统响应慢,所以想分区试下效果

首先也是网上查资料,然后自己动手尝试

总结后的步骤:

1.创建文件组

(SQLSERVER有个默认的文件组PRIMARY,对应的数据文件后缀是.mdf,后续新建的文件组对应的数据文件格式都是ndf的)

2.创建数据文件绑定文件组

绑定文件组后通过sqlserver manager studio可视化窗口查看一目了然 

3.创建分区函数

4.创建分区方案

5.创建表使用该分区方案

--1.创建文件组

--2019年及之前的数据1个文件组
ALTER DATABASE [bs_tjxt_binjiang2018]
ADD FILEGROUP [TJ_TJJLMXB_FLLES_2019]

--2020年1月1号的数据一个文件组
ALTER DATABASE [bs_tjxt_binjiang2018]
ADD FILEGROUP [TJ_TJJLMXB_FLLES_2020]

--2.创建数据文件关联文件组
ALTER DATABASE [bs_tjxt_binjiang2018]
ADD FILE
(NAME = N'TJ_TJJLMXB_FLLES_DATA_2019',FILENAME = N'F:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\TJ_TJJLMXB_FLLES_DATA_2019.ndf',SIZE = 3000MB, MAXSIZE=UNLIMITED,FILEGROWTH = 200MB )
TO FILEGROUP [TJ_TJJLMXB_FLLES_2019];

ALTER DATABASE [bs_tjxt_binjiang2018]
ADD FILE
(NAME = N'TJ_TJJLMXB_FLLES_DATA_2020',FILENAME = N'F:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\TJ_TJJLMXB_FLLES_DATA_2020.ndf',SIZE = 3000MB ,MAXSIZE=UNLIMITED, FILEGROWTH = 200MB )
TO FILEGROUP [TJ_TJJLMXB_FLLES_2020];

可视化窗口查看文件组 和文件 也可以sql查询

--3.创建分区函数 2019-12-31之前为1组(不包含2019-12-31)  2019-12-31后为一组(包含2019-12-31)
CREATE PARTITION FUNCTION PARTITION_FUNCTION_TJ_TJJLMXB( DATETIME )
AS RANGE LEFT
FOR VALUES( '2019-12-31')
--查询分区函数
SELECT * FROM sys.partition_functions;
--使用DROP PARTITION FUNCTION  xxxx语句删除分区函数

--查询分区函数
SELECT * FROM sys.partition_functions;

 
--4.创建分区方案 分区函数会把数据根据临界日期(2019-12-31)分到2个组 所以分区方案也要指定2个文件组
CREATE PARTITION SCHEME PARTITION_SCHEME_TJ_TJJLMXB
AS PARTITION PARTITION_FUNCTION_TJ_TJJLMXB
TO (TJ_TJJLMXB_FLLES_2019,TJ_TJJLMXB_FLLES_2020)
 --查询分区方案
SELECT * FROM sys.partition_schemes
--使用DROP PARTITION SCHEME xxxxx 语句删除分区方案

--5.创建表使用该分区方案(分区方案创建好是可多表复用的)
--先创建一张我们要分区的同样结构的表用于测试
CREATE TABLE [dbo].[TJ_TJJLMXB_TESTFQ01](
    [TJBH] [varchar](16) NOT NULL,
    [XMBH] [varchar](12) NOT NULL,
    [kettle_lastmodify] [datetime] NOT NULL
) ON PARTITION_SCHEME_TJ_TJJLMXB(kettle_lastmodify)

--.6.写入测试数据验证分区
insert into TJ_TJJLMXB_TESTFQ01(TJBH,XMBH,kettle_lastmodify)values('0000001','0001','2011-10-10 9:10:10');
insert into TJ_TJJLMXB_TESTFQ01(TJBH,XMBH,kettle_lastmodify)values('0000002','0002','2019-12-30 9:10:10');
insert into TJ_TJJLMXB_TESTFQ01(TJBH,XMBH,kettle_lastmodify)values('0000003','0003','2019-12-31 9:10:10');
insert into TJ_TJJLMXB_TESTFQ01(TJBH,XMBH,kettle_lastmodify)values('0000004','0004','2020-01-01 9:10:10');
insert into TJ_TJJLMXB_TESTFQ01(TJBH,XMBH,kettle_lastmodify)values('0000005','0005','2020-02-02 9:10:10');
--查询数据
select * from TJ_TJJLMXB_TESTFQ01;

--7.查看分区效果,可以看到2019-12-31号之前的数据在分区1,之后的数据在分区2 ,说明分区成功
SELECT $PARTITION.PARTITION_FUNCTION_TJ_TJJLMXB(kettle_lastmodify) AS 分区编号, COUNT(1) AS 记录数 
FROM TJ_TJJLMXB_TESTFQ01
GROUP BY $PARTITION.PARTITION_FUNCTION_TJ_TJJLMXB(kettle_lastmodify)


--查看分区效果
SELECT $PARTITION.PARTITION_FUNCTION_TJ_TJJLMXB(kettle_lastmodify) AS 分区编号, *
FROM TJ_TJJLMXB_TESTFQ01 

相关文章:

  • 地信GIS专业关于学习、考研、就业方面的一些问题答疑
  • HCIP-AI培养计划,成为新时代AI解决方案架构高级工程师
  • 【Dify学习笔记】:dify通过ollama加载DeepSeek-R1-32B模型无法加载!终于解决了!!
  • DL00786-基于RTDETR的水稻病害检测含完整数据集
  • C++函数封装和绑定
  • JWT了解
  • 有了CodeBuddy,10分钟上线MBTI测试网站
  • PiliPlus 非常好用的开源软件第三方B站哔哩哔哩 v1.1.3.35
  • upload-labs通关笔记-第18关文件上传之条件竞争
  • 文件操作和IO-3 文件内容的读写
  • QScrollArea内容增加后自动跳到底部
  • Python生成物理引擎的简单知识图谱
  • JavaScript 垃圾回收与内存泄漏
  • JavaScript中从原数组中删除某个元素
  • STM32 CAN CANAerospace
  • 使用 Docker 搭建 PyWPS 2.0 服务全流程详解
  • matIo库及.mat数据格式介绍
  • AI智能分析网关V4区域入侵检测算法:全功能覆盖,多场景守护安防安全
  • 【技术追踪】ADDP:通过交替去噪扩散过程学习用于图像识别和生成的通用表示(ICLR-2024)
  • 【Linux 学习计划】-- makefile
  • 拖拽式建站平台/做一个app软件大概要多少钱
  • 区域网站查询/淘宝店铺怎么推广和引流
  • 做移动网站优化优/个人网页制作教程
  • 专做洗衣柜的网站/怎么申请网址
  • 遵义哪里做网站/it培训机构哪个好一点
  • 沈阳三好街做网站公司/小时seo百度关键词点击器