热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

oracle等待事件3构造一个DirectPathwrite等待事件和构造一个LogFileSync等待事件-mysql教程

第一篇《oracle等待事件1分别用表和索引上数据的访问来产生dbfilescatteredread等待事件》leonarding.blog.51cto.com60455251105411第二篇《oracle等待

第一篇《oracle等待事件1分别用表和索引上数据的访问来产生dbfilescatteredread等待事件》http://leonarding.blog.51cto.com/6045525/1105411第二篇《oracle等待

第一篇 《oracle等待事件1分别用表和索引上数据的访问来产生db file scattered read等待事件》
第二篇 《oracle等待事件2构造一个DB File Sequential Read等待事件和构造一个Direct Path Read等待事件》
第三篇 《oracle等待事件3构造一个Direct Path write等待事件和构造一个Log File Sync等待事件》

Dear All:
历经5天的oracle等待事件系列大功告成,不容易a多少个不眠之夜,多少次无尽猜想,在此做首打油诗留念




《2012终日有感》

壮志未酬oracle

夜点明灯苦用功

只为不白少年头

报答老师抱mm

五构造一个Direct Path write等待事件,等待事件需要在v$session_wait和10046 trace文件中显示出来,贴出整个演示过程。

Direct path write 等待事件:发生在“写入磁盘”的时候,因为写也是一种中间状态,只要是中间状态数据就没有必要共享给其他用户,所以这些数据也不会放在SGA中共享,从PGA中 -> 直接写入 -> 磁盘。

场景: append方式插入数据,这种方式插入数据的时候会跳过SGA的data_buffer_cache,直接插入数据文件,并且还不会扫描数据文件中的空闲空间直接插入到文件尾所以效率较高

当数据排序时候,如果PGA被装满,香港虚拟主机,就会被写入到磁盘的temp表空间里,美国服务器,因为排序的数据是中间状态也不会经过SGA,所以会产生“direct path write”等待事件

LEO1@LEO1> select table_name,index_name from user_indexes where table_name='LEO1'; 利用leo1表

TABLE_NAME INDEX_NAME

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

LEO1 IDX_LEO1

LEO1@LEO1> select count(*) from leo1; 有71959行记录

COUNT(*)

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

71959

LEO1@LEO1> execute dbms_stats.gather_table_stats(ownname=>'LEO1',tabname=>'LEO1',cascade=>TRUE);

PL/SQL procedure successfully completed. 统计分析

v$session_wait视图中显示出来

LEO1@LEO1> set serveroutput on

LEO1@LEO1> create or replace procedure p4

as

begin

for i in 1..8

loop

insert /*+ append */ into leo1 select * from leo1;

rollback;

end loop;

dbms_output.put_line('successfully');

end;

/

2 3 4 5 6 7 8 9 10 11

Procedure created.
创建存储过程p4循环8次,添加了append hint执行直接插入,在这个期间会发生“direct path write”等待事件

Append 注意事项

Append方式叫做直接路径加载,使用这种方式是因为oracle不会在扫描freelist链表中的空闲块,直接在高水线之后插入数据,所以速度比较快。

(1)append方式不记录redo,一旦在插入的过程中没有保存到磁盘或者发生掉电情况那么插入的数据不能恢复

(2)由于不在利用表的空闲空间,那么这种方式比较浪费存储空间,就是以空间换时间

(3)insert /*+ append */ into leo1 select * from leo1;会对这个表添加一个6级锁,意味着在没有commit/rollback前提下任何会话 insert update delete select 等操作都不允许,否则会报错

ORA-12838: cannot read/modify an object after modifying it in parallel

解释如下:

推荐阅读
  • 本文深入探讨网页游戏的开发流程,涵盖从程序框架设计到具体实现的技术细节,旨在为开发者提供全面的指导。 ... [详细]
  • GBase 8s SQL 指南:多列约束详解
    本文档详细介绍了如何在GBase 8s中使用多列约束格式,将其应用于现有表的一列或多列。这种格式类似于CREATE TABLE语句中的多列约束,但提供了一些额外的选项,如INDEX DISABLED关键字。 ... [详细]
  • 本文总结了WebSphere应用服务器出现宕机问题的解决方法,重点讨论了关键参数的调整,包括数据源连接池、线程池设置以及JVM堆大小等,旨在提升系统的稳定性和性能。 ... [详细]
  • 本文探讨了Java编程中MVC模式的优势与局限,以及如何利用Java开发一款基于鸟瞰视角的赛车游戏。 ... [详细]
  • 尽管PHP是一种强大且灵活的Web开发语言,但开发者在使用过程中常会陷入一些典型的陷阱。本文旨在列出PHP开发中最为常见的10种错误,并提供相应的预防建议。 ... [详细]
  • 本文介绍了MySQL数据库的安全权限管理思想及其制度流程,涵盖从项目开发、数据库更新到日常运维等多个方面的详细流程控制,旨在通过严格的流程管理和权限控制,有效预防数据安全隐患。 ... [详细]
  • 解决Redis大Key问题的有效策略
    本文探讨了Redis中大Key的问题及其解决方案。大Key是指Redis数据库中占用大量内存的键值对,通常指字符串类型超过10KB的数据。文章详细分析了大Key的影响及检测方法,并提出了有效的处理措施。 ... [详细]
  • sqlserver动态分区方案例子
    sqlserver动态分区方案例子当我们存储的数据量比较大时,比如超过千万,上亿级别时单纯的使用索引可能效果不明显了,此时我们可以考虑采 ... [详细]
  • 深入理解Java MySQL数据库连接池实现
    尽管利用Apache Commons DBCP等工具可以轻松构建数据库连接池,但本文详细解析了数据库连接池的工作机制,提供了详尽的注释,帮助开发者深入理解其内部运作。这不仅有助于提高数据库操作的效率,还能增强应用程序的稳定性和性能。 ... [详细]
  • 本文探讨了在H2内存数据库中使用to_char函数遇到的问题,包括别名创建失败和堆栈内存溢出的情况,并提供了解决方案。 ... [详细]
  • PySpark实战:高效使用DataFrame超越RDD
    本文深入探讨了PySpark中DataFrame的使用方法及其相对于传统RDD的优势,旨在帮助开发者更好地理解和利用这一强大工具。 ... [详细]
  • 今天发现Mysql的主从数据库没有同步先上Master库:mysqlshowprocesslist;查看下进程是否Sleep太多。发现很正常。showmaster ... [详细]
  • 基于Java的学生宿舍管理系统设计
    本论文探讨了如何利用Java技术设计和实现一个高效的学生宿舍管理系统。该系统旨在提高宿舍管理的效率,减少人为错误,同时增强用户体验。通过集成用户认证、数据管理和查询功能,系统能够满足学校宿舍管理的多样化需求。 ... [详细]
  • MyBatis 开发技巧:延迟加载与查询缓存详解
    本文详细探讨了 MyBatis 中的延迟加载和查询缓存机制,旨在帮助开发者更好地理解和利用这些特性来优化数据库访问性能。 ... [详细]
  • 本项目展示了如何利用Java技术构建一个高效的考勤数据管理系统,特别适用于处理大量数据的情况,如企业员工考勤记录等。项目包括完整的源代码和详细的文档说明,适合用于毕业设计或实际工作场景。 ... [详细]
author-avatar
阿芙2011
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有