首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    TiDB 源码阅读系列文章(十四)统计信息(下)

    在 统计信息(上) 中,我们介绍了统计信息基本概念、TiDB 的统计信息收集/更新机制以及如何用统计信息来估计算子代价,本篇将会结合原理介绍 TiDB 的源码实现。...数据结构定义 直方图的定义可以在 histograms.go 中找到,值得注意的是,对于桶的上下界,我们使用了在 《TiDB 源码阅读系列文章(十)Chunk 和执行框架简介》 中介绍到 Chunk 来存储...总结 统计信息的收集和维护是数据库的核心功能,对于基于代价的查询优化器,统计信息的准确性直接影响了查询效率。...在分布式数据库中,收集统计信息和单机差别不大,但是维护统计信息有比较大的挑战,比如怎样在多节点更新的情况下,准确及时的维护统计信息。...目前 TiDB 的统计信息还是以单列的统计信息为主,为了减少独立性假设的使用,在将来 TiDB 会探索多列统计信息的收集和维护,为优化器提供更准确的统计信息。 作者:谢海滨

    1.4K30

    TiDB 源码阅读系列文章(十二)统计信息(上)

    本篇文章介绍统计信息基本概念、TiDB 的统计信息收集/更新机制以及如何用统计信息来估计算子代价。上篇侧重于介绍原理,下篇会结合原理介绍 TiDB 的源码实现。...因此,数据库常常会维护一些实际数据的概括信息,用以快速的估计代价,这便是统计信息。...大多数数据库都会选择用直方图来进行区间查询的估算。根据分桶策略的不同,常见的直方图可以分为等深直方图和等宽直方图。...TiDB 源码阅读系列文章: (十一)Index Lookup Join (十)Chunk 和执行框架简介 (九)Hash Join (八)基于代价的优化 (七)基于规则的优化 (六)Select 语句概览...(五)TiDB SQL Parser 的实现 (四)Insert 语句概览 (三)SQL 的一生 (二)初识 TiDB 源码 (一)序

    2K20

    PostgreSql 数据库统计信息 why when what

    统计信息,没有数据是没有的,但统计信息怎么收集,标准是什么,怎么使用,就值得去看看了。...要说统计信息,首先说一个表 pg_statistic ,这个表本身是存储数据库的状态信息,其中信息通过analyze 命令来获得,并存在在这个表里面,并且这个表被用于查询计划中。...这时一定有人会问, 1 怎么收集统计信息 2 统计信息怎么能更精确 3 是否可以差异化来做,避免对所有表进行统计信息 1 一般来说收集表的统计信息,使用的命令 analyze 来进行,对大表,ANALYZE...而analyze 如果不指定表名,则针对当前数据库的所有表,分区表,继承表,物化视图等。所以建议如果没有特殊的需求,还是给出表名,有针对的进行手动的统计数据更新。 ?...2 - 3 统计信息上面说了,是对表的内容进行随机抽样,而如何让一个表的统计信息更准确,则需要针对你的需要,来调整某个表,可能有人想,都调整了不行吗,这里会牵扯两个问题 1 是否有必要 ,一个基础表,你要那么详尽的统计信息

    2K30

    数据库PostrageSQL-统计收集器

    pg_stat_database视图将为集簇中的每一个数据库包含有一行,每一行显示数据库范围的统计信息。 Table 28.12. pg_stat_database_conflicts视图 ?...pg_stat_database_conflicts视图为每一个 数据库包含一行,用来显示数据库范围内由于与后备服务器上的恢复过程 冲突而被取消的查询的统计信息。...pg_stat_all_indexes视图将为当前数据库中的每个索引包含一行,该行显示关于对该索引访问的统计信息。...针对每一个数据库统计信息的访问函数把一个数据库 OID 作为参数来标识要报告哪个数据库。而针对每个表和每个索引的函数要求表或索引 OID。针对每个函数统计信息的函数用一个函数 OID。...注意只有在当前数据库中的表、索引和函数才能被这些函数看到。 与统计收集相关的额外函数被列举在Table 28.19中。 Table 28.19. 额外统计函数 ?

    1.4K30

    leveldb源码解析--打开数据库

    原理 在分析打开leveldb数据库之前,我们先来讨论一下几个类似的子问题: 如何恢复一个进程的运行状态? 如何解决数据索引慢的问题?...主要完成的事项: 构建存储中的MemTable数据结构; 加载SSTable文件查找相关的索引信息; 重放未执行完成的WAL日志; 打开数据库 Status DB::Open(const Options...= nullptr); *dbptr = impl; } else { delete impl; } return s; } 恢复数据库 Status DBImpl::Recover...(VersionEdit* edit, bool* save_manifest) { // 创建数据库目录 env_->CreateDir(dbname_); // 获取文件锁,禁止多个进程同时访问数据库...() < max_sequence) { versions_->SetLastSequence(max_sequence); } return Status::OK(); } 初始化数据库文件

    2.6K30

    Oracle 10g收集数据库统计信息

    1.需求概述 2.实施步骤 3.回退方案 1.需求概述 某数据库由于整体统计信息不准确,多次出现部分业务SQL选错执行计划,从而导致性能下降影响到最终用户体验,目前通过SQL_PROFILE绑定执行计划临时解决...Oracle优化器(CBO)依赖数据库统计信息来计算目标SQL各种可能的执行路径的成本,并从中选择一条成本值最小的执行路径来作为目标SQL的执行计划。...如果统计信息不准确甚至是错误,会导致优化器选择错误SQL执行计划的概率大大增加。 目前计划对该数据库统计信息进行重新收集,因为生产环境的复杂性,不排除重新收集正确的统计信息后,整体性能反而下降的情况。...2.实施步骤 **2.1备份当前数据库统计信息** 备份当前数据库的统计信息,建议备份后再导出一份留存: --备份当前数据库的统计信息: begin DBMS_STATS.CREATE_STAT_TABLE...收集数据库的统计信息,需要在业务闲时操作: --开启计时 set timing on --开始收集全库统计信息 begin dbms_stats.gather_database_stats( ESTIMATE_PERCENT

    84710

    数据库PostrageSQL-运行时统计数据

    运行时统计数据 19.9.1. 查询和索引统计收集器 这些参数控制服务器范围的统计数据收集特性。当统计收集被启用时,被产生的数据可以通过pg_stat和pg_statio系统视图族访问。...track_counts (boolean) 启用在数据库活动上的统计收集。这个参数默认为打开,因为自动清理守护进程需要被收集的信息。只有超级用户可以更改这个设置。...默认值是none,它禁用函数统计跟踪。只有超级用户可以更改这个设置。 简单到足以被“内联”到调用查询中的 SQL 语言函数不会被跟踪, 而不管这个设置。...(boolean) 对每个查询,向服务器日志里输出相应模块的性能统计。...log_statement_stats报告总的语句统计,而其它的报告针每个模块的统计。log_statement_stats不能和 其它任何针对每个模块统计的选项一起启用。所有这些选项都是默认禁用的。

    77710

    Hive优化器原理与源码解析系列—统计信息UniqueKeys列集合

    目录 背景 UniqueKeys列集合 RelNode查找TableScan操作符 Project投影识别UniqueKeys列集合 总结 背景 上篇介绍Hive优化器原理与源码解析系列—统计信息中间结果估算文章...在统计信息模块在也不是对所有的列都会进行判断识别某列是否为唯一键,那样计算成本过于高昂。...目前Hive统计信息模块是通过基于Project投影中用到的列进行分析判断是否UniqueKeys唯一键组成唯一键集合。...Hive优化器原理与源码解析系列—统计信息中间结果估算文章只是提到了UniqueKeys唯一键的使用,但没有展开UniqueKeys唯一键是如何识别的,接下来我们讲解分析。...返回TableScan的记录数 根据定位RexInputRef索引信息存放到的projectedCols,从元数据信息中获取,每列的统计信息。

    1.4K20
    领券