ITPUB??ì3
订阅ITPUB精粹播报,社区精彩内容不错过
ITPUB论坛 » Oracle数据库管理 » commit write的疑问


您有 1 条公共消息
  • 来自: 公共消息 标题: ITPUB国庆假期数 ... 内容: 全新编排的Oracle数据库课程,第一线数据库工程师传授亲身经验,完全摆 ...

    标题: commit write的疑问
    在线/呼叫 棉花糖ONE


    精华贴数 0
    个人空间 48
    技术积分 23092 (56)
    社区积分 1645 (923)
    注册日期 2007-2-21
    论坛徽章:93
    现任管理团队成员ITPUB年度最佳技术回答奖    
          

    发表于 2007-11-2 11:57 
    我在那帖子里发的那篇都写了,你自己不看,wait ,nowait和batch针对的不是一个东西说的,这2个概念比较容易混起来


    __________________
    只看该作者    顶部
    离线 exitgogo
    南非蚂蚁


    精华贴数 1
    个人空间 0
    技术积分 3353 (569)
    社区积分 53 (6186)
    注册日期 2005-7-23
    论坛徽章:9
    会员2007贡献徽章授权会员生肖徽章2007版:虎生肖徽章2007版:牛生肖徽章2007版:鼠生肖徽章2007版:鸡
    生肖徽章2007版:猴ITPUB新首页上线纪念徽章数据库板块每日发贴之星   

    发表于 2007-11-2 12:22 
    Re: commit write的疑问



    QUOTE:
    最初由 ilovemk 发布
    请问commit write batch nowait和commit write batch有什么区别啊?commit write batch nowait和commit write nowait又有什么区别呢?


    IMMEDIATE - The commit "prods" the LGWR process by sending a message, so that the redo is written imemdiately to the redo logs.

    BATCH - The writes to the redo logs are buffered.

    WAIT - The commit command is synchronous. It doesn't return until the relevant redo information is written to the online redo log.

    NOWAIT - The commit command is asynchronous. It can return before the relevant redo information is written to the online redo log


    __________________
    Linux/Solaris+oracle,cluster

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


    Email:dba.gao#gmail.com
    MSN:gaojf_888#hotmail.com

    我的个人站点:http://www.ixdba.net
    《循序渐进Linux》

    欢迎加入Unix/Linux+oracle讨论群:15872439
    只看该作者    顶部
    离线 ilovemk
    高级会员


    精华贴数 0
    个人空间 0
    技术积分 3879 (487)
    社区积分 548 (1768)
    注册日期 2007-7-8
    论坛徽章:18
    2010新春纪念徽章2008新春纪念徽章生肖徽章:蛇生肖徽章:猪生肖徽章:马生肖徽章:龙
    生肖徽章:兔生肖徽章:羊生肖徽章:虎生肖徽章:狗生肖徽章:猴生肖徽章:鸡

    发表于 2007-11-2 12:48 
    Re: Re: commit write的疑问



    QUOTE:
    最初由 exitgogo 发布




    IMMEDIATE - The commit "prods" the LGWR process by sending a message, so that the redo is written imemdiately to the redo logs.

    BATCH - The writes to the redo logs are buffered.

    WAIT - The commit command is synchronous. It doesn't return until the relevant redo information is written to the online redo log.

    NOWAIT - The commit command is asynchronous. It can return before the relevant redo information is written to the online redo log


    ok,明白了。BTW,"redo logs are buffered"这里的bufferd是缓存到哪里呢?batch提交后重做日志缓冲区的内容可不可以被覆盖呢?批量提交的时间是由什么控制的呢,和lgwr的触发条件一样么?谢谢。


    __________________
    道生一,一生二,二生叁,叁生万物
    只看该作者    顶部
    离线 exitgogo
    南非蚂蚁


    精华贴数 1
    个人空间 0
    技术积分 3353 (569)
    社区积分 53 (6186)
    注册日期 2005-7-23
    论坛徽章:9
    会员2007贡献徽章授权会员生肖徽章2007版:虎生肖徽章2007版:牛生肖徽章2007版:鼠生肖徽章2007版:鸡
    生肖徽章2007版:猴ITPUB新首页上线纪念徽章数据库板块每日发贴之星   

    发表于 2007-11-2 13:06 
    Re: Re: Re: commit write的疑问



    QUOTE:
    最初由 ilovemk 发布

    ok,明白了。BTW,"redo logs are buffered"这里的bufferd是缓存到哪里呢?batch提交后重做日志缓冲区的内容可不可以被覆盖呢?批量提交的时间是由什么控制的呢,和lgwr的触发条件一样么?谢谢。


    batch:
    Oracle buffers the redo information. The log writer will write this redo information to disk, but in its own time. Thus, several I/Os can be "batched".


    __________________
    Linux/Solaris+oracle,cluster

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


    Email:dba.gao#gmail.com
    MSN:gaojf_888#hotmail.com

    我的个人站点:http://www.ixdba.net
    《循序渐进Linux》

    欢迎加入Unix/Linux+oracle讨论群:15872439
    只看该作者    顶部
    离线 ilovemk
    高级会员


    精华贴数 0
    个人空间 0
    技术积分 3879 (487)
    社区积分 548 (1768)
    注册日期 2007-7-8
    论坛徽章:18
    2010新春纪念徽章2008新春纪念徽章生肖徽章:蛇生肖徽章:猪生肖徽章:马生肖徽章:龙
    生肖徽章:兔生肖徽章:羊生肖徽章:虎生肖徽章:狗生肖徽章:猴生肖徽章:鸡

    发表于 2007-11-2 14:14 
    Re: Re: Re: Re: commit write的疑问



    QUOTE:
    最初由 exitgogo 发布




    batch:
    Oracle buffers the redo information. The log writer will write this redo information to disk, but in its own time. Thus, several I/Os can be "batched".


    谢谢,不过似乎还没回答我的问题。


    __________________
    道生一,一生二,二生叁,叁生万物
    只看该作者    顶部
    离线 ilovemk
    高级会员


    精华贴数 0
    个人空间 0
    技术积分 3879 (487)
    社区积分 548 (1768)
    注册日期 2007-7-8
    论坛徽章:18
    2010新春纪念徽章2008新春纪念徽章生肖徽章:蛇生肖徽章:猪生肖徽章:马生肖徽章:龙
    生肖徽章:兔生肖徽章:羊生肖徽章:虎生肖徽章:狗生肖徽章:猴生肖徽章:鸡

    发表于 2007-11-2 14:29 
    Re: Re: Re: commit write的疑问



    QUOTE:
    最初由 ilovemk 发布

    ok,明白了。BTW,"redo logs are buffered"这里的bufferd是缓存到哪里呢?batch提交后重做日志缓冲区的内容可不可以被覆盖呢?批量提交的时间是由什么控制的呢,和lgwr的触发条件一样么?谢谢。


    up!


    __________________
    道生一,一生二,二生叁,叁生万物
    只看该作者    顶部
    离线 ilovemk
    高级会员


    精华贴数 0
    个人空间 0
    技术积分 3879 (487)
    社区积分 548 (1768)
    注册日期 2007-7-8
    论坛徽章:18
    2010新春纪念徽章2008新春纪念徽章生肖徽章:蛇生肖徽章:猪生肖徽章:马生肖徽章:龙
    生肖徽章:兔生肖徽章:羊生肖徽章:虎生肖徽章:狗生肖徽章:猴生肖徽章:鸡

    发表于 2007-11-2 15:07 
    继续up


    __________________
    道生一,一生二,二生叁,叁生万物
    只看该作者    顶部
    在线/呼叫 zengmuansha
    曾牧暗鲨


    精华贴数 0
    个人空间 0
    技术积分 3355 (567)
    社区积分 8 (15736)
    注册日期 2005-11-21
    论坛徽章:3
    会员2007贡献徽章2010新春纪念徽章ITPUB新首页上线纪念徽章   
          

    发表于 2007-11-2 16:01 
    估计你已经糊涂了......

    请问commit write batch nowait和commit write batch有什么区别啊?
    commit write batch nowait和commit write nowait又有什么区别呢?

    好想不能这样搭配吧
    commit write immediate wait      &&  commit write batch nowait
    只有上面两种搭配


    __________________
    中文华语 中华人
    http://BLOG.CSDN.NET/ZengMuAnSha
    只看该作者    顶部
    离线 exitgogo
    南非蚂蚁


    精华贴数 1
    个人空间 0
    技术积分 3353 (569)
    社区积分 53 (6186)
    注册日期 2005-7-23
    论坛徽章:9
    会员2007贡献徽章授权会员生肖徽章2007版:虎生肖徽章2007版:牛生肖徽章2007版:鼠生肖徽章2007版:鸡
    生肖徽章2007版:猴ITPUB新首页上线纪念徽章数据库板块每日发贴之星   

    发表于 2007-11-2 16:10 


    QUOTE:
    最初由 zengmuansha 发布
    估计你已经糊涂了......

    请问commit write batch nowait和commit write batch有什么区别啊?
    commit write batch nowait和commit write nowait又有什么区别呢?

    好想不能这样搭配吧
    commit write immediate wait      &&  commit write batch nowait
    只有上面两种搭配


    可以有N种组合。


    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='WAIT';
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='NOWAIT';
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='IMMEDIATE';
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='BATCH';
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='BATCH,WAIT';
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='BATCH,NOWAIT';
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='IMMEDIATE,WAIT';
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='IMMEDIATE,NOWAIT';

    SQL>CREATE TABLE commit_test (
      id           NUMBER(10),
      description  VARCHAR2(50),
      CONSTRAINT commit_test_pk PRIMARY KEY (id)
    );


    SQL> DECLARE
      PROCEDURE do_loop (p_type  IN  VARCHAR2) AS
      2    3      l_start  NUMBER;
      4      l_loops  NUMBER := 1000;
      5    BEGIN
      6      EXECUTE IMMEDIATE 'ALTER SESSION SET COMMIT_WRITE=''' || p_type || '''';
      7      EXECUTE IMMEDIATE 'TRUNCATE TABLE commit_test';
      8  
      9      l_start := DBMS_UTILITY.get_time;
    10      FOR i IN 1 .. l_loops LOOP
    11        INSERT INTO commit_test (id, description)
    12        VALUES (i, 'Description for ' || i);
          COMMIT;
    13   14      END LOOP;
    15      DBMS_OUTPUT.put_line(RPAD('COMMIT_WRITE=' || p_type, 30) || ': ' || (DBMS_UTILITY.get_time - l_start));
      END;
    BEGIN
    16   17   18    do_loop('WAIT');
    19    do_loop('NOWAIT');
      do_loop('BATCH');
    20   21    do_loop('IMMEDIATE');
      do_loop('BATCH,WAIT');
    22   23    do_loop('BATCH,NOWAIT');
      do_loop('IMMEDIATE,WAIT');
    24   25    do_loop('IMMEDIATE,NOWAIT');
    END;
    26   27  /
    COMMIT_WRITE=WAIT             : 286
    COMMIT_WRITE=NOWAIT           : 87
    COMMIT_WRITE=BATCH            : 53
    COMMIT_WRITE=IMMEDIATE        : 91
    COMMIT_WRITE=BATCH,WAIT       : 268
    COMMIT_WRITE=BATCH,NOWAIT     : 19
    COMMIT_WRITE=IMMEDIATE,WAIT   : 284
    COMMIT_WRITE=IMMEDIATE,NOWAIT : 36

    PL/SQL procedure successfully completed.


    __________________
    Linux/Solaris+oracle,cluster

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


    Email:dba.gao#gmail.com
    MSN:gaojf_888#hotmail.com

    我的个人站点:http://www.ixdba.net
    《循序渐进Linux》

    欢迎加入Unix/Linux+oracle讨论群:15872439
    只看该作者    顶部
    在线/呼叫 zengmuansha
    曾牧暗鲨


    精华贴数 0
    个人空间 0
    技术积分 3355 (567)
    社区积分 8 (15736)
    注册日期 2005-11-21
    论坛徽章:3
    会员2007贡献徽章2010新春纪念徽章ITPUB新首页上线纪念徽章   
          

    发表于 2007-11-2 16:14 
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='BATCH,WAIT';
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='BATCH,NOWAIT';
    ALTER [SYSTEM | SESSION] SET COMMIT_WRITE='IMMEDIATE,WAIT';

    就三种有效


    __________________
    中文华语 中华人
    http://BLOG.CSDN.NET/ZengMuAnSha
    只看该作者    顶部
    相关内容


    CopyRight 1999-2006 itpub.net All Right Reserved.
    北京皓辰网域网络信息技术有限公司. 版权所有
    网站律师 隐私政策 知识产权声明
    广播电视节目制作经营许可证:编号(京)字第1149号
    京ICP证:060528号 联系我们

    北京市公安局海淀分局网监中心备案编号:1101082001