|
|
Re: 我的猜测
最初由 biti_rainy 发布
[B]1: 最大并发用户多大?session_cached_cursors = 100 ,会导致 用户大一些的话占用大量内存
从而使其他sql的解析 命中率 很低,你虽然缓存了这么多,但实际上 整个命中率 只有 90%,难道你就不该分析一下原因?
你的 内存用到哪里去了,是不是应用本身的问题
2:相对hard parse 来说,session_cached_cursors 所节省的 soft parse 的开销简直可以忽略不记
看样子硬解析好象不多,是软解析多,session_cached_cursors 缓存的cursors 未必都派上了用场,但由于它的存在,使用了大量的内存和CPU ,由于必须跟应用特征结合起来分析,所以对于经验值上来说,我不确信100和10 差异有多大
也许,然后设置这个参数,也许没有起到太大的作用
反而带来了一系列 的 内存 和CPU 的问题
建议: 逐步减小 shared_pool_size ,逐步减小 session_cached_cursors 然后看效果 [/B]
这些参数都不是我设置的,我刚接手。据说一年前Oracle公司的人曾调过参数。后来的管理员有没改过就不知道了。因为我们用的Applicatiion Server,很多是固定的模块,存在大量的动态sql,软解析多是没法子的事情。客户都在窗口输入然后生成定单之类的东西,由变量传递,所以硬解析也少。当然最终还是查应用,找出为什么latch free 跟enqueue的竞争可以吃掉将近一半的资源。目前能做的就是调一下shared_pool_size ,试图减少library cache latch 跟
shared pool latch的竞争,至于最严重的cache buffers chains,要慢慢找内存的sql了。 |
|