當前位置:首頁 » 網頁前端 » 給表增加分區腳本
擴展閱讀
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分區