版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/QQ578473688/article/details/54561397
思路1:采用备份表
备份表中存储不活跃的数据eg:只有查询操作的数据(数据的部分属性字段不再更改)且查询次数也较少;
备份表可以是一张或者多张备份表,若采用多张备份表,则定期创建备份表(备份表的命名要规范,可以考虑使用原表名称+时间戳命名)
采用多张备份表:定期创建一个备份表(备份一定期间范围内的数据,多张备份表采用联合查询)
多张备份表时可以使用视图对多个备份表进行联合查询。
是否采用多张备份表是基于总的数据量的大小+Oracle数据库对单张表存储数据的支持。
思路2:Oracle数据库采用分区表(物理磁盘上存储在不同的位置,逻辑上仍为一张表)
当表中的数据量不断增大,查询数据的速度就会变慢,应用程序的性能就会下降,这时就应该考虑对表进行分区。表进行分区后,逻辑上表仍然是一张完整的表,
只是将表中的数据在物理上存放到多个表空间(物理文件上),这样查询数据时,不至于每次都扫描整张表。
从应用程序的角度来看,分区后的表与非分区表完全相同,使用 SQL DML 命令访问分区后的表时,无需任何修改。
使用分区表操作步骤:
1.创建多个表空间:(备注:ADC_BACK_1 、ADC_BACK_2、ADC_BACK_3、USERS 为表空间名称,datafile后面指定了表空间的物理磁盘存储路径)
create tablespace ADC_BACK_1 datafile 'D:\OracleBack\ADC1.dnf' size 500M;
create tablespace ADC_BACK_2 datafile 'D:\OracleBack\ADC2.dnf' size 500M;
create tablespace ADC_BACK_3 datafile 'D:\OracleBack\ADC3.dnf' size 500M;
create tablespace USERS datafile 'D:\OracleBack\ADC4.dnf' size 500M;
2.一次性在不同的表空间创建数据库表(同时指定表字段、数据存储到哪一表空间的判断标准)如下:

(备注:range()指定数据库表中的某一字段作为数据存储到不同表空间的判断标准)

(备注:此处在4个不同的表空间分别创建一张表,4张表的结构相同,以后会根据不同的时间产生的数据存储在不同的表空间的表中)
 
(备注:在最高的分区中,MAXVALUE被定义。MAXVALUE代表了一个不确定的值。这个值高于其它分区中的任何分区键的值,
也可以理解为高于任何分区中指定的VALUE LESS THEN的值,同时包括空值。)
3.以前的SQL查询语句不变,一样查询数据
(备注:查询数据时,不再全表扫面,只是根据条件扫描一个或多个表空间中的数据库表,所以查询性能会有很好的提升)
 
参考:https://www.2cto.com/database/201604/503199.html

事例:

create tablespace ADC_BACK_1 datafile
'F:\Oracle\tablespaces\ADC_BACK_1.dnf' size 100M autoextend on next 100m
maxsize 20480m extent management local;
create tablespace ADC_BACK_2 datafile
'F:\Oracle\tablespaces\ADC_BACK_2.dnf' size 100M autoextend on next 100m
maxsize 20480m extent management local;
create tablespace ADC_BACK_3 datafile
'F:\Oracle\tablespaces\ADC_BACK_3.dnf' size 100M autoextend on next 100m
maxsize 20480m extent management local;
create tablespace ADC_BACK_4 datafile
'F:\Oracle\tablespaces\ADC_BACK_4.dnf' size 100M autoextend on next 100m
maxsize 20480m extent management local;
create tablespace ADC_BACK_5 datafile
'F:\Oracle\tablespaces\ADC_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数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)的更多相关文章

  1. oracle数据库的一个表中,怎么设置字段的默认值

    如果表已经存在,用如下方法设置默认值. alter table 表名 modify 字段名 default 默认值; 如test表中设置address字段为'浙江省',可用如下语句: alter ta ...

  2. oracle数据库解决system表空间已爆满的问题

    有时会发现数据库system表空间增长很快,使用以下语句查看system表空间使用量.也可以使用toad直接看. select b.tablespace_name "表空间", b ...

  3. oracle 数据库下所有表结构、数据量及缺失值统计

    表结构 SELECT t1.TABLE_NAME, t1.COLUMN_NAME, t1.DATA_TYPE || '(' || t1.DATA_LENGTH || ')', t2.COMMENTS ...

  4. oracle数据库误删的表以及表中记录的恢复

    oracle数据库误删的表以及表中记录的恢复 一.表的恢复 对误删的表,只要没有使用PURGE永久删除选项,那么从flash back区恢复回来希望是挺大的.一般步骤有: --1.从flash bac ...

  5. Oracle 取两个表中数据的交集并集差异集合

    Oracle 取两个表中数据的交集 关键字: Oracle 取两个表中数据的交集 INTERSECT Oracle 作为一个大型的关系数据库,日常应用中往往需要提取两个表的交集数据 例如现有如下表,要 ...

  6. Oracle数据库对象(表空间/同义词/序列/视图/索引)

    数据库对象 Oracle数据库对象: 数据库对象是数据库的组成部分,常常用 CREATE 命令进行创建,可以使用 ALTER 命令修改,用 DROP 执行删除操作. 种类: (1)表空间:所有的数据对 ...

  7. 实例讲解Oracle数据库设置默认表空间问题

    实例讲解Oracle数据库设置默认表空间问题   实例讲解Oracle数据库设置默认表空间问题,阅读实例讲解Oracle数据库设置默认表空间问题,DBA们经常会遇到一个这样令人头疼的问题:不知道谁在O ...

  8. PowerDesigner生成Oracle数据库时,表名会带引号问题

    使用PowerDesigner生成数据库建表SQL脚本时,尤其是Oracle数据库时,表名一般会带引号.其实加引号是PL/SQL的规范,数据库会严格按照""中的名称建表,如果没有& ...

  9. Oracle数据库之创建表结构

    Oracle数据库之创建表结构 主键与外键 主键:关系型数据库中的一条记录中有若干个属性,若其中的某一个属性组(可以是一个属性,也可以是多个)能唯一标识一条记录,那么该属性组就是主键. 外键:关系型数 ...

随机推荐

  1. BFC 从了解到放弃

    最近工作中我突然产生了一个想法,就如我们人类面临的终极问题一般,我从哪里来?我到哪里去?在撸代码进行CSS布局的时候,我会去想,我为什么这么做?,为什么浮动的元素要用overflow?,为什么要用cl ...

  2. CentOS 7 安装Docker CE

    本节内容: 背景 Moby项目 安装Docker CE 卸载Docker CE 一.背景 在搭建Registry的过程中,发现使用Docker 1.12版本,在push镜像到Registry时会报错误 ...

  3. 不用的代码,存一份--用tornado实现的websocket

    因为现在使用Channels来实现啦, 这样就在Django的体系里自已弄完了. 方便后期代码维护和服务器部署. 这份土陋的东东,就放起来吧. 毕竟,通过读取文件来返回实时websocket,不适应于 ...

  4. 【LOJ】#2587. 「APIO2018」铁人两项

    题解 学习了圆方树!(其实是复习了Tarjan求点双) 我又双叒叕忘记了tarjan点双一个最重要,最重要的事情! 就是--假如low[v] >= dfn[u],我们就找到了一个点双,开始建立方 ...

  5. 关于ecshop的mobile里user.php登录和注册验证码不显示

    在做ecshop模板的时候由于user.php里的登录和注册是在一个页面里切换的,这就致使这里的登录和注册里的验证码不显示 找到mobile/themesmobile/ecshoptemplate_m ...

  6. JAVAEE——SSH项目实战05:用户注册、登陆校验拦截器、员工拜访客户功能和MD5加密

    作者: kent鹏 转载请注明出处: http://www.cnblogs.com/xieyupeng/p/7170519.html 一.用户注册   显示错误信息到页面上的另一种方法: public ...

  7. Standard NSD file

    %pool: pool=system blockSize=256K layoutMap=cluster allowWriteAffinity=no %pool: pool=datapool block ...

  8. [ 转载 ] Java基础4--Java中的static关键字解析

    Java中的static关键字解析 static关键字是很多朋友在编写代码和阅读代码时碰到的比较难以理解的一个关键字,也是各大公司的面试官喜欢在面试时问到的知识点之一.下面就先讲述一下static关键 ...

  9. 富文本插件KindEditor

    具体用法查看官网http://kindeditor.net/doc.php {% load staticfiles %} <!DOCTYPE html> <html lang=&qu ...

  10. 解决springboot项目中@Value注解参数值为null的问题

    1.错误场景: springboot项目中在.properties文件(.yml)文件中配置了属性值,在Bean中使用@Value注解引入该属性,Bean的构造器中使用该属性进行初始化,此时有可能会出 ...