当前位置:首页 » 网页前端 » 给表增加分区脚本
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

给表增加分区脚本

发布时间: 2022-05-15 04:03:22

㈠ 如何对一个已经存在的SQL Server表分区

有两种方法可以实现对一个表分区.一是创建一个新的标识为分区表的表(你可参照此步骤),然后把数据复制到这张新表,再对这两张表分别改名.或者,像我写在下面的,通过重建或创建一个聚集索引来达到分区一个表.
一个SQL Server表和数据进行分区示例
--Table/Index creation
CREATE TABLE [dbo].[TABLE1]
([pkcol] [int] NOT NULL,
[datacol1] [int] NULL,
[datacol2] [int] NULL,
[datacol3] [varchar](50) NULL,
[partitioncol] datetime)
GO
ALTER TABLE dbo.TABLE1 ADD CONSTRAINT PK_TABLE1 PRIMARY KEY CLUSTERED (pkcol)
GO
CREATE NONCLUSTERED INDEX IX_TABLE1_col2col3 ON dbo.TABLE1 (datacol1,datacol2)
WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON [PRIMARY]
GO
-- Populate table data
DECLARE @val INT
SELECT @val=1
WHILE @val < 1000
BEGIN
INSERT INTO dbo.Table1(pkcol, datacol1, datacol2, datacol3, partitioncol)
VALUES (@val,@val,@val,'TEST',getdate()-@val)
SELECT @val=@val+1
END
GO
通过查看sys.partitions系统视图,上面的代码创建了一个传统的单分区表.
SELECT o.name objectname,i.name indexname, partition_id, partition_number, [rows]
FROM sys.partitions p
INNER JOIN sys.objects o ON o.object_id=p.object_id
INNER JOIN sys.indexes i ON i.object_id=p.object_id and p.index_id=i.index_id
WHERE o.name LIKE '%TABLE1%'

objectname

indexname

partition_id

partition_number

rows

TABLE1 PK_TABLE1 72057594042712064 1 999
TABLE1 IX_TABLE1_col2col3 72057594042777600 1 999

创建已分区的SQL Server表
为了创建一个分区表,需要先创建一个分区函数和分区方案. 下面的示例中,将通过datatime字段对一个表分区. 这里是创建这些对象与在系统视图中查看这些元数据的代码.
CREATE PARTITION FUNCTION myDateRangePF (datetime)
AS RANGE RIGHT FOR VALUES ('20110101', '20120101','20130101')
GO
CREATE PARTITION SCHEME myPartitionScheme
AS PARTITION myDateRangePF ALL TO ([PRIMARY])
GO
SELECT ps.name,pf.name,boundary_id,value
FROM sys.partition_schemes ps
INNER JOIN sys.partition_functions pf ON pf.function_id=ps.function_id
INNER JOIN sys.partition_range_values prf ON pf.function_id=prf.function_id
现在我们有一个分区方案,可对表进行分区操作. 既然我们想通过聚集索引来对一个创建了聚集索引的表进行分区,我们需要先删除掉这个索引并通过一个非聚集索引重建这个约束. 若这张表没有聚集索引,我们可忽略这一步,直接执行创建聚集索引语句. 类似地,若有一个聚集索引创建在分区字段上,我们可执行带DROP_EXISTING的创建聚集索引语句. 最后,若关注于执行此任务时数据库停止服务时间并且你使用的是SQL Server企业版本,可通过创建索引的ONLINE=ON选项来使数据库的停止服务时间最小. 记住,在使用ONLINE选项重建索引时,你可能会看到一些性能降低的现象. 这里是一些可能会乃至的脚本.
ALTER TABLE dbo.TABLE1 DROP CONSTRAINT PK_TABLE1
GO
ALTER TABLE dbo.TABLE1 ADD CONSTRAINT PK_TABLE1 PRIMARY KEY NONCLUSTERED (pkcol)
WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
CREATE CLUSTERED INDEX IX_TABLE1_partitioncol ON dbo.TABLE1 (partitioncol)
WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON myPartitionScheme(partitioncol)
GO
在这些语句结束后,我们可再次查看sys.partitions系统视图(看上面的代码)并确认我们的表有4个分区.

objectname

indexname

partition_id

partition_number

rows

TABLE1 IX_TABLE1_partitioncol 72057594043039744 1 233
TABLE1 IX_TABLE1_partitioncol 72057594043105280 2 365
TABLE1 IX_TABLE1_partitioncol 72057594043170816 3 366
TABLE1 IX_TABLE1_partitioncol 72057594043236352 4 35
TABLE1 IX_TABLE1_col2col3 72057594043301888 1 999
TABLE1 PK_TABLE1 72057594043367424 1 999
SQL Server表和数据示例清除
--cleanup
DROP TABLE TABLE1
DROP PARTITION SCHEME myPartitionScheme
DROP PARTITION FUNCTION myDateRangePF

㈡ oracle分区表如何每月自动增加分区

分区属于表结构,不能自动增加分区,你可以定义表结构时就建好12个分区,以月份为分区字段,这样不同月份的数据就会自动落到不同的分区里。

㈢ oracle表分区的创建、删除、备份

你的意思是每天都要对这个大表进行分区还是对该大表进行一次分区?
如果是是每天建立一张表的话linux下可以用shell脚本来定时实现,表名可以用大表名称+日期来建立哈
windows下好象也有个定时的程序,不过不太会用。

㈣ 如何利用diskpart命令+脚本文件实现对分区的操作

!! 删除分区的脚本: select disk 0 select partition 编号n delete partition 把上面的三行保存在文本里xx.txt 编号n是具体你要删除的分区 执行diskpart xx.txt 就可以了!! 必须启动到“带命令提示符的安全模式”下,输入Diskpart。不然没有有效的!!! 调整分区大小用diskpart好像办不到:) 下面是创建分区: 输入list disk显示已安装的硬盘,再输入“select disk 0”选择这个硬盘(也可称为为该硬盘设置焦点属性)。然后输入“create partition primary”创建主分区 create partition primary的语法是: create partition primary [size=N] [offset=N] [ID={Byte | GUID}] [align=N] [noerr] 该分区不接收驱动器号。必须使用 assign 命令为该分区分配一个驱动器号。 删除分区:输入“select partition 编号n”使分区n具有焦点属性,再输入"delete partition"即可删除该分区。 设置主分区: 先用“select partition 编号n”使其具有焦点属性再输入命令active即可。最后输入Exit,退出 Diskpart.exe 实用工具还包含磁盘管理管理单元支持的一组操作。不过,Diskpart.exe 操作与其他磁盘管理管理单元功能不同,不能禁止您在无意中执行可能导致数据丢失的操作,而是允许显式控制分区和卷。因此,建议您小心使用这些 Diskpart.exe 操作。 Diskpart.exe的所有的命令都可以保存到文本后执行脚本的操作 Diskpart.exe 脚本文件文件名希望对你有帮助:)

㈤ oracle表分区问题 做过数据库表分区的高手请进,非常感谢

1、可以采用子分区方式,根据A字段分区后再根据B或C字段进行子分区,比如range-list分区,可以网上搜索复合分区相关知识
2、分区会造成表结构变化,索引需要重建,一般建本地索引和全局索引,网上搜索分区表索引等知识
3、看执行计划,比如你对A字段进行了分区,where条件中用了A字段,执行计划中可以看到分区开始和分区停止,基数也会变低 也可以加partition或者subpartition来查4、如果字段A经常做=且相同数很少,则用list分区;如果字段A经常做>,>=,<,<=之类的用range分区