SQL表分区之常规操作分区

摘要:
四个分割点就能产生5个区间段,我们把每个区间段的数据存入一个文件组。目的是为了把分区函数产生的分区映射到文件数据组里。执行这段SQL,没报错的话就大功告成了.总结:分区存储提高了数据库的性能,被分区存储的数据物理上是多个文件,但逻辑上任然是一个表,对表的任何操作都跟没分区之前一样。插入、删除、查询、更新等操作的时候,数据库会自动为你找到对应的分区,然后执行操作。

新建一个数据库

SQL表分区之常规操作分区第1张

2)新增的时候添加几个文件组

SQL表分区之常规操作分区第2张

3)回到“常规”选项卡,添加数据库文件

SQL表分区之常规操作分区第3张

看到用红色框框起来的地方没?上一步中建立的文件组在这里就用上了。再看后面的路径,我把每一个文件都单独放在不同的磁盘上,而且最好都是单独的放在不同的物理盘上,这样会大大提高数据的性能。 点击“确定”数据库就算创建完成了。

4)接下来要做的是建立一个分区行数,SQL语句如下:大家学习的时候最好不要直接COPY,动手把它抄一遍也好。

create partition function PartFuncForExample(Datetime)
as Range Right for Value('20180101','20190101','20200101','20210101')

这里我准备用表中的某个时间字段作为分区的条件,当然你也可以用其他的,比如INT之类,只要好分段的都可以。

这里注意 Right 关键字,意思就是当记录的时间(在下面会被指到表的某个字段)大于等于20000101的时候,数据会被分到下一个区间,比如2000年1月1号之前的数据会被分到一区,包含2000年1月1号和之后的数据会被分到二区,以此类推。Right 也可以使用Left替代,意思同上类似。另外,上面我定义了四个分割点,这四个分割点是根据我们刚刚创建的文件组来决定的。四个分割点就能产生5个区间段,我们把每个区间段的数据存入一个文件组。

正确执行上述语句后你可以在数据里找到以“PartFuncForExample”命名的分区函数,如下图

SQL表分区之常规操作分区第4张

5)把分区函数建立好以后,我们再来建立分区方案。目的是为了把分区函数产生的分区映射到文件数据组里。分区函数是告诉数据库如何分区数据,而分区方案是告诉数据库如何把已分区的数据存到哪个文件组里。下面我来创建分区方案。

Create Partition Scheme PartSchForExample //创建一个分区方案+分区方案名称

As Partition PartFuncForExample      //目的为了 分区函数PartFuncForExample

To

(

PRIMARY, //文件组名                 

Partition1, //文件组名

Partition2, //文件组名

Partition3, //文件组名

Partition4 //文件组名

)

正确执行后能在分区方案中看到,如下图

SQL表分区之常规操作分区第5张

6)马上就快要大公告成了,下面我们来建立要分区存储的表,该表的数据理论上应该是非常非常多的,百万级别的记录以上而且基本上是不更新的。要不然建立分区存储就没多大意义了。

Create Table UserTst_Part(

[ID] [int] Identity(1,1) not null,

[Name] [nvarchar](50) not null,

[CreateDate] [DateTime] not null //用来进行分区

) On PartSchForExample([CreateDate]) //上面提到的指定分区字段就是这里指定的了。

SQL表分区之常规操作分区第6张

执行这段SQL,没报错的话就大功告成了.

总结:

分区存储提高了数据库的性能,被分区存储的数据物理上是多个文件,但逻辑上任然是一个表,对表的任何操作都跟没分区之前一样。插入、删除、查询、更新等操作的时候,数据库会自动为你找到对应的分区,然后执行操作。另外的话 把多个数据文件、日志文件都分别部署在不同的高性能物理盘上,也能大大提高性能.

免责声明:文章转载自《SQL表分区之常规操作分区》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MySQL联合多表更新和删除实现Java客户端上传文件与Java服务端接收文件下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C#使用SqlSugar操作数据库导致的问题:托管调试助手“FatalExecutionEngineError”:运行时遇到了 错误。此错误的地址为。。。。

使用SqlSugar操作数据一定要注意: 对象的属性类型和数据库的字段类型要保持一致 对象的属性类型和数据库的字段类型要保持一致 对象的属性类型和数据库的字段类型要保持一致 本人基础太差了,这个小问题我从下午2点一致排错了23:00,终于解决了。 1,SqlSugar操作数据的代码 public class TighteningResultServi...

sqlserver 文件与文件组的使用和优化

文件和文件组填充策略    文件组对组内的所有文件都使用按比例填充策略。当数据写入文件组时,SQL Server 数据库引擎按文件中的可用空间比例将数据写入文件组中的每个文件,而不是将所有数据都写入第一个文件直至其变满为止。然后再写入下一个文件。例如,如果文件 f1 有 100 MB 可用空间,文件 f2 有 200 MB 可用空间,则从文件 f1...

用navicate 连接本地数据库提示用户名/口令无效

1、在用navicate连接本地的oracle数据库时,试了oracle几个默认的用户名和密码,但是当我输入时,却提示用户名/口令无效。所以按照网上的办法,cmd,输入了以下命令,修改了几个用户的用户密码。 再次用admin连接即可 2、文件--新建--用户,建立admin用户 3、在新建的表里插入数据时,提示:对表空间‘USERS’无权限。 解决办法...

oracle11g数据库导入、导出操作

一、在linux系统中导入数据库。 1.linux中先输入 su - oracle下切换到oracle用户。然后以sysdba打开sqlplus:sqlplus / as sysdba 然后创建表空间和用户如下2.首先新建用户和表空间(表空间大小和自增大小按自己需求调整):新建表空间和临时表空间create tablespace XXX_DATAloggi...

InnoDB关键特性之double write

# 脏页刷盘的风险 两次写的原理机制   1、解决问题   2、使用场景   3、doublewrite的工作流程   4、崩溃恢复 # doublewrite的副作用   1、监控doublewrite负载   2、关闭doublewrite场景 一、脏页刷盘风险 关于IO的最小单位:   1、数据库IO的最小单位是16K(MySQL默认,orac...

数据库连接,事务以及Java线程的关系

0. 前言 Spring作为Java框架王者,当前已经是基础容器框架的实际标准。Spring 除了提供了IoC、AOP特性外,还有一个极其核心和重要的特性:数据库事务。事务管理涉及到的技术点比较多,想完全理解需要花费一定的时间,本系列《Spring设计思想-事务篇》将通过如下几个方面来阐述Spring的数据库事务: 数据库连接java.sql.Conne...