麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 數(shù)據(jù)庫(kù) > Oracle > 正文

實(shí)例講解臨時(shí)處理去重 80w 數(shù)據(jù)時(shí)夯死現(xiàn)象

2024-08-29 13:58:26
字體:
供稿:網(wǎng)友

這篇文章主要介紹了臨時(shí)處理去重 80w 數(shù)據(jù)時(shí)夯死現(xiàn)象,需要的朋友可以參考下

近日,在對(duì)一張百萬數(shù)據(jù)的業(yè)務(wù)表進(jìn)行去重時(shí),去重操作竟然夯住了。下面就來簡(jiǎn)單回憶一下。

1、查詢業(yè)務(wù)表數(shù)據(jù)量,查看到總共有200多w條

 

 
  1. SQL> select count(*) from tb_bj_banker_etl; 
  2.  
  3. 2552381 

2、查詢表內(nèi)應(yīng)該去掉的重復(fù)數(shù)據(jù)量,共80多w條

 

 
  1. SQL> select count(*) from tb_bj_banker_etl where (id) in (select id from tb_bj_banker_etl group by id having count(*)>1) and rowid not in(select max(rowid) from tb_bj_banker_etl group by id having count(*)>1); 
  2.  
  3. 830099 

3、于是,在晚上下班前,執(zhí)行了下面的語句腳本,為了去重

 

  1. SQL> delete from tb_bj_banker_etl where(id) in (select id from tb_bj_banker_etl group by id having count(*)>1) and rowid not in(select max(rowid) from tb_bj_banker_etl group by id having count(*)>1); 
  2.  
  3. SQL> commit; 

4、第二天,到達(dá)現(xiàn)場(chǎng)時(shí),發(fā)現(xiàn)PL/SQL Developer工具中昨天晚上執(zhí)行的語句仍在執(zhí)行中

首先察覺,80多w的去重?cái)?shù)據(jù)跑了一個(gè)晚上也沒跑完?這肯定是哪里出了問題?

懷疑有鎖表。

于是查詢是否有鎖表的用戶。

 

 
  1. SELECT 
  2. A.OWNER, --OBJECT所屬用戶  
  3. A.OBJECT_NAME, --OBJECT名稱  
  4. B.XIDUSN,  
  5. B.XIDSLOT,  
  6. B.XIDSQN,  
  7. B.SESSION_ID, --鎖表用戶的session  
  8. B.ORACLE_USERNAME, --鎖表用戶的Oracle用戶名  
  9. B.OS_USER_NAME, --鎖表用戶的操作系統(tǒng)登陸用戶名  
  10. B.PROCESS,  
  11. B.LOCKED_MODE,  
  12. C.MACHINE, --鎖表用戶的計(jì)算機(jī)名稱  
  13. C.STATUS, --鎖表狀態(tài)  
  14. C.SERVER,  
  15. C.SID,  
  16. C.SERIAL#,  
  17. C.PROGRAM --鎖表用戶所用的數(shù)據(jù)庫(kù)管理工具  
  18. FROM 
  19. ALL_OBJECTS A,  
  20. V$LOCKED_OBJECT B,  
  21. SYS.GV_$SESSION C  
  22. WHERE 
  23. A.OBJECT_ID = B.OBJECT_ID  
  24. AND B.PROCESS = C.PROCESS  
  25. ORDER BY 1,2 

在下面結(jié)果中可以看到,鎖表的只是去重語句的發(fā)起會(huì)話,并沒有其它用戶造成鎖表,這說明語句仍然在執(zhí)行嘛?帶著疑問,開始嘗試解決。

1 BJHYL tb_bj_banker_ETL 15 18 9000 913 BJHYL Administrator 4036:972 3 WORKGROUP/BACKDB ACTIVE DEDICATED 913 3381 plsqldev.exe

2 BJHYL tb_bj_banker_ETL 15 18 9000 913 BJHYL Administrator 4036:972 3 WORKGROUP/BACKDB INACTIVE DEDICATED 649 41791 plsqldev.exe

3 BJHYL tb_bj_banker_ETL 15 18 9000 913 BJHYL Administrator 4036:972 3 WORKGROUP/BACKDB INACTIVE DEDICATED 817 27777 plsqldev.exe

4 BJHYL tb_bj_banker_ETL 15 18 9000 913 BJHYL Administrator 4036:972 3 WORKGROUP/BACKDB INACTIVE DEDICATED 841 1981 plsqldev.exe

5、采用分批次,解決去重夯住問題

由于直接去重?zé)o法順利進(jìn)行,于是想到了分批次去重的方法,試一下。

 

 
  1. 第一次:  
  2. delete from tb_bj_banker_etl where(id) in (select id from tb_bj_banker_etl group by id having count(*)>1) and rowid not in(select max(rowid) from tb_bj_banker_etl group by id having count(*)>1) and rownum<=100000;  
  3. commit;  
  4.  
  5. 第二次:  
  6. delete from tb_bj_banker_etl where(id) in (select id from tb_bj_banker_etl group by id having count(*)>1) and rowid not in(select max(rowid) from tb_bj_banker_etl group by id having count(*)>1) and rownum<=100000;  
  7. commit;  
  8.  
  9. 。。。。。。。  
  10. 。。。。。。。  
  11. 。。。。。。。  
  12.  
  13. 第八次:  
  14. delete from tb_bj_banker_etl where(id) in (select id from tb_bj_banker_etl group by id having count(*)>1) and rowid not in(select max(rowid) from tb_bj_banker_etl group by id having count(*)>1);  
  15. commit; 

結(jié)果:通過將80多萬數(shù)據(jù)劃分成以10w數(shù)據(jù)為單次進(jìn)行去重操作,總共用時(shí)140多秒,完成了去重80萬數(shù)據(jù)的目的。但為何直接處理出現(xiàn)夯死情況,有待后續(xù)跟蹤分析。

以上就是臨時(shí)處理去重80w數(shù)據(jù)時(shí)夯死現(xiàn)象的全部過程,希望可以幫到大家。

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产精品美女一区二区 | 伊人亚洲精品 | 黄色一级片免费观看 | 视频一区二区三区在线播放 | 欧美一级高清免费 | 1区2区3区在线观看 欧美特黄a | 成片免费大全 | chinese军人gay呻吟| 7m视频成人精品分类 | 最新一区二区三区 | 亚洲无线看 | 久久亚洲视频网 | 高清av免费 | 国产永久免费观看 | 国产精品久久久久久久久久久久久久久久 | 亚洲人成网站免费播放 | 成人免费一区二区三区在线观看 | 777午夜精品视频在线播放 | 性少妇chinesevideo| 一级黄色毛片免费 | 久久久久一区二区三区四区五区 | 国产毛片毛片 | 免费黄色大片在线观看 | 久久亚洲精品久久国产一区二区 | 国产精品久久久久久久亚洲按摩 | 羞羞网站视频 | 大胆在线日本aⅴ免费视频 美国黄色毛片女人性生活片 | 国产 日韩 一区 | 日本在线观看视频网站 | 国产高清一区 | 免费性爱视频 | 二级大黄大片高清在线视频 | 精品免费在线视频 | 久久综合av | 在线观看国产www | www.91视频com| 日本一级黄色大片 | 欧美一区黄色 | 9191色| 999精品国产 | 欧美黄色一级生活片 |