我創建了分區函數如下:
create partition function pf_month1(varchar(8))
as range left for values ('20120131','20120229','20120331','20120430','20120531','20120630','20120731','20120831','20120930','20121031','20121130')
但有一個問題,遇到跨年怎么處理?
如果到了2013年,所有的數據都會放在 最后一個分區里面,怎么處理?有沒有更好一點的分區函數,按年按月進行分區?
------解決方案--------------------
用ALTER PARTITION FUNCTION/SCHEME
參考
http://msdn.microsoft.com/zh-cn/library/ms186307.aspx
http://msdn.microsoft.com/zh-cn/library/ms190347.aspx
------解決方案--------------------
1.用每月1號做分區邊界比較好,省得判斷各月的天數.
2.分區是用來加快查詢的,但各分區最好是獨立的物理磁盤,放在同一個物理盤上,並不能增加許多性能.
3.如果按月分區,說明每月的數據量非常大,如果這樣,則滿一個月后修改分區函數即可,而不是一下子把所有分區都划分好.
4.如果滿一個月后,前面某些月的數據使用量不大,則可以合並,這樣只要把分區重新划分一下即可.
------解決方案--------------------
假定現在的分區邊界是 100 200 300 400
也就是
<100 200~300 300~400 >400
增加一個邊界是500的分區
-
SQL code
--指定下一個分區應用文件組.(如:PRIMARY) ALTER PARTITION SCHEME [customer_scheme] --分區架構 NEXT USED [PRIMARY] --指定分區分界點為 ALTER PARTITION FUNCTION customer_partFunc() --分區函數 SPLIT RANGE (500)
