Direct IO+asm引起css initialization
来源:互联网 发布:淘宝安全刷销量 编辑:程序博客网 时间:2024/05/20 01:13
某数据库升级到12c后(应用代码也升级了),出现了大量css initialization的等待:
怀疑是否是12c的新特性导致。
CSS initialization 说明:
在RAC(或使用ASM的单实例)数据库环境下,当前台进程需要执行direct IO操作时,需要向CSSD进程进行注册,此时该前台进程发生CSS initialization等待。
在11g还是12c上,CSS initialization的触发原理都没有改变,该event是一个direct IO的预期行为,任何前台进程在需要进行direct IO的情况下,都必须进行一次CSS注册,之后就可以被允许进行direct IO操作。
我们知道,对LOB对象操作的时候,第一次操作的时候,是会进行direct IO的,后续的操作,要看LOB对象是否有cache,如果有cache,那么就不会进行direct OI,也就不会进行CSS initialization。
如果没有cache,那么每一次dml操作都要进行CSS initialization。那么就会出现这个客户遇到的情况一样,大并发的情况下,大量进程处于CSS initialization的等待了,并且cssd.bin进程的CPU使用率也会变得非常高。
所以通过情况下,我们不建议对频繁操作的核心业务表加LOB字段的。如果确实需要LOB字段,需要使用cache特性。请注意,这里是LOB对象的cache,而不是table的cache属性。我犯过一个错误,一个细微的差别导致加cache到table上,而不是LOB对象上,所以无论怎么测试,都无法重新客户的场景。
我建立的表如下:
CREATE TABLE wrong_tab_securefile_cache(
idNUMBER,
clob_dataCLOB)
LOB(clob_data)STOREASSECUREFILE cache
tablespaceusers;
正确的表的建立方式如下:
CREATE TABLE tab_securefile_cache(
idNUMBER,
clob_dataCLOB)
LOB(clob_data)STOREASSECUREFILE(cache)
tablespaceusers;
仅仅是有没有括号的差别,即一个是cache,一个是(cache)。
第一个的cache属性是加在表上的,第二个表的cache属性是加在LOB上的。所以,如果我们把LOB对象加到cache中,就不会那么剧烈的遭受css initialization。
最后,客户是通过LOB字段改成varchar2字段解决
转载于:云和恩墨何剑敏老师文章
- Direct IO+asm引起css initialization
- direct initialization & copy initialization
- C++:copy initialization & direct initialization
- Direct IO
- direct io
- direct-io
- Direct IO
- direct io/buffer io
- Direct IO in linux
- 关于direct io
- 关于direct io
- 关于direct io
- 关于Direct IO
- linux direct io
- direct io优化
- Direct IO的程序实现
- 文件系统direct io 和buffer io
- Direct IO和Buffered IO简单分析
- datetimepicker 插件用法
- shell 脚本之开篇
- Java 经验总结
- 网络攻击常见方式
- 简历中五大致命的常见错误
- Direct IO+asm引起css initialization
- 【Hibernate】——概述
- linux定时任务的设置 crontab 配置指南
- 如何为Ubuntu 14.04上的多Apache虚拟主机环境设置Let's Crypt安全证书
- mysql数据库(一)
- android仿微信朋友圈点击评论效果
- SQL 获取当月周别,当周星期以及当前时间
- Meta http-equiv属性详解
- 无痛的机器学习第一季目录