精华内容
下载资源
问答
  •  后来我们进一步调查了统计信息没有能够及时更新的原因,因为我们对数据库的统计信息设置的是自动更新,意味着统计信息 每隔一段时间会根据数据库的实际情况刷新一次,我们取数据库的备份时,可能刚好数据库还...

              年底前在开发一个SQL Server BI项目的过程中,我们测试SSIS包的时候,发现有好几天晚上取数的时间都超出了以前的

    取数时间,刚开始我们以为是换了服务器,服务器硬件的性能有差异导致,后来我们仔细观察了服务器硬件资源的使用情况,发

    现服务器的硬件资源不大可能是导致运行时间变长的原因。后来我们继续调查网络状况,监控速度变慢的这几天网络的监控情况,

    通过对比也没有发现最近几天网络有异常而导致取数时间的变慢。

              我们只是变更了数据源,将以前取数的数据库更换成了一个较新的数据库,由于数据库最近做了些结构上优化和调整,我们

    重新取了一个数据库备份还原后做测试。于是我们开始考虑是否由于数据库的统计信息变化导致数据库查询的性能下降,因而导致

    我们的SSIS取数时间增加了呢?下午我们首先将数据库的统计信息进行了全面的更新,更新数据库的统计信息整整花了2个小时。更

    新完成后,我们就开始运行作业跑数据,第二天早上我们来看运行数据时,发现还真是统计信息没有更新造成我们的取数过程变慢

    的了。在我们更新统计信息的前,取数要8个小时还跑不完,但是当我们更新完统计信息后,跑数据只需要4个小时多点就可以了。

              后来我们进一步调查了统计信息没有能够及时更新的原因,因为我们对数据库的统计信息设置的是自动更新,意味着统计信息

    每隔一段时间会根据数据库的实际情况刷新一次,我们取数据库的备份时,可能刚好数据库还没有来得及刷新统计信息,因为我们

    数据库服务器白天比较繁忙,一般晚上才会去刷新统计信息。

               真相大白,困扰了我们一个星期的难题也得以破解。

     


                  

    展开全文
  • 如何更新统计信息

    千次阅读 2018-01-23 13:20:18
    更新统计信息之前,先说一下什么是统计信息,有什么作用。 统计信息其实就是表中的记录数、字段个数、每行数据占用字节数、某个字段中每一种值的个数等。 在一个sql通过语法检查、语义检查、权限检查后...

    在更新统计信息之前,先说一下什么是统计信息,有什么作用。


    统计信息其实就是表中的记录数、字段个数、每行数据占用字节数、某个字段中每一种值的个数等。


    在一个sql通过语法检查、语义检查、权限检查后,sql优化器会用统计信息,来优化sql,生成多个执行计划,计算每个执行计划的cost(预估的),看哪个最小,就选择这个执行计划,接下来按照这个plan执行sql。

    所以,如果统计信息不够准确,就会导致sql优化器误判,产生的执行计划不够最优,或者生产的cost不准确,最后反而选择了实际成本更高的,导致性能很差。


    (1)那么,如何更新统计信息呢?

    其实更新统计信息的语句特别简单:update statistics  表名

    sql server会按照一定的百分比,扫描表中的数据,更新统计信息,而不会扫描整个表的所有数据。


    (2)更新统计信息对系统有什么影响?

    更新统计信息时,会对表加只读锁,所以会阻塞对表的修改操作。

    不过,由于扫描数据的百分比很小,这个锁定过程持续的时间会很短,所以影响不大。


    另外,更新统计信息后,会导致相关表的执行计划无效,之前编译缓存的存储过程如果再次执行,会被重新编译。


    展开全文
  • Trafodion更新统计信息原理分析

    千次阅读 2020-01-31 21:12:54
    在前面的文章Trafodion 更新统计信息数据收集 中我们介绍了如何查看更新信息统计的详细步骤,今天正好有空对更新统计信息日志做了一些基本的分析,也算是大致了解了更新统计信息的内部原理了吧,以下内容对更新统计...

    在前面的文章Trafodion 更新统计信息数据收集 中我们介绍了如何查看更新信息统计的详细步骤,今天正好有空对更新统计信息日志做了一些基本的分析,也算是大致了解了更新统计信息的内部原理了吧,以下内容对更新统计信息的步骤做了一些简化,希望没有不小心剔除掉重要的点。

    1. Get Detail Update Statistics Log

    sqlci
    cqd ustat_log ‘ustat_2020.log’; --the log file will be generated under cdl
    update statistics log on;
    update statistics for table <table_name> on every column sample;
    exit

    2. Understanding Update Statistics Log

    2.1. Set CQDs
    CONTROL QUERY DEFAULT QUERY_CACHE ‘0’
    CONTROL QUERY DEFAULT CACHE_HISTOGRAMS ‘OFF’
    CONTROL QUERY DEFAULT USTAT_MODIFY_DEFAULT_UEC ‘0.05’
    CONTROL QUERY DEFAULT OUTPUT_DATE_FORMAT ‘ANSI’
    CONTROL QUERY DEFAULT HIST_MISSING_STATS_WARNING_LEVEL ‘0’
    CONTROL QUERY DEFAULT USTAT_AUTOMATION_INTERVAL ‘0’
    CONTROL QUERY DEFAULT MV_ALLOW_SELECT_SYSTEM_ADDED_COLUMNS ‘ON’
    CONTROL QUERY DEFAULT HIST_ON_DEMAND_STATS_SIZE ‘0’
    CONTROL QUERY DEFAULT ISOLATION_LEVEL ‘READ COMMITTED’
    CONTROL QUERY DEFAULT ALLOW_DML_ON_NONAUDITED_TABLE ‘ON’
    CONTROL QUERY DEFAULT MV_ALLOW_SELECT_SYSTEM_ADDED_COLUMNS ‘ON’
    CONTROL QUERY DEFAULT ALLOW_NULLABLE_UNIQUE_KEY_CONSTRAINT ‘ON’
    CONTROL QUERY DEFAULT CAT_ERROR_ON_NOTNULL_STOREBY ‘OFF’
    CONTROL QUERY DEFAULT WMS_CHILD_QUERY_MONITORING ‘OFF’
    CONTROL QUERY DEFAULT WMS_QUERY_MONITORING ‘OFF’
    CONTROL QUERY DEFAULT TRAF_TINYINT_RETURN_VALUES ‘ON’
    CONTROL QUERY DEFAULT TRAF_BOOLEAN_IO ‘ON’
    CONTROL QUERY DEFAULT TRAF_LARGEINT_UNSIGNED_IO ‘ON’
    CONTROL QUERY DEFAULT TRAF_ALLOW_RESERVED_COLNAMES ‘ON’
    CONTROL QUERY DEFAULT TRAF_BLOB_AS_VARCHAR ‘OFF’
    CONTROL QUERY DEFAULT TRAF_CLOB_AS_VARCHAR ‘OFF’

    2.2. Check If Object Exists

    call HSHbaseTableDef::objExists
    naTbl_->objectUid() is 3872136939770385698

    2.3. Creating histogram tables on demand

    2.4. Get Table RowCount

    SELECT COUNT(*) FROM TRAFODION.DAAS_GX.E_OT_CASE FOR READ UNCOMMITTED ACCESS
    Output:
    Total #rows= 78650, sample rows=10000, IntervalCount = 50*

    2.5. Memory Estimates

    Column S_EXT_DATATIME requires 80000 bytes of memory for internal sort.
    Column S_EXT_FROMNODE requires 340000 bytes of memory for internal sort.

    2.6. Create/populate sample table

    CREATE TABLE TRAFODION.DAAS_GX.TRAF_SAMPLE_03872136939770385698_1533649412_993975 LIKE TRAFODION.DAAS_GX.E_OT_CASE WITHOUT LOB COLUMNS WITH PARTITIONS LIMIT COLUMN LENGTH TO 256
    UPSERT USING LOAD INTO TRAFODION.DAAS_GX.TRAF_SAMPLE_03872136939770385698_1533649412_993975 SELECT SUBSTRING(“CASEID” FOR 64) AS “CASEID”, “REGNO”, “UNISCID”, SUBSTRING(“ENTNAME” FOR 64) AS “ENTNAME”, SUBSTRING(“PENDECNO” FOR 64) AS “PENDECNO”, SUBSTRING(“ILLEGACTTYPE” FOR 64) AS “ILLEGACTTYPE”, SUBSTRING(“PENTYPE” FOR 64) AS “PENTYPE”, SUBSTRING(“PENTYPE_CN” FOR 64) AS “PENTYPE_CN”, “PENAM”, “FORFAM”, SUBSTRING(“PENCONTENT” FOR 64) AS “PENCONTENT”, SUBSTRING(“JUDAUTH” FOR 64) AS “JUDAUTH”, “PENDECISSDATE”, SUBSTRING(“REMARK” FOR 64) AS “REMARK”, “PUBLICDATE”, SUBSTRING(“DATADEPT” FOR 64) AS “DATADEPT”, “S_EXT_FROMNODE”, “S_EXT_DATATIME” FROM TRAFODION.DAAS_GX.E_OT_CASE <<+ cardinality 7.865000e+04 >> SAMPLE RANDOM 12.714571 PERCENT FOR READ UNCOMMITTED ACCESS

    2.7. Read/sort data before creating STATISTICS

    2.8. Create statistics for internal sort

    Estimating UEC for column group [S_EXT_DATATIME]
    Estimating UEC for column group [DATADEPT]

    2.9. Create Single-column stats: fetchBoundaries()

    SELECT FMTVAL, SUMVAL FROM (SELECT “FORFAM”, TRIM(TRAILING FROM CAST(“FORFAM” AS VARCHAR(250) CHARACTER SET UCS2)), COUNT(*) FROM TRAFODION.DAAS_GX.TRAF_SAMPLE_03872136939770385698_1533649412_993975 <<+ cardinality 1.000000e+04 >> GROUP BY “FORFAM” FOR READ UNCOMMITTED ACCESS) T(“FORFAM”, FMTVAL, SUMVAL) ORDER BY “FORFAM”

    2.10. Drop Sample Table

    DROP TABLE TRAFODION.DAAS_GX.TRAF_SAMPLE_03872136939770385698_1533649412_993975

    2.11. Flush out stats

    SELECT HISTOGRAM_ID, COL_POSITION, COLUMN_NUMBER, COLCOUNT, cast(READ_TIME as char(19) character set iso88591), REASON FROM TRAFODION.DAAS_GX.SB_HISTOGRAMS WHERE TABLE_UID = 3872136939770385698 ORDER BY TABLE_UID, HISTOGRAM_ID, COL_POSITION FOR READ COMMITTED ACCESS

    2.12. Write out new histograms/histogram intervals

    2.13. Delete old stats rows

    DELETE FROM TRAFODION.DAAS_GX.SB_HISTOGRAMS WHERE TABLE_UID = 3872136939770385698 AND HISTOGRAM_ID IN ( 2041743984, 2041743989, 2041743994, 2041743999, 2041744004, 2041744009, 2041744014, 2041744019, 2041744024, 2041744029, 2041744034, 2041744039, 2041744044, 2041744049, 2041744054, 2041744059, 2041744064, 2041744069)
    DELETE FROM TRAFODION.DAAS_GX.SB_HISTOGRAM_INTERVALS WHERE TABLE_UID = 3872136939770385698 AND HISTOGRAM_ID IN ( 2041743984, 2041743989, 2041743994, 2041743999, 2041744004, 2041744009, 2041744014, 2041744019, 2041744024, 2041744029, 2041744034, 2041744039, 2041744044, 2041744049, 2041744054, 2041744059, 2041744064, 2041744069)

    展开全文
  • Oracle统计信息更新

    千次阅读 2014-12-23 00:24:08
    Oracle有个自动更新统计信息的Job,大约在每天晚上执行。所以在白天统计信息不会被更新掉; 2. 统计信息对CBO的影响有个阀值,尤其是对范围查找来说,超过这个阀值,就使用索引,否则就全表扫描; 3. 白天发现查
    手工更新的语句是:
        execute dbms_stats.gather_table_stats($USER_NAME,$TABLE_NAME);

    使用手工更新的场景:
    1. Oracle有个自动更新统计信息的Job,大约在每天晚上执行。所以在白天统计信息不会被更新掉;
    2. 统计信息对CBO的影响有个阀值,尤其是对范围查找来说,超过这个阀值,就使用索引,否则就全表扫描;
    3. 白天发现查询突然变得非常慢时,应该正好是突破这个阀值的时间点;
    4. 这时可以使用手工更新来纠正统计信息的错误。


    展开全文
  • This article gives a walk-through of SQL Server Statistics and different methods to perform SQL ... 本文介绍了SQL Server统计信息以及执行SQL Server更新统计信息的不同方法。 介绍 (Introduction) ...
  • 自动更新Oracle统计信息

    千次阅读 2018-09-25 13:51:59
    Oracle不定时更新数据表的统计信息,当数据量增多时,更新频率逐渐变慢; 当编写某些大的查询sql时,如访问最近一个月的销售汇总,调优后的评估值在1000左右,执行时间在10几分钟;但是一两个月后,执行时间突然...
  • SQL优化:统计信息更新时间

    千次阅读 2019-01-17 13:23:12
    通过视图,可以查询到某个表的某个统计信息是什么时候更新过的,从而可以判断统计信息在数据大量变化时,SQL Server是否自动更新统计信息。 如果没有自动更新,就可以手动出发统计信息。 代码如下: 可以先查看...
  • oracle更新统计信息

    千次阅读 2014-03-30 11:01:43
    --单个表统计数据的统计数据更新 [code="sql"] SQL> EXEC dbms_stats.gather_table_stats('【username】','【tablename】',cascade=>true); PL/SQL procedure successfully completed [/code] ...
  • ORACLE索引失效,更新统计信息

    千次阅读 2018-06-25 17:09:32
    有时候建立索引的时候不走索引,排除了字段数据问题和sql写法问题,索引失效的问题之外,还得考虑是统计信息过旧,得重新收集。...为了稳定执行计划,一般统计信息都会被锁住的,在更新统计信息的时候得先解锁。 ①...
  • sqlserver 更新统计信息

    千次阅读 2017-08-15 14:20:27
    sqlserver 更新统计信息当数据库运行几周或几月后,对于某个已知的sql(如2个大表的联合查询),使用sqldbx评估的性能消耗为:0.002**,但是实际执行时间远远超过预期,约20分钟查询无结果; 此时需要考虑更新...
  • 如果有合适的索引并实时更新统计信息,那么优化器会选择有用的索引供查询之用,因为SQLServer优化器是基于开销的优化。当在where和on上的列上的数据需要显示在结果集的时候,如果有实时的统计信息,优化器会选择最好...
  • SQL优化:统计信息更新、删除

    千次阅读 2019-01-17 13:03:43
    一、更新表或索引视图的统计信息   1、更新表中为某些列建立的统计信息 update statistics txt(txtStats) update statistics txt(txtStats) with sample 50 percent update statistics txt(txtStatsRow...
  • 数据库参数调优--自动更新统计信息

    千次阅读 2017-10-26 18:02:30
    我们都知道SQL SERVER 借助统计信息来产生执行计划,而过时的统计信息会导致SQL SERVER选择错误的执行计划,导致严重的性能问题。 在数据库中选项可以自动的更新统计信息
  • 默认情况下,查询优化器已根据需要更新统计信息以改进查询计划;但在某些情况下,您可以通过使用 UPDATE STATISTICS 或存储过程 sp_updatestats 来比默认更新更频繁地更新统计信息,提高查询性能。 UPDATE ...
  • SQL优化:统计信息更新时会锁表

    千次阅读 2019-01-17 13:26:30
    更新某个表的统计信息时,会导致阻塞问题吗? 通过实验发现(这里省略实现过程),在更新某个表的统计信息时,会对表加上X锁,这个肯定会导致阻塞问题:    ...
  • SQLServer 2014 增量统计信息

    千次阅读 2017-04-19 02:30:05
    SQLServer 2014 允许创建分区级别的增量统计信息,即在分区中,允许对指定的分区进行统计信息更新,避免了全表统计信息的更新
  • UPDATE STATISTICS 该命令在一张表或者索引了的视图上更新查询优化统计数字信息. 默认情况下, 查询优化器已经更新了必要的用来提高查询计划的...更新统计信息能确保查询能以最新的统计信息来编译. 然而, 更新统计...
  • 并且建议当你插入大量数据到升序或者降序的列时,更新统计信息,因为在这种情况下,统计信息直方图将不包含新插入的值,同时,强烈建议在除索引维护(当你重建、整理碎片或者重组索引时,数据分布不会改变)外的维护...
  • 我想在大地上画满窗子,让所有习惯黑暗的眼睛习惯...本节的内容如下:SQL Server统计信息列级统计信息统计信息与执行计划统计信息与内存分配开销预估模型SQL Server统计信息 说到统计信息,就一定要提到查询优化器,
  • 最初接触SQL Server的时候认为SQLServer数据更改的同时就会相应的更新统计信息,其实SQL Server不是这样做的.基于性能考虑,SQL Server使用下面的算法更新统计信息。   自动更新统计信息的基本算法是: · ...
  • oracle查看和更新统计表的信息

    千次阅读 2018-09-25 11:21:46
    在OEM中查看数据库的会话时,发现有一个会话的SQL要10多秒 在PL SQL中执行 SQL按F5查看这个SQL的计划,...检查一下字段last_analyzed 的值,其值就是最后一次统计更新的日期 更新查看 全表分析 完全计算法: ...
  • http://blog.csdn.net/kk185800961/article/details/43816177 1 .... ...2. 工具箱拖动一个“更新统计信息任务” 到控制流,设置需要更新哪些对象的统计信息 3. 设计完成后保存,可以另存
  • SQL Server 数据库表的统计信息更新

    千次阅读 2019-06-20 16:03:00
    最近在调整基础信息数据时,新增了几个客户类型,意想不到的事情发生了,在使用新增的客户类型作为 查询条件查询报表时,居然出现了超时的现象,但是用其他以前的客户类型查询就没有问题,用一个以前增加的 客户...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 350,212
精华内容 140,084
关键字:

统计信息更新