zoukankan      html  css  js  c++  java
  • 为什么交易系统不能出现大事务?

    为什么Oracle要避免大事务呢?
    
    1.高并发
    
    2.回滚慢
    
    3. 从UNDO读数据也是单块读
    
    
    SQL> desc a1
     Name					   Null?    Type
     ----------------------------------------- -------- ----------------------------
     ID						    NUMBER(38)
     FLAG1						    CHAR(10)
     FLAG2						    CHAR(10)
    
    SQL> begin for i in 1 .. 1000000
      2  loop
      3  insert into a1 values (i,'a'||i,'b'||i);
      4  commit;
      5  end loop;
      6  end;
      7  /
    
    PL/SQL procedure successfully completed.
    
    SQL> delete from a1;
    
    

    全表扫描出现了单块读,因为是读的UNDO数据,查看UNDO数据:

    SQL> select s.username, u.name from v$transaction t,

    v$rollstat r, v$rollname u,v$session s 

    where s.taddr=t.addr and t.xidusn=r.

    usn and r.usn=u.usn order by s.username;  2    3    4 

     

    USERNAME             NAME

    ------------------------------ ------------------------------

    TEST                 _SYSSMU3_1204390606$

     

    为什么交易系统不能出现大事务:

    SQL> set linesize 200

    SQL> select * from v$lock where sid=34;

     

    ADDR       KADDR            SID TY        ID1         ID2          LMODE    REQUEST        CTIME        BLOCK

    -------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------

    35001810 3500183C          34 AE        100          0              4           0    1752              0

    35001A54 35001A80          34 TO      65908         1              3           0    1605              0

    开始删除100W数据:

     

    SQL> select * from v$lock where sid=34;

     

    ADDR       KADDR            SID TY        ID1         ID2          LMODE    REQUEST        CTIME        BLOCK

    -------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------

    35001810 3500183C          34 AE        100          0              4           0    1772              0

    35001A54 35001A80          34 TO      65908         1              3           0    1625              0

    00707A9C 00707ACC         34 TM      75517        0              3           0       4              0

    336F4CB0 336F4CF0          34 TX     131086      12696              6           0       4              0

    删除数据时,长时间持有行锁,万一大事务失败,回滚慢,又是长时间占用行锁:

    ADDR       KADDR            SID TY        ID1         ID2          LMODE    REQUEST        CTIME        BLOCK

    -------- -------- ---------- -- ---------- ---------- ---------- ---------- ---------- ----------

    35001810 3500183C          34 AE        100          0              4           0    1829              0

    35001A54 35001A80          34 TO      65908         1              3           0    1682              0

    00707A9C 00707ACC         34 TM      75517        0              3           0      61              0

    336F4CB0 336F4CF0          34 TX     131086      12696              6           0      61              0


     

  • 相关阅读:
    什么是数据产品经理?需要什么能力?有哪些相关书籍可以读?
    Elasticsearch 文章合集
    大数据面试汇总
    产品经理要掌握的数据知识:数据的基本概念、术语、指标,基本技术和分析方法
    产品经理面试6个层面:做狐狸or刺猬?
    HDFS文章合集
    AppleApp(1):TextMate苹果中媲美Notepad++的文本编辑器
    Flex同Java通信BlazeDS入门图文详解(上)
    flex&java通信错误之一:Server.resource.unavailable
    cellForRowAtIndexPath不被执行的原因
  • 原文地址:https://www.cnblogs.com/zhaoyangjian724/p/3797944.html
Copyright © 2011-2022 走看看