zoukankan      html  css  js  c++  java
  • DM达梦数据库索引失效的处理---强制更新统计信息

    近期启动了基于达梦数据库的大数据量性能测试,发现创建索引后并不会自动更新对应的统计信息。

    现象描述

    我们在使用达梦数据库的过程中,有时候碰到一个这样子的情况:

    Create  table  manyrows_tables;

    Select  * from manyrows_tables where col=xx; -- 查询很慢

    Create index test_1 on manyrows_tables(col);

    Select  * from manyrows_tables where col=xx; -- 查询还是很慢?

    处理方法

    根据达梦的官方文档资料介绍,收集统计信息一共有三种方式:

    1. Sp 系统函数: SP_TAB_STAT_INIT ( 'SYSDBA' , 'TEST_TABLE' );   SP_INDEX_STAT_INIT ( 'SYSDBA' , 'IDX_TEST_COL1' );等

    2. Stat 命令:Stat 100 on test(col);

    3. Dbms_stats 系统包:  DBMS_STATS.GATHER_TABLE_STATS('USERNAME','TABLENAME',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');

    但实测发现,前两种方式都没有生效,DBMS_STATS.GATHER_XX 执行成功后貌似还要等N分钟后,才能真正生效,不清楚DM内部是什么操作逻辑。

     

    根据DM文档和网上资料看,貌似可以创建计划任务作业定时进行统计信息的更新收集。

     

    参考资料:
    http://blog.itpub.net/69949798/viewspace-2661599/
    https://blog.csdn.net/weixin_42845771/article/details/104772553

    DBMS_STATS包 :收集统计信息,删除统计信息

    1、table_stats_show 获取表的统计信息。

    2、column_stats_show 获取列的统计信息,返回列的统计信息,另一个时直方图的统计信息。

    3、index_stats_show 获取索引的统计信息。

    GATHER_TABLE_STATS 收集表,表中的列,索引的统计信息

    GATHER_INDEX_STATS 收集索引的统计信息。

    GATHER_SCHEMA_STATS 收集模式下的对象统计信息。

    DLETE_TABLE_STATS 删除表相关的统计信息。

    DELETE_INDEX_STATS 删除索引的统计信息。

    DELETE_COLUMN_STATS 删除列的统计信息。

    那些对象不支持统计信息:

    1、外部表、DBLINK远程表 、动态视图表、临时表。

    2、所在表空间为OFFLINE的对象。

    3、位图索引、全文索引

    4、数据类型:blob image clob text… 也不支持 自定义类型和空间类型也不支持。

        dbms_stats.gather_schema_stats('USERNAME',100,TRUE,'FOR ALL INDEXED COLUMNS SIZE AUTO');

        dbms_stats.gather_table_stats(ownname => 'USERNAME',tabname => 'TABLENAME',estimate_percent => 100 ,method_opt => 'for all columns SIZE AUTO' ,cascade => true);

        dbms_stats.index_stats_show ('GSCLOUD2003' , 'IDX_FSBZDJ_BXR');

        dbms_stats.column_stats_show ('GSCLOUD2003', 'FSBZDJ' , 'FSBZDJ_BXR');

        dbms_stats.column_stats_show ('GSCLOUD2003', 'FSBZDJ' , 'FSBZDJ_USERID');

    查看执行计划

    explain for select * from t1 where id=1;

  • 相关阅读:
    U8自动、手动备份不成功 “远程组件初始化失败”
    关于延迟时间的一点智慧
    xe 最大连接数限制、记录客户连接、心跳
    应用开发框架之——根据数据表中的存储的方法名称来调用方法
    固定资产卡片管理累计折旧数不准确
    整理表索引
    用友U8固定资产总账重算语句
    新建自定义报表发布到普通菜单节点流程
    怎么更改月折旧率的小数位
    重建数据库索引等SQL常用语句
  • 原文地址:https://www.cnblogs.com/zhaoguan_wang/p/13509009.html
Copyright © 2011-2022 走看看