none
現有的Table切割資料表?? RRS feed

  • 問題

  • 大家好:

    由於當初需求分析時沒有想到單一Table資料量會這麼大(超過兩千萬筆,且持續增加中),
    現在想做Partition,
    有幾個問題:
    (1)因資料持續塞入,我只想維持半年份的資料(Table中包含一個Write_Time欄位),每兩個月分割成一個Partition,該如何寫Partition Function?我寫:
    CREATE PARTITION FUNCTION Test_Right_Partition (int) AS RANGE RIGHT
    FOR VALUES(DATEDIFF(M,WRITE_TIME,GETDATE())=4, DATEDIFF(M,WRITE_TIME,GETDATE())=2)
    結果頗析時不過...
    (2)上述作法以時間做為區隔,SQL Server會自動搬移資料嗎?我需要寫Task去刪掉資料嗎?
    (3)如果我想保存所有的資料,Partition Function該怎麼寫呢?

    謝謝大家.

    2009年4月22日 上午 07:23

解答

  • Sql will not move data for you, have to write your own code to switch partition and run it as scheduled sql job.
    2009年4月22日 下午 02:30
  • Here's our monthly partition function:

    CREATE

    PARTITION FUNCTION [pf_f_usage_monthly](tinyint) AS RANGE RIGHT FOR VALUES (0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B)
    2009年4月23日 下午 02:23

所有回覆

  • Sql will not move data for you, have to write your own code to switch partition and run it as scheduled sql job.
    2009年4月22日 下午 02:30

  • thanks for you reply.

    and,
    how about your answer for question 1?

    2009年4月23日 上午 05:37
  • Here's our monthly partition function:

    CREATE

    PARTITION FUNCTION [pf_f_usage_monthly](tinyint) AS RANGE RIGHT FOR VALUES (0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B)
    2009年4月23日 下午 02:23