中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么解決關于數據庫insert問題

發布時間:2021-11-04 09:27:08 來源:億速云 閱讀:199 作者:iii 欄目:關系型數據庫

本篇內容主要講解“怎么解決關于數據庫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
----------
.000061035
104.680664

最后的解決辦法:

開16并行,將時間段拆分為1個月一個月插。最后有點注意的是,表空間要足夠大。

到此,相信大家對“怎么解決關于數據庫insert問題”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

隆林| 田林县| 新邵县| 蓝山县| 阿巴嘎旗| 拉孜县| 德州市| 皋兰县| 甘肃省| 喀喇沁旗| 兴安县| 定日县| 澳门| 抚远县| 安化县| 宁乡县| 昔阳县| 灯塔市| 宁阳县| 宾阳县| 会同县| 清远市| 汉川市| 溧水县| 临桂县| 拉孜县| 马山县| 尉氏县| 和田县| 商城县| 盘锦市| 鄂州市| 灵丘县| 襄樊市| 永平县| 赣州市| 格尔木市| 吉安市| 镇雄县| 旅游| 饶河县|