麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > 文庫 > 正文

對分區表進行alter-switch時遇到的錯誤

2020-10-29 21:54:04
字體:
來源:轉載
供稿:網友
創建一個和目標表一樣定義的表;
在表上加上constraint以確保表的數據在目標分區里;
Alter table 源表 switch to 目標表 partition 分區號
其中分區號可以通過$partition.partion_func( column value)獲得
這個過程比insert select要快很多,因為不涉及到io,只需要修改元數據,該邊partition的onwer而已。

但是上述過程只適用于目標表的分區函數中目標分區已存在的情況。比如你定義了邊界為1,2,3的分區函數,那么4和5都會插入到第4個分區里。

所以我推薦使用這種提前定義好分區函數所有分區的方法,如果你要按天分區,你就先定義好1000個分區。這種方法比較簡單,不需要在加入數據時進行檢查,從而導致錯誤。

如果您一定要使用動態分區的話,在加入一個源表作為新的分區時,需要如下操作:

首先取得新加入的分區列的值,設為X;
通過sys.Partition_range_values和sys.partition_functions找到目標分區函數所有的邊界值;
進行如下的檢查:
在這里分界值屬于左邊分區還是右邊分區是有區別的,我們假設屬于左邊分區;
如果X存在于2步的邊界值集合中,那么恭喜你,不需做額外的操作;
如果X大于2步中最大的邊界,你不僅需要為X分裂出一個分區,還要保證小于X的數據都有自己分區。
每次加入分區時檢查已有的邊界值,如果不等于其中的任何一個,則以X為參數split, 并刪除目標表中分區列和X相同的數據。
像之前描述的步驟那樣switch源表到目標分區中。
如果在2步的時候,目標分區已經存在數據,alter ...switch語句就會失敗,原因是目標分區不為空。

可以理解為,switch操作是修改表的元數據,用新的分配單元替換原來的分配單元。如果原來的分配單元不為空,那么這次替換就會造成一些數據的丟失,從而破壞了數據的完整性,因此是不允許的。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产无区一区二区三麻豆 | 天天透天天狠天天爱综合97 | 国产亚洲精品成人 | 欧美成人一区二区视频 | 日本精品久久久久 | 国产精品久久久久久久娇妻 | 欧美大电影免费观看 | 激情小说区| hdbbwsexvideo | 国产日韩在线观看视频 | 久久精品一级 | 91精品观看91久久久久久国产 | 国产无区一区二区三麻豆 | 精品麻豆cm视频在线看 | 久久嗨 | 91国在线高清视频 | 久久久久久久久久久久久国产精品 | 中文字幕在线观看亚洲 | 久久精品79国产精品 | 国产精品成人免费一区久久羞羞 | 55夜色66夜色国产精品视频 | 成人激情久久 | 亚洲第一成人在线 | 免费成人| 性欧美xxxx免费岛国不卡电影 | 逼片视频 | 91网址在线观看 | 日本黄色免费观看视频 | 国产女同玩人妖 | 欧美黄成人免费网站大全 | 神马视频我不卡 | 免费观看黄色一级视频 | 一级毛片在线免费播放 | 国产chinesehd精品91 | 爱逼爱操综合网 | 成人444kkkk在线观看 | 国产亚洲综合一区二区 | 特级西西444www大精品视频免费看 | 久久伊人精品热在75 | 曰本三级日本三级日本三级 | 成人午夜免费观看 |