当前位置: 首页 > news >正文

Oracle统计信息收集时的锁持有阶段

Oracle统计信息收集时的锁持有阶段

1 准备阶段(共享模式锁)

锁类型:对象级共享锁(S锁)
持续时间:通常1-5秒
主要操作

  • 验证对象存在性和权限
  • 检查统计信息首选项设置
  • 确定采样方法和并行度

监控方法

SELECT * FROM v$session_wait 
WHERE sid = [收集会话SID] 
AND wait_class != 'Idle';

2 数据采样阶段(行级锁)

锁类型:行级排他锁(TX锁)
特点

  • 仅在被采样的行上短暂持有
  • 锁持续时间与采样方法相关:
    • 全表扫描:几乎不持有行锁
    • 随机采样:每采样行约1-10毫秒

规避策略

BEGINDBMS_STATS.SET_TABLE_PREFS('SCHEMA', 'TABLE', 'METHOD_OPT', 'FOR ALL COLUMNS SIZE AUTO');
END;

3 统计计算阶段(无持久锁)

特点

  • 纯CPU计算过程
  • 仅持有内存中的临时结构
  • 可能短暂获取library cache latch

资源消耗

-- 监控CPU使用
SELECT * FROM v$sysmetric 
WHERE metric_name = 'CPU Usage Per Sec'
AND group_id = 2;

4 数据字典更新阶段(排他锁)

锁类型:数据字典排他锁(X锁)
关键操作

  • 更新SYS.TAB_STATS$等基表
  • 修改USER_TAB_STATISTICS等视图数据
  • 持续时间通常<100ms

优化建议

-- 使用NO_INVALIDATE减少锁影响范围
BEGINDBMS_STATS.GATHER_TABLE_STATS(ownname => 'SCHEMA',tabname => 'TABLE',no_invalidate => FALSE);
END;

5 游标失效阶段(库缓存锁)

锁类型:library cache lock/pin
行为特点

  • 使依赖该表统计信息的游标失效
  • 可能引发硬解析风暴
  • 持续时间与依赖游标数量成正比

监控方法

SELECT * FROM v$librarycache 
WHERE namespace = 'SQL AREA';

各版本差异对比

版本锁优化改进影响阶段
11gR2引入增量统计收集减少数据字典更新锁时间
12c默认并发收集缩短整体锁持有时间
19c持久化统计信息设置减少重复收集锁争用
21c自动异步统计收集完全避免业务时段锁争用
http://www.dtcms.com/a/192686.html

相关文章:

  • UDP 多点通信
  • 高频交直流电流测量技术:射频PA与MEMS测试的简单解决方案
  • Buildroot 移植MiniGUI
  • Python高级进阶:Vim与Vi使用指南
  • 多模态大语言模型arxiv论文略读(七十七)
  • 一站式本地化方案,解决欧洲反向海淘多重难题
  • 【Linux】网络基础与socket编程基础
  • 【中级软件设计师】网络攻击(附软考真题)
  • [Harmony]大文件持久化
  • Spring Boot多数据源配置的陷阱与终极解决方案
  • 2025 年十大网络安全预测
  • 【问题记录】08 MAC电脑,安装HP打印机驱动,提示:此更新需要macOS版本15.0或更低版本
  • 汽车零部件冲压车间MES一体机解决方案
  • CAPL编程系列_04
  • Linux线程互斥锁
  • 【C++】set和multiset的常用接口详解
  • AWS Elastic Beanstalk控制台部署Spring极简工程
  • 【Java ee】关于抓包软件Fiddler Classic的安装与使用
  • React 第四十一节Router 中 useActionData 使用方法案例以及注意事项
  • 观测云产品更新 | 安全监测、事件中心、仪表板AI智能分析等
  • 唐婉歆携作品VoyEase亮相2025米兰设计周,以多感官沉浸式设计重塑全球旅行体验
  • 2025年5月AI科技领域周报(5.5-5.11):AGI研究进入关键验证期 具身智能开启物理世界交互新范式
  • 数据可视化-----子图的绘制及坐标轴的共享
  • Linux的进程管理和用户管理
  • C++ Mac 打包运行方案(cmake)
  • 工业大数据的定义
  • 国产数据库工具突围:SQLynx如何解决Navicat的三大痛点?深度体验报告
  • SQL优化总结
  • TASK02【Datawhale 组队学习】使用 LLM API 开发应用
  • 一:操作系统概述之操作系统发展历史和分类