Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
(备注:range()指定数据库表中的某一字段作为数据存储到不同表空间的判断标准)
(备注:在最高的分区中,MAXVALUE被定义。MAXVALUE代表了一个不确定的值。这个值高于其它分区中的任何分区键的值, 也可以理解为高于任何分区中指定的VALUE LESS THEN的值,同时包括空值。) 3.以前的SQL查询语句不变,一样查询数据 (备注:查询数据时,不再全表扫面,只是根据条件扫描一个或多个表空间中的数据库表,所以查询性能会有很好的提升)
参考:https://www.2cto.com/database/201604/503199.html
事例:
create tablespace ADC_BACK_1 datafile "F:Oracle ablespacesADC_BACK_1.dnf" size 100M autoextend on next 100m maxsize 20480m extent management local;
create tablespace ADC_BACK_2 datafile "F:Oracle ablespacesADC_BACK_2.dnf" size 100M autoextend on next 100m maxsize 20480m extent management local;
create tablespace ADC_BACK_3 datafile "F:Oracle ablespacesADC_BACK_3.dnf" size 100M autoextend on next 100m maxsize 20480m extent management local;
create tablespace ADC_BACK_4 datafile "F:Oracle ablespacesADC_BACK_4.dnf" size 100M autoextend on next 100m maxsize 20480m extent management local;
create tablespace ADC_BACK_5 datafile "F:Oracle ablespacesADC_BACK_5.dnf" size 100M autoextend on next 100m maxsize 20480m extent management local;
create table MON_PROCESS_RECORD_BACK(
INFOID VARCHAR2(36),
DIC_FLOWTYPE_ID VARCHAR2(36),
START_TIME DATE,
END_TIME DATE,
IS_SUCCESS CHAR(1),
ERROR_CODE VARCHAR2(2000),
DEL_FLAG CHAR(1),
ID VARCHAR2(36) PRIMARY KEY,
DEALWAY CHAR(1),
DETAIL VARCHAR2(4000),
DIC_EB_PLATFORM_ID VARCHAR2(36),
STATE VARCHAR2(100),
INSTRUCTION_ID VARCHAR2(36),
INSTRUCTION_NUM VARCHAR2(4),
EBI_INFO_CODE VARCHAR2(50),
IS_DISPLAY VARCHAR2(1)
)
partition by range(EBI_INFO_CODE)(
partition part_01 values less than("201608100000000000000") tablespace ADC_BACK_1,
partition part_02 values less than("201609100000000000000") tablespace ADC_BACK_2,
partition part_03 values less than("201610100000000000000") tablespace ADC_BACK_3,
partition part_04 values less than("201611100000000000000") tablespace ADC_BACK_4,
partition part_05 values less than("201612300000000000000") tablespace ADC_BACK_5,
partition part_06 values less than(maxvalue) tablespace USERS
);
转移数据:
insert into MON_PROCESS_RECORD_BACK(
INFOID,
DIC_FLOWTYPE_ID,
START_TIME,
END_TIME,
IS_SUCCESS,
ERROR_CODE,
DEL_FLAG,
ID,
DEALWAY,
DETAIL,
DIC_EB_PLATFORM_ID,
STATE,
INSTRUCTION_ID,
INSTRUCTION_NUM,
EBI_INFO_CODE,
IS_DISPLAY
)
select
INFOID,
DIC_FLOWTYPE_ID,
START_TIME,
END_TIME,
IS_SUCCESS,
ERROR_CODE,
DEL_FLAG,
ID,
DEALWAY,
DETAIL,
DIC_EB_PLATFORM_ID,
STATE,
INSTRUCTION_ID,
INSTRUCTION_NUM,
EBI_INFO_CODE,
IS_DISPLAY
from MON_PROCESS_RECORD;
- 上一篇: oracle下查看某个表空间下的表数量
- 下一篇: 怎么查看oracle数据库数据量大小?