表分区常用脚本

use SalesDB1
go

-- 查看表是否已经分区
SELECT *
FROM sys .tables AS t
JOIN sys .indexes AS i
    ON t .[object_id] = i .[object_id]     AND i .[type] IN ( 0,1 )
JOIN sys .partition_schemes ps
    ON i .data_space_id = ps .data_space_id
WHERE t .name = ‘table‘ ; -- 只加表名不需要加上架构名
GO

-- 查询库中的那些表有分区
select  tbl .name
from    sys .partition_functions pf
join    sys .partition_schemes ps on pf. function_id = ps. function_id
join    sys .indexes idx on idx. data_space_id = ps. data_space_id and idx.index_id >1
join    sys .tables tbl on idx. object_id = tbl. object_id
order by tbl. name

-- 确定已经分区的表的列:
SELECT
    t.[object_id] AS ObjectID
    , t .name AS TableName
    , ic .column_id AS PartitioningColumnID
    , c .name AS PartitioningColumnName
FROM sys .tables AS t JOIN sys.indexes AS i
    ON t .[object_id] = i .[object_id]    AND i .[type] <= 1 -- clustered index or a heap
JOIN sys .partition_schemes AS ps
    ON ps .data_space_id = i .data_space_id
JOIN sys .index_columns AS ic
    ON ic .[object_id] = i .[object_id]
    AND ic .index_id = i .index_id     AND ic .partition_ordinal >= 1 -- because 0 = non-partitioning column
JOIN sys .columns AS c
    ON t .[object_id] = c .[object_id]     AND ic .column_id = c .column_id
WHERE t .name = ‘Table‘ ;
GO

-- 每个分区的边界值
SELECT t .name AS TableName , i .name AS IndexName , p .partition_number, p.partition_id , i .data_space_id, f. function_id, f.type_desc , r.boundary_id , r .value AS BoundaryValue
FROM sys .tables AS t
JOIN sys .indexes AS i
    ON t .object_id = i .object_id
JOIN sys .partitions AS p
    ON i .object_id = p .object_id AND i .index_id = p .index_id
JOIN  sys .partition_schemes AS s
    ON i .data_space_id = s .data_space_id
JOIN sys .partition_functions AS f
    ON s .function_id = f .function_id
LEFT JOIN sys. partition_range_values AS r
    ON f .function_id = r .function_id and r .boundary_id = p.partition_number
WHERE t .name = ‘Table‘ AND i.type <= 1
ORDER BY p. partition_number;

select * from sys.filegroups    -- 查看数据库的文件组
select * from sys.sysfiles        -- 查看数据库文件
select * from sys.partition_functions        -- 查看分区函数
select * from sys.partition_range_values    -- 边界值
select * from sys.partition_schemes            --分区架构

-- 添加文件组,并指定文件组的文件
ALTER DATABASE [Data Partition DB2]ADD FILEGROUP  [Data Partition DB FG5]
ALTER DATABASE [Data Partition DB2]ADD FILE(NAME=‘Data Partition DB FG5‘,
FILENAME=‘D:\Database\Data Partition DB FG5.ndf‘) TO FILEGROUP [Data Partition DB FG5];

-- 添加分区函数,及分区架构
alter partition scheme ps_OrderDate  next used [FG4]
alter partition function  pf_OrderDate() split range (‘2005/01/01‘)

--删除分区又称合并分区,简单讲就是两个分区的数据进行合并,比如我们想合并年的分区和年的分区到一个分区,我们可以用如下的代码:
alter partition function  pf_OrderDate() merge range (‘2003/01/01‘)

表分区常用脚本,布布扣,bubuko.com

时间: 2025-01-03 22:21:06

表分区常用脚本的相关文章

SQL脚本整理系列一 表分区

表分区的目的: 1.把历史数据放到另外一个表里面 可以提高查询效率 当然如果经常查询历史数据和新数据的合并结果集这样做就大大的不好了 2.通过把一个表放到不同的文件,不同的文件再存储到不同的磁盘列阵中,可以提高IO速度   CPU比硬盘快多了 3.提高可用性,一个磁盘坏了,另外一个磁盘上面的文件还能用 这个对我意义不大 4.便于备份 只需要做一个分区的备份就可以了,比如云服务端,数据量比较大的就4个表单,把这四个表放在一个文件里面这样每天备份基本不花什么时间,还原也比较方便,这4个表的数据丢了意

Inno Setup的常用脚本

Inno Setup的常用脚本 分类: VC++神奇理论 2012-12-06 10:07 3234人阅读 评论(2) 收藏 举报 安装不同的目录: [Files] Source: "我的程序\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs Source: "我的程序\*"; DestDir: {cf}\我的程序; Flags: ignoreve

MySQL 数据库分表分区

博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持!一.分表 为什么要分表? 我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈. 什么是分表? 分表是将一个达标按照一定的规则分解成多张具有独立存储空间的实体表,每个表都对应三个文件,.MYD数据文件..MYI索引文件..frm表结构文件.这些表可以分

MySQL的表分区

一.什么是表分区通俗地讲表分区是将一大表,根据条件分割成若干个小表.mysql5.1开始支持数据表分区了.如:某用户表的记录超过了600万条,那么就可以根据入库日期将表分区,也可以根据所在地将表分区.当然也可根据其他的条件分区. 二.为什么要对表进行分区为了改善大型表以及具有各种访问模式的表的可伸缩性,可管理性和提高数据库效率. 分区的一些优点包括:      1).与单个磁盘或文件系统分区相比,可以存储更多的数据.      2). 对于那些已经失去保存意义的数据,通常可以通过删除与那些数据有

oracle表分区详解(按天、按月、按年等)

分区表的概念:  当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表. 分区表的优点: 1)   改善查询性能:对分区对象的查询可以仅搜索自己关心的分区,提高检索速度. 2)   增强可用性:如果表的某个分区出现故障,表在其他分区的数据仍然可用: 3)   维护方便:如果表的某个分区出现故障,需要修复数据,只修复

mysql数据库分表分区

防伪码:博观而约取,厚积而薄发 为什么要分表和分区? 我们的数据库数据越来越大,随之而来的是单个表中数据太多.以至于查询书读变慢,而且 由于表的锁机制导致应用操作也搜到严重影响,出现了数据库性能瓶颈. mysql 中有一种机制是表锁定和行锁定,是为了保证数据的完整性.表锁定表示你们都不能 对这张表进行操作,必须等我对表操作完才行.行锁定也一样,别的 sql 必须等我对这条数 据操作完了,才能对这条数据进行操作.当出现这种情况时,我们可以考虑分表或分区. 1.分表 什么是分表? 分表是将一个大表按

zabbix进行数据库备份以及表分区

由于测试环境上面使用的zabbix服务器配置比较低,经常会遇到性能瓶颈(主要是数据库和磁盘I/O等),于是倒逼我使用了一些方式来缓解这些问题. 主要是以前使用的那个备份数据库的脚本是对zabbix数据库进行全备的,使用的又是mysql自带的工具mysqldump,当数据量大了之后进行全备所花的时间比较长,这样将会造成数据库的锁读...从而使zabbix服务以为mysql死掉了,产生一大堆的报警. 后来发现原来造成数据库数据量大量增加的是zabbix数据库中的一些存储数据的大表导致的.于是备份数据

SQL 表分区

表分区,可提高大数据量表的查询效率.分区涉及的知识点有: 一,创建文件组和文件: 二,创建分区函数: 三,创建分区方案: 四,对表分区: 五,合并分区表. 一,创建文件组和文件.可视化界面创建如下图,代码创建这里不讲. 二,创建分区函数.分区方案.点击表->存储->创建分区.例如分为三个区,80后,90后,2000后面出生的所有人如下: 下一步,直到完成后,自动生成脚本,执行完,对表分区已经完成. 三,合并分区表.例如,将80.90后合并,只需要2个分区. 合并之前,80后有2万数据,剩下8万

Oracle 表分区

从以下几个方面来整理关于分区表的概念及操作: 表空间及分区表的概念 表分区的具体作用 表分区的优缺点 表分区的几种类型及操作方法 对表分区的维护性操作 1.表空间及分区表的概念 表空间: 是一个或多个数据文件的集合,所有的数据对象都存放在指定的表空间中,但主要存放的是表, 所以称作表空间. 分区表: 当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区.表进行分区后,逻辑上表仍然是一张完整的表,只是将表中的数据在物理上存放到多个表空间(物理文件上),