標籤:
我建立了分區函數如下:
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)
sqlserver 如何按年按月建立分區函數