千家信息网

怎么解决关于数据库insert问题

发表于:2024-09-24 作者:千家信息网编辑
千家信息网最后更新 2024年09月24日,本篇内容主要讲解"怎么解决关于数据库insert问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么解决关于数据库insert问题"吧!早上对几个10几
千家信息网最后更新 2024年09月24日怎么解决关于数据库insert问题

本篇内容主要讲解"怎么解决关于数据库insert问题",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"怎么解决关于数据库insert问题"吧!

早上对几个10几G,上亿的大表进行分区改造,一切都正常。到中午吃饭前对一个10万数据的小表进行插入时出问题了,很简单的插入语句,跑了1个小时没跑完。

插入语句如下,由于保密缘故,相关信息已做修改:

insert into SGS.PROD_NEW  select *    from SGS.PROD   where CREATE_TIME >= to_date('2019-01-01', 'yyyy-mm-dd')     and CREATE_TIME < to_date('2020-07-01', 'yyyy-mm-dd');

这张表大概10万行数据,没有主键,没有索引。

set linesize 200;col owner for a20;col table_name for a40;col tablespace_name for a20;select owner, table_name, num_rows,TABLESPACE_NAME  from dba_tables where table_name = 'PROD'; OWNER                TABLE_NAME                                 NUM_ROWS TABLESPACE_NAME-------------------- ---------------------------------------- ---------- --------------------SGS                  PROD                                     107220      GC_TS

表的大小60M左右:

SQL> select bytes/1024/1024 MB from dba_segments where segment_name='PROD';        MB----------        59

第一次表插入时,跑了1个小时没跑完,看了下等待事件,一直都是direct path read,也没有阻塞,为什么那么慢,看了下执行计划是走的全表扫描,执行计划没有问题:

------------------------------------------------------------------------------------------------------| Id  | Operation                | Name                      | Rows  | Bytes | Cost (%CPU)| Time     |------------------------------------------------------------------------------------------------------|   0 | INSERT STATEMENT         |                           |       |       |  2027 (100)|          ||   1 |  LOAD TABLE CONVENTIONAL | PRODNEW                   |       |       |            |          ||*  2 |   TABLE ACCESS FULL      | PROD                      |   106K|    67M|  2027   (1)| 00:00:01 |------------------------------------------------------------------------------------------------------

干脆停掉,开并行跑。开了16个并行跑插入,跑了半个小时还是卡在那,同样的等待事件。百思不得其解,想到了是不是统计信息过期了,但是这个表没有索引,统计信息过不过期都是走全表扫描。想到了buffer cache太小,但是我前面上亿的数据也能插进去,按理说不可能。想到了是不是temp表空间太小的缘故,查了下,32G,使用率0.01%。

浑水摸鱼1个小时后,想到了有没可能是大字段导致的呢?查了下,果然,MMP,有一个CLOB类型字段100G的大小。

SQL> select bytes/1024/1024/1024 GB from dba_segments where segment_name in (select segment_name from dba_lobs where table_name='PROD');          GB----------.000061035104.680664

最后的解决办法:

开16并行,将时间段拆分为1个月一个月插。最后有点注意的是,表空间要足够大。

到此,相信大家对"怎么解决关于数据库insert问题"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

数据 问题 小时 数据库 信息 事件 内容 大小 字段 空间 索引 缘故 语句 学习 统计 实用 更深 浑水摸鱼 百思不得其解 使用率 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 常州十大网络安全公司排名 软件开发的薪酬方案 常德网络安全演练实战 网络安全公司青藤云 浙江汇鼎华链超算服务器 网络安全威胁预警 万博天地网络技术电话 两台数据库服务器不同步 购买腾讯云轻量服务器怎么退款 江苏志铭网络技术有限公司 软件开发后要靠电脑运营吗 数据库的编码是什么 软件工程软件开发文档模板 网络安全中学生口号 单位微信公众号网络安全管理 网络货运平台有哪些服务器 非常难的网络安全手抄报 网络安全专题讲座英语作文 硕士学位论文数据库 telnet服务器配置 群众提升网络安全感 工业网络技术以后是干嘛的 有必要做网络安全专业吗 xshell检查服务器状态 网络安全产品技术培训通知 软件开发各阶段的交付文档 数据库按指定值排序 服务器管理器事件33 微创网络技术有限公司上市 软件开发组长工作总结
0