sqlserver 如何按年按月創建分區函數



我創建了分區函數如下:
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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM