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

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 

http://www.xdnf.cn/news/8182.html

相关文章:

  • 6:OpenCV—图像滤波
  • 设置标签(tag)并推送到GitHub
  • 并发编程 之 Java内存模型、AQS详解:AQS设计思想、Unsafe
  • 基于自动编码器的图像融合方法
  • 腾讯2025年校招笔试真题手撕(一)
  • 一图胜千言:Typora中Mermaid图表语法全解析
  • Qwen3技术报告笔记
  • 《数据结构笔记二》:顺序表
  • 【技术追踪】ADDP:通过交替去噪扩散过程学习用于图像识别和生成的通用表示(ICLR-2024)
  • Java中static关键字深度解析:从入门到高阶实战
  • 碰一碰发视频源码搭建定制化开发详解,支持OEM
  • One-shot和Zero-shot的区别以及使用场景
  • 嵌入式STM32学习——串口USART 2.3(串口发送数据控制LED灯)
  • 一文读懂GRPC
  • Django的请求和响应+template模板
  • CentOS7/Ubuntu SSH配置允许ROOT密码登录
  • LeRobot的机器人控制系统(上)
  • 无人机避障——深蓝学院浙大栅格地图以及ESDF地图内容
  • BlazeMeter录制jmeter脚本
  • 2025年系统架构师---综合知识卷
  • FreeBSD14.2因为爆内存而导致Xfce4视窗被卡,桌面变黑色,只能看到鼠标在窗体中心,鼠标无反应,键盘无反应
  • 03_基础篇-NumPy(下):深度学习中的常用操作
  • deepseek调用
  • QT ui控件setEnabled(false) 作用
  • SpringBoot系列之OpenAI API 创建智能博客评论助手
  • 人工智能培训:解锁未来职场竞争力的核心路径与课程内容解析
  • 【JAVA基础】什么情况下可以直接使用类名.方法名调用方法?
  • 【VLNs篇】05:TGS-在无地图室外环境中使用视觉语言模型进行轨迹生成和选择
  • python实现web请求与响应
  • Java中创建线程的几种方式