(精华)2020年10月16日 数据库调优 分库分表底层详解(分区)

该博客详细介绍了如何在SQL Server中创建和管理数据库文件组,包括创建数据库、添加文件组、创建表、执行读写分离以及进行分区操作。通过示例展示了如何使用存储过程动态创建文件组和文件,以及进行文件组的收缩操作,为数据库性能优化提供了基础操作指南。
摘要由CSDN通过智能技术生成

数据库层面(表分区,读写分离)

第一步:创建文件组,分别向文件组中添加文件

use master
go
 
if exists(select * from sys.databases where database_id = DB_ID('Test'))
drop database Test
--1.创建数据库
create database Test on(name =N'Test',filename=N'e:\test\test.mdf',size = 3MB,filegrowth = 1MB)log on(name = N'Test_log',filename = N'e:\test\test_log.ldf',size = 1MB,filegrowth = 1MB)
go
 
use Test 
go
 
--2.创建文件组
alter database Test
add filegroup fg_test_id_01
 
alter database Test
add filegroup fg_test_id_02
 
--3.创建文件
alter database Test
add file(name = N'f_Test_file_01_data',filename = N'e:\test\f_Test_file_01_data.ndf',size = 1MB,filegrowth = 1MB)to filegroup fg_test_id_01
 
alter database Test
add file(name = N'f_Test_file_02_data',filename = N'e:\test\f_Test_file_02_data.ndf',size = 1MB,filegrowth = 1MB)to filegroup fg_test_id_02
 
 
--4.创建表
create table aa(id int,cname varchar(1000)) on fg_test_id_01
go
 
--5.插入数据
insert into aa select 1,replicate('s',1000)
go 500
 
--6.查询数据
select * from aa
 
--7.创建聚集索引在 fg_test_id_02  --将表 从原来的文件组挪到 新的文件组
 
create clustered index pk_id on aa(id) with(online = on) on fg_test_id_02
go
 
--8.查看一下文件组的逻辑文件名
exec sys.sp_helpdb @dbname='Test'
 
--9.收缩一下fg_test_id_01文件组文件
dbcc shrinkfile(f_Test_file_01_data,1)
 
--10.可以删除聚集索引,也可以不删除
drop index pk_id on aa
 
--11.删除数据库
use master
go
drop database Test
 
 
---------------------------------------------------------------------------------------------------------------------------------------------------------------
--创建文件组及文件
use Test
go
alter PROCEDURE [dbo].[pro_CreateNextFileGroup]
@Database Varchar(50),
@Date Datetime,
@path varchar(100)
 AS
begin
Declare @Sql Varchar(8000),@NextMonth Varchar(6)
Set @NextMonth=Convert(Varchar(6),Dateadd(Month,1,@Date),112)
--创建文件组
Set @Sql='Use '+@Database+'
alter database '+@Database+'
add filegroup FG_'+@Database+'_yyyyMM'
 
Set @Sql=Replace(@Sql,'yyyyMM',@NextMonth)
Exec(@Sql)
 
--创建文件
Set @Sql='Use '+@Database+'
alter database '+@Database+'
add file(name = N''F_'+@Database+'_yyyyMM_data'',filename = N'''+@path+'\F_'+@Database+'_yyyyMM_data.ndf'',size = 1MB,filegrowth = 1MB)to filegroup FG_'+@Database+'_yyyyMM'
 
Set @Sql=Replace(@Sql,'yyyyMM',@NextMonth)
Exec(@Sql)
end
--执行过程
use Test
go
exec [pro_CreateNextFileGroup] 'Test','2016-05-01','e:\test'

第二步:选择数据库=》存储=》分区

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚公搬代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值