【TiDB】TiDB SQL执行计划

一.TiDB 优化器原理
一般有两种方式:
RBO: 基于规则的优化
CBO:给予成本的优化

数据库一般都是使用的CBO优化方式。

优化器架构图:
在这里插入图片描述

  • Protocol
    协议层,兼容MySQL协议
  • Parse
    将sql语句转化为AST语法树/ 词法分析 语法分析
  • pre process
    主要针对pointget 点查,直接下推执行器查询,只返回一行或者操作一行,主键索引,类似于sysbench 压测
    还会进行常量折叠,表达式优化,子查询优化
  • logical optimize
    谓词下推,TiKv过滤,传输到TiDB数据更少。
    链接顺序,减少数据量,笛卡尔积
  • Physical optimize
    扫描方式
    索引选择
    算子下推
    参考地址:https://docs.pingcap.com/zh/tidb/stable/sql-optimization-concepts
  • TiDB Executor
    执行器,真正去执行操作数据

二.执行计划
1.查看执行计划

#查看执行计划,不真正去执行
explain sql;

#查看执行计划,会真正去执行,多一列,analyze
explain analyze

#执行计划格式,不支持MySQL的tree 和json
format=row /dot

#task分类
root表示在TiDBserver执行
cop 表示下推到TiKv或者Tiflash

#执行计划阅读顺序
从上到下,从右到左

#actRows != estRows
原因是统计信息的问题,所以需要先执行analyze 在执行explain analyze 会更加接近实际情况结果.

2.管理执行计划
执行计划管理:

#hint
https://docs.pingcap.com/zh/tidb/stable/optimizer-hints
#SPM
https://docs.pingcap.com/zh/tidb/stable/sql-plan-management

在这里插入图片描述
算子分类: 类似于mysql的const 还是uk primary key
在这里插入图片描述

三.统计信息管理优化

统计信息原理:统计信息原理
在这里插入图片描述
统计信息收集方法:
在这里插入图片描述
统计信息导入导出:
在这里插入图片描述
四.常用命令

#1.统计信息的meta信息
show stats_meta where db_name=? and table_name=?
#2.查看表的健康状况
show stats_healthy
#3.索引和列的信息
show stats_histograms
4.查看bucket的信息
show stats_bucket
5.其他的操作
https://learn.pingcap.com/learner/course/120005/file/480001;offeringId=9
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
TiDB(“ Ti”代表Titanium)是一个开源的NewSQL数据库,它支持混合事务处理和分析处理(HTAP)工作负载。它与MySQL兼容,具有水平可伸缩性,强一致性和高可用性。 TiDB特点: 水平可伸缩性 TiDB只需添加新节点即可扩展SQL处理和存储。与仅纵向扩展的传统关系数据库相比,这使基础架构容量规划既简单又更具成本效益。 MySQL兼容语法 TiDB就像它是应用程序的MySQL 5.7服务器一样。您可以继续使用所有现有的MySQL客户端库,并且在许多情况下,您无需在应用程序中更改任何代码行。因为TiDB是从头开始构建的,而不是MySQL分支,所以请查看已知兼容性差异列表。 具有高度一致性的分布式事务 TiDB在内部将表分片为基于范围的小块,我们将其称为“区域”。每个区域的默认大小约为100MiB,并且TiDB在内部使用两阶段提交以确保以事务一致的方式维护区域。 云原生 TiDB旨在在公共,私有或混合云中工作,从而简化了部署,供应,操作和维护。 TiDB的存储层,称为TiKV,成为一个云计算原住民基金会在2018年会员项目TiDB平台的架构还允许SQL处理和存储在一个非常云友好的方式相互独立的缩放。 最小化ETL TiDB旨在支持事务处理(OLTP)和分析处理(OLAP)工作负载。这意味着,尽管您可能传统上已经在MySQL上进行了事务处理,然后将提取,转换和加载(ETL)数据提取到列存储中进行分析处理,但不再需要此步骤。 高可用性 TiDB使用Raft共识算法来确保数据高度可用,并在Raft组中的整个存储中安全地进行复制。如果发生故障,Raft组将自动为故障成员选出新的领导者,并自动修复TiDB集群,而无需任何手动干预。失败和自我修复操作对应用程序也是透明的。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

渔不是鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值