1. bucket是不是代表了一种等级?
2. 如果bucket不是一种等级,而是存储单元,那么100m的shared pool与300m,他们的bucket是怎么分配的?
3.DB重启后,bucket是如何分布的?
我的理解:
bucket是一种等级,当要分配内存时,会找到最适合的bucket,8i的bucket等级太少,因此很容易将大部分内存请求分至一个等级内,导致搜索延时,造成latch的争用,9i细化了bucket的等级,有效地错开不同大小的内存请求,使搜索加快,觉得shared pool基本无法进行人为干涉调整,只能依靠oralce版本升级时改进算法,但有一点没有明白,当内存请求分配BUCKET后,有时产生了多余的块,这些块是如何处理的
自己做了个试验
重启DB后
select * from dba_objects;
软后观察x$ksmsp的变化
KSMCHSIZ CT_KSMCHSIZ B_KSMCHSIZ B_CT_KSMCHSIZ
---------- ----------- ---------- -------------
32 53 32 56
84 23 84 24
96 521 96 542
188 160 188 169
240 47 240 48
284 224 284 228
304 294 304 302
320 41 320 42
500 84 500 87
540 475 540 485
560 1097 560 1155
564 25 564 26
756 41 756 44
2232 91 2232 133
4144 102 4144 117
为什么会有这么多的块增加?
以上是我的理解,还是觉得有问题,请大家指点一下?