首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【DB笔试面试678】在Oracle中,什么是热块?

    当一个会话需要访问一个数据块,而这个数据块正在被另一个用户从磁盘读取到内存中或者这个数据块正在被另一个会话修改时,当前的会话就需要等待,就会产生一个buffer busy waits等待,也伴随着Latch争用。如果太多的会话去访问相同的数据块,那么会导致长时间的buffer busy waits等待,通常表现形式为CPU使用率很高,但吞吐量很低。造成热块的原因可能是数据库设置或者重复执行的SQL语句频繁访问一些相同的数据块。热块产生的原因不尽相同,按照数据块的类型,可以分成表数据块、索引数据块、索引根数据块、文件头数据块和数据块自身的争用,不同热块类型处理的方式是不同的。下面给出找到热块的SQL语句:

    03

    【DB笔试面试642】在Oracle中,什么是基数反馈(Cardinality Feedback)?

    基数反馈(Cardinality Feedback,CFB)是Oracle 11gR2出现的一个新特性,它的出现是为了帮助Oracle优化器依据更精准的基数生成更加优秀的执行计划。基数的评估准确与否,对于优化器异常重要,直接影响到后续的JOIN COST等重要的成本计算评估。若评估不当则会造成CBO选择不当的执行计划。此技术对于仅执行一次的SQL无效,在SQL第一次执行时,记录存储实际的基数和评估的基数之间的差异,如果差异较大,在第二次执行时,优化器会依据实际的基数重新决策生成执行计划,但是需要注意的是,当使用更准确的基数重新生成执行计划时,生成的执行计划与第一次时使用的执行计划完全有可能是相同的。这个技术的出现是由于优化器在一些情况下不能很好的去计算基数的数值,比如:统计信息缺失或陈旧、多谓词、直方图缺失等等。

    01

    SAP编号范围对象相关函数

    NUMBER_RANGE_INTERVAL_LIST 这个函数模块获取指定编号范围对象的现存间隔,并且放到内表中。这个内表可以被传递给函数模块NUMBER_RANGE_INTERVAL_UPDATE来修改间隔。 NUMBER_RANGE_INTERVAL_UPDATE 用这个函数模块可以维护给定编号范围对象的间隔。变更都被传递到一个内表中,并且复制到本地内存。在调用这个函数模块前,必须用NUMBER_RANGE_ENQUEUE锁定编号范围对象,而在把修改写入到数据库之后,再用NUMBER_RANGE_DEQUEUE执行解锁。调用函数模块NUMBER_RANGE_UPDATE_CLOSE把本地内存中的内容复制到数据库中。 NUMBER_RANGE_OBJECT_GET_INFO 这个函数模块获取指定编号范围对象的信息。这些信息被放在一个表结构中,必须被声明为结构INROI类型。 NUMBER_RANGE_SUBOBJECT_LIST(只用于对象类型4~8) 这个函数模块获取指定编号范围对象的现有子对象。这些子对象被放在一个内表中。 NUMBER_RANGE_SUBOBJ_GET_INFO(只用于对象类型4~8) 这个函数模块获取指定编号范围对象的现存子对象的信息。这些信息放在一个类型为INROI的表结构中。 NUMBER_RANGE_UPDATE_CLOSE 用这个函数模块把在本地内存中通过函数模块NUMBER_RANGE_GROUP_UPDATE和NUMBER_RANGE_INTERVAL_UPDATE所做的修改写入数据库。在调用这个函数模块之后,应该把被修改的编号范围对象解锁。 NUMBER_RANGE_UPDATE_INIT 如果想要撤销所有尚未被写入数据库的本地内存修改,就可以用这个函数模块重新初始化本地内存。 编号范围对象读取和维护服务 函数组SNR2 这个函数组中的函数模块可以读取和维护数据库中的所有编号范围对象。 NUMBER_RANGE_OBJECT_MAINTAIM 这个函数模块提供了所有维护指定编号范围对象的屏幕,并且提供维护间隔分支和显示修改文档的能力。用户对编号范围对象执行的操作都会传递到输出参数里。 NUMBER_RANGE_OBJECT_CLOSE 用这个函数模块可以把用NUMBER_RANGE_OBJECT_UPDATE函数模块对编号范围对象做出的修改写入到数据库中。如果间隔被修改影响了,也会一起写入。同时为所有修改创建修改文档。有一个标记会记录间隔是否被修改。 NUMBER_RANGE_OBJECT_DELETE 用这个函数模块可以删除整个编号范围对象的定义,包括它的文本。这个操作直接对数据库。这个函数模块不提供到修正和传输系统的连接。 NUMBER_RANGE_OBJECT_INIT 用这个函数模块可以初始化给定编号范围对象的本地内存。如果在用户事务中提供了编号范围对象维护功能,并且想要在没有保存时提供撤销功能,就可以使用它。 NUMBER_RANGE_OBJECT_LIST 用这个函数模块获取系统中的全部编号范围对象和相关文本。信息都保存在一个内表中。不需要考虑本地内存的内容。 NUMBER_RANGE_OBJECT_READ 这个函数模块获取指定编号范围对象的文本和属性。返回的记录可以用函数模块NUMBER_RANGE_OBJECT_UPDATE和NUMBER_RANGE_OBJECT_DELETE来修改。 NUMBER_RANGE_OBJECT_UPDATE 这个函数模块首先执行错误检查,如果无误,就把新建的编号范围对象或修改过的编号范围对象复制到本地内存中。它不提供到修正和传输系统的连接。 编号分配和检查 函数组SNR3 这个函数组中的函数模块管理编号分配。 NUMBER_CHECK 只有在外部给号的时候才需要这个函数模块,它检查一个编号范围对象编号是否存在于指定的编号范围间隔。 NUMBER_GET_INFO 这个函数模块获取指定编号范围对象中的编号范围间隔的信息。 NUMBER_GET_NEXT 当内部给号的时候需要用这个函数模块,它分配指定编号范围对象中的编号范围间隔的下一个空余编号。如果间隔中的最后一个编号也被发放了,号码分配就会从头开始。返回码状态说明号码分配是否出错,或者是已经进入临界区。 实用程序 函数组SNR4 NUMBER_RANGE_INTERVAL_INIT 使用这个函数模块可以初始化指定编号范围对象及其子对象的全部内部编号范围间隔。 术语表 业务对象

    01
    领券