日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql表在线转成分区表_11g普通表在线转换分区表

發布時間:2025/3/8 数据库 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql表在线转成分区表_11g普通表在线转换分区表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本帖最后由 燈和樹 于 2016-5-4 14:58 編輯

由于業務系統數據量增大,對其用戶表在線完成分區表轉換過程,記錄如下,11g數據庫支持。創建過渡分區表

根據USER_ID創建分區表

CREATE TABLE SDP_SMECD.TEST_T_USER_ID

(

USER_ID? ?? ?? ?? ?NUMBER(13) not null,

SUBSCRIBER_ID? ?? ?VARCHAR2(100),

SMARTCARD_ID? ?? ? VARCHAR2(100),

TVCODE? ?? ?? ?? ? VARCHAR2(32),

STB_SEQID? ?? ?? ? NUMBER(13),

PASSWORD? ?? ?? ???VARCHAR2(20),

REGION_CODE? ?? ???VARCHAR2(32),

USER_CODE? ?? ?? ? VARCHAR2(100) not null,

USER_NAME? ?? ?? ? VARCHAR2(200),

USER_ALIAS? ?? ?? ?VARCHAR2(100),

REGISTER_TIME? ?? ?DATE,

STATUS? ?? ?? ?? ? VARCHAR2(2) not null,

TOKEN? ?? ?? ?? ???VARCHAR2(32),

BUSINESS_AREA_CODE VARCHAR2(8),

SERV_TYPES? ?? ?? ?CHAR(10) not null,

CREDIT_GRADE? ?? ? VARCHAR2(2),

CREDIT? ?? ?? ?? ? NUMBER(8),

USER_LEVEL? ?? ?? ?VARCHAR2(2),

PAY_TYPE? ?? ?? ???NUMBER(2),

REMAIN_CREDIT? ?? ?NUMBER(8),

USER_CLASS? ?? ?? ?NUMBER(2) not null,

STB_SN? ?? ?? ?? ? VARCHAR2(32),

IMS_ACCOUNT? ?? ???VARCHAR2(20),

BIND_USER_ID? ?? ? NUMBER(13),

USER_TYPE? ?? ?? ? NUMBER(2),

USER_OWNER? ?? ?? ?NUMBER(2),

UPDATE_TIME? ?? ???DATE,

BOSS_AREACODE? ?? ?VARCHAR2(15),

VIDEO_TYPE? ?? ?? ?VARCHAR2(150)

)

PARTITION by RANGE(user_id)

INTERVAL (2000000)

(

PARTITION TEST_T_USER_UPT_PARTP1 VALUES LESS THAN (3877397)

tablespace TS_TEST_BIG_SEGMENT

pctfree 20? ? ---增加pctfree,表update較頻繁,故pctfree加大,默認為10

)

tablespace TS_TEST_BIG_SEGMENT

pctfree 20;---增加pctfree在線轉換普通表為分區表

exec dbms_redefinition.can_redef_table('SDP_SMECD','TEST_T_USER');

exec dbms_redefinition.start_redef_table('SDP_SMECD', 'TEST_T_USER', 'TEST_T_USER_ID');

--220s

--如果start成功不需要執行abort

exec dbms_redefinition.abort_redef_table('SDP_SMECD', 'TEST_T_USER', 'TEST_T_USER_ID');

exec dbms_redefinition.sync_interim_table('SDP_SMECD', 'TEST_T_USER', 'TEST_T_USER_ID');? ?--14s

exec dbms_redefinition.finish_redef_table('SDP_SMECD', 'TEST_T_USER', 'TEST_T_USER_ID'); -1s創建分區表的索引創建全局分區主鍵

alter table SDP_SMECD.TEST_T_USER

add constraint PK_TEST_T_USER_USERID primary key (USER_ID)

using index local

tablespace TS_TEST_BIG_SEGMENT

pctfree 10;創建非前綴本地分區

create index??SDP_SMECD.IND_TEST_T_USER_UPT ON SDP_SMECD.TEST_T_USER(update_time) local

tablespace TS_TEST_BIG_SEGMENT

pctfree 20;

select /*+index(seg IDX_USER_UPDATE_TIME)*/

seg.*

from SDP_SMECD.TEST_T_USER seg

where update_time > sysdate - 130

and update_time < sysdate - 100;

注意:提示執行索引的語句中必須使用表的別名

索引名前不需要加模式

select /*+index(seg IDX_USER_UPDATE_TIME)*/

seg.*

from SDP_SMECD.T_USER seg

where update_time > sysdate - 130

and update_time < sysdate - 100;

分區表update_time索引和普通表的update_time索引I/O吞吐率相差無幾。

而且如果在DATE日期上面創建索引,范圍稍微大點,數據庫會默認選擇全表掃描。

總結

以上是生活随笔為你收集整理的mysql表在线转成分区表_11g普通表在线转换分区表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。