博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
02.SQLServer性能优化之---水平分库扩展
阅读量:5986 次
发布时间:2019-06-20

本文共 2375 字,大约阅读时间需要 7 分钟。

汇总篇:

第一次引入文件组的概念:

上次说了其他的解决方案(),就是没有说水平分库,这次好好说下。

 

上次共享的第一份大数据,这次正好来演示一下水平分库

1.模拟部分数据

2.创建索引后,发现可以根据日期来分组

按数据量大致分一下

步入正轨

---------------------------------------------------------------------

GUI方法:

3.0创建文件组

添加文件到文件组

命令操作:

alter database BigData_TestInfo_PartialData add filegroup Info

alter database BigData_TestInfo_PartialData add file(name=N'TestInfo2006',filename=N'G:\SQLData\BigData_TestInfo2006.ndf') to filegroup Info

注意:BigData_TestInfo2006.ndf是数据库自己创建的,不需要自己手动创建(有些同志手动创建了,然后报错。。。。呃,有点哭笑不得了)

查询看看:select * from sys.filegroups

水平分区走起:一般就几步,1.创建分区函数 2.创建分区方案 3.创建分区表

GUI方法

分区函数

分区方案

上一张图有些人可能不懂,用PPT画张概念图

创建脚本

系统生成脚本:

use [BigData_TestInfo_PartialData]gobegin transactioncreate partition function [CreatedatePartitionFun](varchar(10)) as range right for values(N'2006-01-01', N'2007-01-01', N'2009-01-01', N'2012-01-01')create partition scheme [CreatedatePartitionScheme] as partition [CreatedatePartitionFun] TO ([Info], [Info], [Info], [Info], [primary])alter table [dbo].[Info] drop constraint [PK__Info__3214EC07B2FE10C8]alter table [dbo].[Info] add primary key nonclustered (	[Id] asc)with (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]set ansi_padding oncreate clustered index [ClusteredIndex_on_CreatedatePartitionScheme_636193166313125124] on [dbo].[Info](	[CreateDate])with (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [CreatedatePartitionScheme]([CreateDate])drop index [ClusteredIndex_on_CreatedatePartitionScheme_636193166313125124] on [dbo].[Info]commit transactiongo

 

命令方式创建(根据上面生成的命令逆推

创建分区函数和架构(方案)

create partition function CreatedatePartitionFun(varchar(10)) as range right for values(N'2006-01-01', N'2007-01-01', N'2009-01-01', N'2012-01-01')

create partition scheme CreatedatePartitionScheme as partition [CreatedatePartitionFun] TO ([Info], [Info], [Info], [Info], [primary])

 

创建分区表

尚未创建表的情况

已经创建了表(基本上都是这种情况)

主要就两步,把主键变为非聚集索引+创建分区聚集索引

alter table Info drop constraint PK__Info__3214EC064B338648

alter table Info add constraint PK_Info_Id primary key nonclustered (Id asc)

create clustered index IX_Info_CreateDate on Info(CreateDate) on CreatedatePartitionScheme(CreateDate)

 

测试:基本上是均匀分散在各个文件中,生产环境的时候可以把这些文件放各个磁盘

参考文章:

作者:
出处:
打赏:
18i4JpL6g54yAPAefdtgqwRrZ43YJwAV5z
本文版权归作者和博客园共有。欢迎转载,但必须保留此段声明,且在文章页面明显位置给出原文连接!
你可能感兴趣的文章
win7 安装mac
查看>>
不知道如何设定高度
查看>>
nagios配置文件详解
查看>>
wireshark
查看>>
深入查询表达式
查看>>
MySQL数据库优化、架构
查看>>
克隆虚拟机
查看>>
列表、元组、字典深入学习
查看>>
网上多功能视频会议系统是即时通讯未来的主流
查看>>
SSH整合cxf 发布web Service
查看>>
iBatis 简单介绍及基础入门
查看>>
shell 用telnet检查服务端口是否打开 【高效】
查看>>
mime导致zabbix web页面css样式不能显示的问题
查看>>
jQuery 定时局部刷新(setInterval)方法总结
查看>>
手工启动oracle EM
查看>>
CSS实例:图片导航块
查看>>
如何让PL/SQL Developer记住密码?
查看>>
数据库事务管理
查看>>
jq插件
查看>>
PHP判断变量是否为整型
查看>>