数据库优化器/收集统计信息

数据库优化器 分为基于规则 基于代价
举例 去火车站买票
基于代价 使用地图来算
基于规则 按照习惯去走
所以
对于OLAP 多用于不同的查询sal多样,多使用基于代价
对于OLTP 在某个系统是固定的,多使用基于规则
基于代价优化器,就会使用到统计信息
统计信息放在数据字典里(oracle 有自己的数据字典 类似user_tables user_column user_index impala 数据字典一般存在mysql )
对于某一列 所有的值(即集合) 会分成200-250个隔断,如存在一张250000行数据的表 分为250个隔断,每个隔断存放1000行数据,隔断存极值 平常值(个数 行数) 空值 把所有的数做了一个统计即统计信息
举例 对于where city="宁波’and prod_type='信贷
数据库表中 宁波5条 信贷1000条 会先执行5条

流程
首先数据库会查看表头是不是catch到内存当中
如果没有 从物理字典拿
如果有 随机选择一个计算单元,找数据字典的信息的一段即样本 如白分之1 15节点个数估算
通过统计信息列的空值最小值最大值平常值等 用估算的值,和物理的真正的统计信息对比,统计信息在一定误差内,则认为近视准的,(因为时间过长,表内存放的统计信息可能不准确)

在执行计划没有发生改变的情况下一般不收集统计信息
收集统计信息会全表扫描
IO的腾挪<<内存运算速度
impala是将数据catch到内存 impala适合查询,不适合跑批
收集统计信息收集哪些字段有意义 where join partition
分区 partition
有日期,可避免全表扫描 partition就是表 多个表类似union在一起 partition
分为 范围 和 哈希 partition上可以建partition 范围之上可以建哈希 范围 但是哈希向下建不了)
真正存在,不能直接访问 partition 索引(真正存储数据的只有表和索引)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值