消除热块(hot block)

上篇日志提到了,那么高的负载,是存在数据块读竞争,下面介绍几个方法来消除块竟争

查找块竟争

SELECT p1 "file#", p2 "block#", p3 "class#"
FROM v$session_wait
WHERE event = ‘read by other session‘;
如果查出来是相同的块或是相近的范围,这就是存在竞争的块或对象

找出对象

SELECT relative_fno, owner, segment_name, segment_type
FROM dba_extents
WHERE file_id = &file
AND &block BETWEEN block_id AND block_id + blocks - 1;
解决竟争
1,优化低效查询
2,重组热块数据
reinsert and delete hot row will move them to new datablock,可以减小热块提高性能,

SELECT data_object_id
FROM dba_objects
WHERE owner=‘&owner‘ AND object_name=‘&object‘;

SELECT dbms_rowid.rowid_create(1,<data_object_id>,<relative_fno>,<block>,0) start_rowid
FROM dual;
--rowid for the first row in the block

SELECT dbms_rowid.rowid_create(1,<data_object_id>,<relative_fno>,<block>,500) end_rowid
FROM dual;
--rowid for the 500th row in the block

Insert <owner>.<segment_name>
select *
FROM <owner>.<segment_name>
WHERE rowid BETWEEN <start_rowid> AND <end_rowid>

delete FROM <owner>.<segment_name>
WHERE rowid BETWEEN <start_rowid> AND <end_rowid>
3,调整 PCTFREE
djusting the PCTFREE value downward for an object will reduce the number of rows physically stored in a block

Note: PCTFREE is still required even with ASSM because it determines how rows will be packed into blocks, while freelists, pctused and pctincrease are ignored with ASSM because they are used for transaction/block management

4,把hot 对象移动到小block size tablespace中 如 2k block size

5,优化索引
a low cardinality index has a relatively small number of unique values, e.g. a column containing state data with only 50 values. Similar to inefficient queries, the use of a low cardinality index could cause excessive number of blocks to be read into the buffer cache and cause premature aging out of “good” blocks

6,反转索引优化 减小index block 竟争

7,cluster hash table, hash partition table 来打算数据

时间: 2024-10-12 02:37:19

消除热块(hot block)的相关文章

[精通Objective-C]块(block)

[精通Objective-C]块(block) 参考书籍:<精通Objective-C>[美] Keith Lee 目录 精通Objective-C块block 目录 块的语法 块的词汇范围 块的内存管理 块的使用 使用块为数组排序 使用块的并行编程方式 块的语法 块是一个实现的闭包,一个允许访问其常规范围之外变量的函数.此外,一个Objective-C块实际上就是一个对象,它是NSObject类的子类,拥有NSObject类的相关属性. 块的声明: int (^oneParamBlock)(

包含块( Containing block ) 转自W3CHelp

包含块简介 在 CSS2.1 中,很多框的定位和尺寸的计算,都取决于一个矩形的边界,这个矩形,被称作是包含块( containing block ). 一般来说,(元素)生成的框会扮演它子孙元素包含块的角色:我们称之为:一个(元素的)框为它的子孙节点建造了包含块.包含块是一个相对的概念. <div> <table> <tr> <td>hi</td> </tr> </table> </div> 以上代码为例,DI

块语法Block在MVC思维的妙用之多重M层代理传值

注:以下代码均来自真实项目案例. 在项目开发中,经常避免一些与系统工具交互的功能需求.比如说开启蓝牙,开启相机,通讯录功能,还有数据加密等等. 由于这些功能的实现没有实例化的必要,并且又是许多项目都共用的功能,所以一般我们会作为类的静态方法去作为自己的工具类. 以下是一段将字典的键值对导入通讯录的静态方法代码. 假如说现在有一个这样的逻辑流程,C层按钮交互,将页面某个数据加密导入通讯录. 让我们以MVC的思维梳理一下整过流程. 在这整个事件中,有三个参与者.页面(C层),加密(M层),通讯录导入

PHP Smarty 模板 自定义函数function和块函数block

自定义函数 function.yangA.php页面 采用插件形式调用 <?php /*  * 文件名    * function.函数名.php    function.yangA.php  * 声明的函数名规则  * smarty_function_函数名()  smarty_function_yangA  * 参数  * 1.数组 array  * 2.smarty  * 模板使用  * <{yangA content="I am Mr.Yang" color=&qu

[转]包含块( Containing block )

原文链接:KB008: 包含块( Containing block ) - W3Help 包含块简介 在 CSS2.1 中,很多框的定位和尺寸的计算,都取决于一个矩形的边界,这个矩形,被称作是包含块( containing block ). 一般来说,(元素)生成的框会扮演它子孙元素包含块的角色:我们称之为:一个(元素的)框为它的子孙节点建造了包含块.包含块是一个相对的概念. <div> <table> <tr> <td>hi</td> <

通过案例学调优之--Oracle数据块(block)

数据块概述Oracle对数据库数据文件(datafile)中的存储空间进行管理的单位是数据块(data block).数据块是数据库中最小的(逻辑)数据单位.与数据块对应的,所有数据在操作系统级的最小物理存储单位是字节(byte).每种操作系统都有一个被称为块容量(block size)的参数.Oracle每次获取数据时,总是访问整个数(Oracle)数据块,而不是按照操作系统块的容量访问数据. 数据库中标准的数据块(data block)容量是由初始化参数 DB_BLOCK_SIZE 指定的.

块元素(block element)和内联元素

内联元素和块状元素能够用 display :block/inline   相互转换 块状元素变成内联元素的话,他的高就会失效而变为行高: 使用display:inline-block,让行内元素同时具有行内元素特性也能设置宽高 如果display:none的话,该元素就会不见 块状元素   address - 地址 blockquote - 块引用 center - 举中对齐块 dir - 目录列表 div - 常用块级容易,也是CSS layout的主要标签 dl - 定义列表 fieldse

块对象block小结

blcok的形式 ^(参数列){主体} block作为返回值 块对象 和 类声明 特点:1.不指明返回值类型,向swift的闭包函数 block中的行为变量: block中会保存局部变量的值,只有重新给block赋值,才会改变局部变量的值 总结: 局部变量只能读取和复制值,运行时相当于前面加了const修饰

代码块(block)之函数体(二)

代码块存储的数据是一个函数体.使用代码块是,你可以像调用其他标准函数一样,传入参数数,并得到返回值. //block作为函数的参数 //函数返回值类型 函数名(block的声明格式) void fun(int (^block)(int a,int b)){ int sum=block(5,6); NSLog(@"%d",sum); } void fun1(NSString *(^myBlock)(NSString *s),NSString *s1){ NSLog(@"%@&q