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

广东省建设职业注册中心网站外贸软件

广东省建设职业注册中心网站,外贸软件,wordpress的主题博客,营销型手机网站建设小伙伴们#xff0c;有没有因为统计信息不准#xff0c;导致了业务卡顿#xff0c;各种状况频出#xff0c;这几天在实践和实操的过程中#xff0c;时不时就需要进行统计信息的收集。同时统计信息收集的动作也是OCM必考内容。 数据库中的数据是地图#xff0c;统计信息是…小伙伴们有没有因为统计信息不准导致了业务卡顿各种状况频出这几天在实践和实操的过程中时不时就需要进行统计信息的收集。同时统计信息收集的动作也是OCM必考内容。 数据库中的数据是地图统计信息是导航仪而优化器则是驾驶策略的制定者CBO依赖统计信息做出最优成本和路径选择。 一、统计信息功能 在Oracle数据库管理中统计信息收集Statistics Gathering是非常非常重要的环节直接影响着数据库的性能优化和查询效率。 优化查询性能 数据库优化器使用统计信息来评估执行计划的成本选择最优的执行路径。可以根据列的分布、表的大小、索引的选择性等信息来决定是全表扫描还是索引扫描。 自动调整执行计划 统计信息帮助数据库自动调整执行计划。随着数据的变化统计信息会更新这可以确保数据库持续使用最优的执行策略。避免因数据分布变化导致的执行计划突变Plan Flip 提高查询的准确性 统计信息提供了关于数据的精确度这对于估算查询结果的行数非常关键。在执行聚合查询如COUNT、SUM等时准确的统计信息可以确保返回的结果更加准确。 改善成本估算 数据库优化器通过统计信息来估算各种操作的成本如扫描行数、连接操作的开销等。这些估算用于选择最佳的查询执行计划。减少不必要的I/O和CPU消耗降低全表扫描风险 支持分区和物化视图 对于使用分区表和物化视图的数据库设计统计信息对于优化器的决策至关重要。分区表的选择性统计可以帮助优化器更有效地决定使用哪个分区。 支持高级功能 同样支持高级功能自动SQL调优、数据仓库优化器这些也将依赖于准确的统计信息来提供最佳的性能。 二、收集方式 1. ​自动收集机制​ Oracle通过GATHER_STATS_JOB自动任务实现智能收集 ​触发条件​当DBA_TAB_MODIFICATIONS中记录的DML量 表行数的10%时标记为陈旧Stale​时间窗口​默认工作日晚10点-早6点及周末全天​优先级策略​先处理缺失统计信息对象再处理陈旧度高的对象 --启用命令BEGINDBMS_AUTO_TASK_ADMIN.ENABLE(client_name auto optimizer stats collection,operation NULL,window_name NULL); END; / --PL/SQL procedure successfully completed. --直接用表名和用户名可以做粗略收集其他按照列等选项收集需要细化 EXEC DBMS_STATS.GATHER_SCHEMA_STATS(用户名); EXEC DBMS_STATS.GATHER_TABLE_STATS(用户名, 表名); 2. ​手动收集原则​ 以下场景需手动干预 ​ETL作业后​避免优化器使用陈旧信息​数据分布倾斜​存在极端值的列需特殊处理​性能敏感对象​核心业务表结构变更后导出到导入必要收集统计信息 三、统计信息的要点 下面用SH Schema验证统计信息直接决定分区表SALES、大表CUSTOMERS的查询效率 ​优化器决策依据​统计信息为CBO提供数据分布特征。举例 -- 查看SALES表统计信息关键字段 SELECT num_rows, blocks, avg_row_len FROM dba_tables WHERE ownerSH AND table_nameSALES; --NUM_ROWS BLOCKS AVG_ROW_LEN ---------- ---------- -----------0 0 0 若num_rows严重偏离实际值如因数据迁移未更新优化器可能错误选择全表扫描而非分区裁剪。 ​资源消耗优化​准确的索引统计信息如CUSTOMERS_PK的聚簇因子可避免低效索引扫描 SELECT clustering_factor FROM dba_indexes WHERE index_nameCUSTOMERS_PK; -- CLUSTERING_FACTOR -----------------00 高聚簇因子接近表块数表明索引效率低需结合统计信息调整索引策略。  四、举例SH Schema的统计信息收集方法 自动收集策略优化 启用增量收集降低分区表开销 -- 开启SALES表增量统计 EXEC DBMS_STATS.SET_TABLE_PREFS(SH, SALES, INCREMENTAL, TRUE); --PL/SQL procedure successfully completed. -- 验证设置 SELECT preference_value FROM dba_tab_stat_prefs WHERE ownerSH AND table_nameSALES AND preference_nameINCREMENTAL; --效果​仅收集数据变更的分区。 PREFERENCE_VALUE -------------------------------------------------------------------------- TRUE 设置用户SH自动收集任务  BEGINDBMS_SCHEDULER.CREATE_JOB (job_name gather_stats_job,job_type PLSQL_BLOCK,job_action BEGIN DBMS_STATS.GATHER_SCHEMA_STATS(SH); END;,start_date SYSTIMESTAMP,repeat_interval FREQDAILY; INTERVAL1, -- 例如每天执行一次enabled TRUE,comments 自动收集统计信息); END; / 手动收集关键场景 ​1. 直方图精准控制​ 对偏斜字段SALES.AMOUNT_SOLD收集等高直方图 BEGINDBMS_STATS.GATHER_TABLE_STATS(ownname SH,tabname SALES,method_opt FOR COLUMNS SIZE 254 AMOUNT_SOLD, -- 254桶数degree 4); END; / -- PL/SQL procedure successfully completed. SYSFREE -- 验证直方图 SELECT column_name, histogram, num_buckets FROM dba_tab_cols WHERE ownerSH AND table_nameSALES AND column_nameAMOUNT_SOLD; -- COLUMN_NAME HISTOGRAM NUM_BUCKETS ______________ ____________ ______________ AMOUNT_SOLD NONE 0​判定​若HISTOGRAMHEIGHT BALANCED且NUM_BUCKETS100则有效反映数据分布。  ​2. 分区级统计验证​ 检测分区SALES_Q4_2001的陈旧状态--提前确认有分区  SELECT partition_name, stale_stats, last_analyzed FROM dba_tab_statistics WHERE ownerSH AND table_nameSALESAND partition_nameSALES_Q4_2024AND stale_statsYES; -- 陈旧状态检测 处理​若返回记录需对该分区单独收集  --提前检测确认分区 EXEC DBMS_STATS.GATHER_TABLE_STATS(SH,SALES,partnameSALES_Q4_2024); 三、可验证监控脚本举例SH Schema 准确性验证 对比COSTS表统计行数 vs 实际行数 WITH actual AS (SELECT /* DYNAMIC_SAMPLING(4) */ COUNT(*) actual_rows FROM sh.costs ) SELECT t.num_rows 统计行数,a.actual_rows 实际行数,ROUND(ABS((t.num_rows - a.actual_rows)/NULLIF(a.actual_rows,0))*100,2) diff_pct FROM dba_tables t, actual a WHERE t.ownerSH AND t.table_nameCOSTSAND ABS(t.num_rows - a.actual_rows) 10000; -- 差异1万行告警no rows selected ​阈值建议​diff_pct 5% 时需手动刷新统计。 自动任务健康监测 检查自动任务状态及失败历史 SELECT job_name, enabled, last_start_date,(SELECT COUNT(*) FROM dba_scheduler_job_run_details WHERE job_nameGATHER_STATS_JOB AND statusFAILED) fail_count FROM dba_scheduler_jobs WHERE job_nameGATHER_STATS_JOB UNION ALL -- 检查SH模式下统计信息锁定 SELECT STATS_LOCK, NULL, NULL, COUNT(*) FROM dba_tab_statistics WHERE ownerSH AND lockedYES; JOB_NAME ENABLED LAST_START_DATE FAIL_COUNT _____________ __________ __________________ _____________ STATS_LOCK 4890 ​ 处理逻辑​ fail_count 0 → 检查 dba_scheduler_job_logSTATS_LOCK 0 → 使用 DBMS_STATS.UNLOCK_TABLE_STATS 解锁。 四、实操体会 在举例SH Schema中需重点关注 ​分区表增量统计​降低90%收集开销尤其对时间分区字段如SALES.TIME_ID。​偏斜字段直方图​对金额/数量等高基数列AMOUNT_SOLD、QUANTITY_SOLD定制桶数。​混合收集策略​ 自动任务处理日常变更ETL后对SALES/COSTS手动刷新使用 PENDING STATS 测试 EXEC DBMS_STATS.SET_TABLE_PREFS(SH,SALES,PUBLISH,FALSE); -- PL/SQL procedure successfully completed. TIPS 通过统计信息收集可精准验证统计信息对查询优化的实际影响实现从理论到高效运维的闭环在进行大量数据加载或数据修改后及时重新收集统计信息是非常重要的以确保优化器能基于最新数据做出正确的决策。在生产环境中建议定期监控统计信息的准确性和完整性必要时进行手动或自动的调整和重新收集过度频繁地收集统计信息可能会影响系统性能因为这会增加数据库的负载。因此应根据实际需要平衡收集频率和系统性能。
http://www.w-s-a.com/news/9498/

相关文章:

  • 二手市场网站建设的目的长沙ui设计公司
  • 微信公众号做留言网站wordpress详情页选择模板
  • php网站开发面向对象教程如何做分享赚钱的网站
  • 山东网站建设最便宜常州网站建站公司
  • 网站地图 seo中国建设招标网是私人网站吗
  • 高中作文网站全网营销有哪些平台
  • 网站构建建设制作平台上海搬家公司收费价目表
  • 成功案例展示网站做网站赚多少钱
  • 建设银行网站用什么字体网站建站后维护需要做哪些
  • 有哪些做平面设计好素材网站有哪些开网站建设
  • 国际交流网站平台有哪些筑建网
  • 网站程序是如何开发的江门市住房建设管理局网站
  • 网站建设一般需要几个步骤昵图网免费素材
  • 个人网站建设需求说明书微信域名防封在线生成
  • 专业网站建设的公司wordpress后台没有模板
  • 哈尔滨网站运营服务商制作外贸网站公司
  • 个人网站需要备案宁波网站推广工具
  • 苏州建设银行网站首页wordpress修改密码
  • 网站建设员工技能要求网站制作简单协议
  • 没有ipc备案的网站wordpress isux主题
  • 清远做网站电子商务网站建设需要的语言及特点6
  • 万州那家做网站c语言基础知识入门
  • 齐河网站建设公司价格网站建设包括什么
  • 论坛网站开发费用怎么把文件放到网站的根目录
  • 海南省零售户电商网站官渡区住房和城乡建设局网站
  • 怎么找淘宝客网站最新军事战况
  • 缺乏门户网站建设网页设计与制作项目教程第二版
  • 手机网站横竖屏一般做建设的是什么公司
  • 免费网站建设无广告网站开发 华景新城
  • 湖州网站制作报价西安网站开发有哪些公司