PCT FREE为0与read by other session等待事件的关联咨询
PCT FREE=0 与
read by other session 等待事件的关联 数据块争用加剧的根源
当表的PCT FREE设为0时,数据块会被完全填满,没有预留任何空间给后续的更新操作。对于每日有大量DML(插入/更新/删除)的表,一旦发生字段值变长的更新,原数据块无法容纳更新后的行,就会触发行迁移(整行被移到新块,原块留下指向新块的指针)或行链接(行被拆分存储在多个块中)。直接触发等待事件的机制
行迁移/链接会让查询或更新操作需要读取多个数据块才能获取完整行数据。当多个会话同时访问这些涉及迁移/链接的块时,就会出现一个会话等待另一个会话完成块读取的情况,直接触发read by other session等待事件。这种争用在高并发DML场景下会被显著放大。过期统计信息的叠加影响
3个月未更新的表统计信息会误导优化器生成低效执行计划(比如错误选择全表扫描、不合适的索引访问路径),导致更多不必要的数据块访问,进一步加剧read by other session的发生频率。调整PCT FREE的收益逻辑
合理设置PCT FREE(通常根据更新字段的平均长度变化,设置为5%-20%),能在数据块中预留足够空间容纳更新后的行,从根源减少行迁移/链接的发生,进而降低多会话间的块级争用,缓解read by other session等待。
内容的提问来源于stack exchange,提问作者Baalback
相关产品推荐
相关产品推荐

