在上次的文章统计--过滤(筛选)索引的统计信息过期问题测试中,遗留一个问题,当更新行数满足统计自动更新条件是,什么样的查询会触发自动更新呢?受林勇桦的指点,找到以下2个跟踪标志:9204 – 打印出被加载的统计信息(With this enabled, we get a report of stat...
分类:
其他好文 时间:
2014-11-08 13:17:44
阅读次数:
278
Java Web利用filter实现拦截请求,统计信息、并控制单台机器QPS。/** * 网络流量控制器 */public class TrafficFilter implements Filter { private ITrafficStatic trafficStatic; priv...
分类:
编程语言 时间:
2014-11-05 21:21:02
阅读次数:
1484
select sid, sql_id from v$session where sid = 1001select b.BEGIN_INTERVAL_TIME, a.disk_reads_total, a.buffer_gets_total,a.BUFFER_GETS_DELTA, a.rows_pr...
分类:
数据库 时间:
2014-11-04 12:33:02
阅读次数:
227
概念:
oracle的统计信息:存储在数据字典里,且从多个维度描述了Oracle数据库里对象的详细信息。CBO会利用这些统计信息来计算各条路径的成本。
分类:
表、索引、列、系统、数据字典、内部对象的统计信息
收集统计信息:
ANALYZE 命令和DBMS_STATS包。表、索引、列、数据字典都可以用两个。系统、内部对象只能用DBMS_STATS。
1、ANAL...
分类:
其他好文 时间:
2014-11-03 16:24:42
阅读次数:
324
1、与正确性相关的重编译 1、为表或视图添加列,删除列。 2、为表添加约束、默认值、规则,删除约束、默认值、规则。 3、为表或视图添加索引。 4、如果计划用不用索引而这个索引被删除。 5、删除表中的统计信息。 6、增加触发器,删除触发器。2、与优化相关的重编译 1、手动更新了统计信息。...
分类:
数据库 时间:
2014-10-31 08:46:36
阅读次数:
346
在某些情况下,表中数据较多,且分布不均匀的时候,执行计划的估计行数往往会有很大偏差,因此SQL Server 2008引入了过滤统计信息,意味着只对表中的特定数据计算统计信息。那么在调优查询的过程中如何知道语句是否使用了过滤统计信息呢?SQL Server提供了一个隐藏的跟踪标记来支持这一过程。下面...
分类:
其他好文 时间:
2014-10-30 13:05:50
阅读次数:
175
Oracle的强大之处就在于他能总帮助让你选择正确的执行计划,即使你给了它错误的指示。
实验:
1. 创建测试表:
收集统计信息:
创建B树索引:
2. 执行select id from tbl_plan;查看它的执行计划:
因为创建了B树索引,正常讲可以从索引中获得id的值,不用全表扫描,但这里使用了全表扫描的方式。
即使使用...
分类:
数据库 时间:
2014-10-30 10:23:31
阅读次数:
270
对象统计信息描述数据是如何在数据库中存储的,查询优化器使用这些统计信息来做出正确的决定。Oracle中有三种类型的对象统计信息:表统计、列统计和索引统计。而在每种类型中,有细分为:表或索引级别的统计、分区级别统计和子分区级别的统计,后面两种只有在对象被分区和具有子分区的情况下才可用。
统计信息相关视图
表统计信息
表/索引级别的统计
user_tab_statistics
user_ta...
分类:
数据库 时间:
2014-10-29 10:52:41
阅读次数:
277
名词Cardinality: 优化器在计算成本的时候,需要从统计信息中取得数据,然后去估计每一步操作所涉及的行数,叫做Cardinality。 比如,一张表T有1000行数据,列COL1上没有直方图,没有空值,并且不重复的值(distinct value)有500个。那么,在使用条件“WHERE.....
分类:
其他好文 时间:
2014-10-29 10:27:54
阅读次数:
117
优化器根据开消确定选择哪个执行计划,开消又与行数统计信息有关,默认情况下统计信息是在优化的过程中自动生成的。一旦列被标记为需要统计信息,查询优化器就会查找该列以有的统计信息,如果以有一个统计信息,下一步就会对它进行,检查以确定它足够新。如果过期就重建统计信息。(由此可见统计信息是基于列的)。----...
分类:
数据库 时间:
2014-10-28 00:15:42
阅读次数:
322