有一个分区表,按list分区,只有一个本地唯一索引,没有外键和触发器
当单个分区数量在2000万以内时,insert效率还可以,每秒2.3-2.5万条
但数据量越大,速度越慢,
目前单个分区数量达到3亿,占用磁盘空间28G,索引占用13G,insert每秒才2000条
做过的尝试:
1、已经将表和索引设置成nologging
2、试过append,没有明显改善

分析应该是维护索引导致的性能问题,有什么方法可以改善?

建议如下:
1.采取批量提交比如2000-5000 行提交一次
2.如果数据都是插入到单个分区的话,可以把该分区上的索引先disable 然后再插入 完成后rebuild 该分区上的索引
alter index ind_t100 unusable;
alter index IND_T100 rebuild;
3.如果日志文件切换很平凡的话,建议增大日志文件大小

很明显是维护索引消耗
alter index xxx unusable;
最后再重建这个索引

有人反映,
唯一索引,UNUSABLE后不能insert
----------------------------------------------------------------61万数据进行测试

失效索引后重建:
alter index  ACT_IDX_HI_PROCVAR_TASK_ID unusable;
alter index  ACT_HI_VARINSTWITHIDX_INDEX1 unusable;
alter index ACT_IDX_HI_PROCVAR_NAME_TYPE unusable;
alter index ACT_IDX_HI_PROCVAR_PROC_INST unusable;
 insert into act_hi_varinstspan select * from act_hi_varinst;
alter index  ACT_IDX_HI_PROCVAR_TASK_ID rebuild;
alter index  ACT_HI_VARINSTWITHIDX_INDEX1 rebuild;
alter index ACT_IDX_HI_PROCVAR_NAME_TYPE rebuild;
alter index ACT_IDX_HI_PROCVAR_PROC_INST rebuild;

插入612,627 行数据耗费30.7秒
重建耗费10秒

不分区:
无索引
612,627 行已插入。
16.518秒
带索引
612,627 行已插入。
127.492秒

分区:
非索引
612,627 行已插入。
16.518秒
带索引
612,627 行已插入。
108.081秒
---------------------------------------------------------------相关实验及语句
---按日期进行分区
select table_name,partition_name from user_tab_partitions where table_name='ACT_HI_VARINSTSPAN';
create table ACT_HI_VARINSTSPAN (
  id_                NVARCHAR2(64) not null,
  proc_inst_id_      NVARCHAR2(64),
  execution_id_      NVARCHAR2(64),
  task_id_           NVARCHAR2(64),
  name_              NVARCHAR2(255) not null,
  var_type_          NVARCHAR2(100),
  rev_               INTEGER,
  bytearray_id_      NVARCHAR2(64),
  double_            NUMBER(*,10),
  long_              NUMBER(19),
  text_              NVARCHAR2(2000),
  text2_             NVARCHAR2(2000),
  create_time_       TIMESTAMP(6),
  last_updated_time_ TIMESTAMP(6)
) partition by range(create_time_)
 interval (numtodsinterval(1,'day'))
 (
  partition create_time_ values less than (to_date('2016-01-01','yyyy-mm-dd'))
 );
-- 查看分区表
 SELECT * FROM USER_PART_TABLES;
-- 查看表分区
 select table_name,partition_name from user_tab_partitions where table_name='ACT_HI_VARINSTSPAN';
-- 为分区进行建立索引
CREATE INDEX ACT_HI_VARINSTSPAN_INDEXSPAN1 ON ACT_HI_VARINSTSPAN(ID_) LOCAL;
-- 查看分区进行建立索引
 select INDEX_NAME,PARTITION_NAME,HIGH_VALUE,STATUS from dba_ind_partitions where index_name='ACT_HI_VARINSTSPAN_INDEXSPAN1';
-- 查看分区进行建立索引
 SELECT * FROM USER_PART_INDEXES
--重建分区索引
  alter index ACT_HI_VARINSTSPAN_INDEXSPAN1 rebuild partition SYS_P718;

oracle数据量大时候分区索引思路相关推荐

  1. 我艹,MySQL数据量大时,delete操作无法命中索引。

    来自:Java面试那些事儿 最近,在脉脉上看到一个楼主提出的问题:MySQL数据量大时,delete操作无法命中索引:并且还附上了相关案例截图. 最终,楼主通过开启MySQL分析优化器追踪,定位到是优 ...

  2. mysql给数据量大的表添加索引的办法

    有一个问题,一张表有3百万条记录,随着时间的增加,记录量会更多,此时查询速度很慢.在创建此表前没有未相应字段添加索引,所以此时需要为表添加索引.但是因为数据量大的原因,索引添加不成功,想了很多办法,终 ...

  3. 历史数据如何处理_数据库表数据量大读写缓慢如何优化(1)【冷热分离】

    今天讨论的内容是冷热分离,也许概念并不陌生,对其使用场景也比较熟悉,但涉及锁的内容时仍然需要认真思考,这部分内容在我们实际开发中的"坑"还是不少的. 业务场景一 曾经经历过供应链相 ...

  4. 面试官问单表数据量大一定要分库分表吗?我们用六个字和十张图回答

    1 文章概述 在业务发展初期单表完全可以满足业务需求,在阿里巴巴开发手册也建议:单表行数超过500万行或者单表容量超过2GB才推荐进行分库分表,如果预计三年后数据量根本达不到这个级别,请不要在创建表时 ...

  5. 解决Mysql数据量大的时候 分页优化(使用limit)的问题

    解决Mysql数据量大的时候 分页优化(使用limit)的问题 参考文章: (1)解决Mysql数据量大的时候 分页优化(使用limit)的问题 (2)https://www.cnblogs.com/ ...

  6. Echars 折线图 自动向右平移显示数据(数据量大的时候适应)

    <!DOCTYPE html> <html><head><meta charset="utf-8"><title>Ech ...

  7. oracle 文件大小为零,windows Oracle数据文件大小为0的恢复case

    本站文章除注明转载外,均为本站原创: 转载自love wife love life -Roger 的Oracle技术博客 本文链接地址: windows Oracle数据文件大小为0的恢复case 一 ...

  8. Java List数据量大, 需要分片批次操作

    很久前,写过关于list数据量大,分批处理的相关介绍文章(自定义的java代码实现): SSM Mybatis 批量插入 采用分批处理一次500条_默默不代表沉默-CSDN博客_mybatis分批插入 ...

  9. form 提交 无法显示该网页 数据量大提交Post too large错误

    如果form表单提交数据量大的时候会出现无法显示该网页. 解决办法1: 在 $TOMCAT_HOME$/conf/server.xml中找到 <Connector port="8080 ...

最新文章

  1. Cisco交换机解决网络蠕虫病毒***问题
  2. ubuntu14.04 server安装vncserver
  3. ELF文件的加载和动态链接过程
  4. 第一冲刺阶段工作总结02
  5. 会计电算化算不算计算机专业,成都会计学校会计电算化专业介绍
  6. 微信小程序 this和that详解及简单实例
  7. 【SSH网上商城项目实战01】整合Struts2、Hibernate4.3和Spring4.2
  8. python 数据类型 之 tuple 元组
  9. 求出现重现次数最多的字母,如有多个反复的则都求出来
  10. menu什么意思中文意思_telegraph什么意思
  11. 服务器安全-使用ipset 和iptables禁止国外IP访问
  12. 蓝桥杯题目 黑色星期五
  13. 基于SSM实现新闻发布系统
  14. 多张图片合成一张图片
  15. 遍历图像像素的几种方法
  16. 常用web服务器:状态监控status页面
  17. Mysql拼接查询结果
  18. vue组件库大全(忘了的时候可以进来找一下~)
  19. CPU 内存 磁盘的关系
  20. jsonobject返回map_如何把JSON对象转为map对象

热门文章

  1. c语言用指针实现打开和关闭文件,我用rewind函数没把指针直到开始,关闭文件然后打开就行。帮忙看看...
  2. 获取两个数的最大值,判断是否相等;
  3. java集合转换_java各种集合的转换
  4. 提示丢失libgcc_s_dw2-1.dll问题
  5. Cobaltstrike4.0系列教程(一)----简介与安装
  6. matlab figure 嵌套,操作Matlab的Figure窗口(一)
  7. PyCharm安装和配置教程
  8. 海量数据处理--位图(BitMap)
  9. c++模板---1(模板概念,利用模板实现数组排序,函数模板调用规则)
  10. 数据结构课程设计------扫雷游戏(升级版,可展开)