tencent cloud

TDSQL-C MySQL 版

动态与公告
产品动态
产品公告
新手指引
产品简介
产品概述
产品优势
应用场景
产品架构
产品规格
实例类型
产品功能列表
数据库版本
地域和可用区
常用概念
使用限制
使用规范建议
自研内核
内核概述
内核版本更新动态
内核优化版本
功能类特性
性能类特性
安全类特性
稳定性特性
分析引擎特性
内核问题检查与修复
购买指南
计费概述
产品价格
创建集群
变配说明
续费说明
欠费说明
退费说明
按量转包年包月
按量转 Serverless
增值服务计费说明
查看费用账单
快速入门
数据库审计
简介
查看审计实例列表
开通审计服务
查看审计日志
日志投递
配置事后告警
修改审计规则
修改审计服务
关闭审计服务
审计规则模板
查看审计任务
授权子用户使用数据库审计
Serverless 服务
Serverless 简介
创建和管理 Serverless 版集群
弹性管理工具
Serverless 资源包
多可用区部署
配置变更
常见问题
Serverless 成本预估器
操作指南
操作总览
控制台切换集群页面视图
数据库连接
实例管理
配置变更
实例形态管理
集群管理
只读实例管理
数据库代理
账号管理
数据库管理
数据库管理工具(DMC)
参数配置
多可用区部署
全球数据库
备份与恢复
操作日志
迁移数据
并行查询
列存索引 CSI
分析引擎
数据库安全和加密
监控与告警
SQL 基本操作
使用 SCF 连接 TDSQL-C MySQL 版
标签
实践教程
TDSQL-C MySQL 版数据库审计等保实践
通过 DTS 升级数据库版本 MySQL5.7至8.0
TDSQL-C MySQL 版使用规范
新版本控制台
数据库代理多连接地址实现多 RO 组
数据库代理的优势
如何选择存储空间计费模式
通过 DTS 构建异地灾备
为集群创建 VPC
如何进行数据恢复
如何解决 CPU 使用率高的问题
如何授权子用户查看监控
白皮书
安全白皮书
性能白皮书
故障处理
连接相关
性能相关
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Multi-Availability Zone APIs
Other APIs
Audit APIs
Database Proxy APIs
Backup and Recovery APIs
Parameter Management APIs
Billing APIs
serverless APIs
Resource Package APIs
Account APIs
Performance Analysis APIs
Data Types
Error Codes
常见问题
基础概念
购买与计费
兼容与格式
连接与网络
功能特性
控制台操作
数据库表
性能与日志
数据库审计
TDSQL-C MySQL 版和云数据库 MySQL 有什么区别
相关协议
服务等级协议
服务条款
TDSQL-C 政策
隐私政策
数据处理和安全协议
通用参考
标准与认证
词汇表
联系我们

收集统计信息

PDF
聚焦模式
字号
最后更新时间: 2025-07-31 17:05:59
对于只读分析引擎而言,想要 SQL 执行结果好,则需要对表对象进行数据的基本统计信息收集。完成了统计信息收集的表,系统才会更精准的为用户执行的 SQL 进行合理的执行计划推荐。

统计信息概述

统计信息(Statistics)是关于数据库对象的数据特征和分布的信息。数据库可以利用统计信息来计算出更准确的计划代价,优化计划的选择。统计信息的类型包含表的行数、列的不同值个数(number of distinct,简称 NDV)、列的直方图等信息。统计信息的收集涉及对数据库对象的扫描与获取,并将所收集的统计信息存储于系统的数据字典,此外,系统还会在本地维护统计信息的缓存,以提升优化器访问统计信息的效率。同时,在收集使用统计信息时,需要注意以下两点:
统计信息的准确性对于优化器的决策非常重要。因此,定期更新和维护统计信息是保持数据库性能的关键。
统计信息的收集可能会对数据库的性能产生一定的影响,因为它涉及扫描和分析数据库对象。因此,在收集统计信息时需要权衡性能和统计信息的准确性。
总之,统计信息在数据库管理系统中扮演着至关重要的角色,它们提供了关于数据库对象的关键信息,协助优化器作出更为明智的决策,进而提升查询性能及整体数据库系统的效能。
说明:
在2.2410.1.0及之后的版本中支持了随机采样功能,该功能可以按照 TableScan 算子指定的采样率进行随机采样。同时可支持基于 Block 级别的采样,并且可以根据设置的比例进行统计信息收集,能够极大地降低在收集统计信息过程中因全表扫描而产生的开销。

表的统计信息查询

SHOW TABLE STATS [ShowLikeOrWhere];
查询结果字段说明如下:
列名
说明
db_name
数据库的名字。
table_name
表的名字。
partition_name
分区的名字。
update_time
收集更新时间。
modify_count
表涉及修改的行数。
row_count
表的总行数。
sample_size
收集基础统计信息采样的行数。
查询 test 库中 t1 的表的统计信息如下示例:
SHOW TABLE STATS WHERE db_name='test' AND table_name='t1';

统计信息收集

目前只读分析引擎支持两种不同的统计信息收集方式:
自动收集
在2.2410.1.0及之后的版本中,只读分析引擎内核支持了根据数据加载为列存时进行动态采样和统计信息自动收集的能力。用户无需手动收集即可生成对应库表的统计信息。
注意:
默认自动收集统计信息不包含表的直方图信息,如需收集表的直方图信息,请进行手动收集。
手动收集
如果需要手动获取当前表的最新统计信息,可以手动通过 MySQL 客户端登录至只读分析引擎实例中,执行如下语句即可收集指定表对象的统计信息:
ANALYZE TABLE <表名> [ ALL COLUMNS| COLUMNS IdentList [WITH NUM BUCKETS]];
ALL COLUMNS 指定所有列都按照指定行为收集统计信息,比如指定所有列都收集直方图。
不指定 ALL COLUMNS,则使用默认收集策略,即收集列的基础统计信息,不包含直方图信息。
COLUMNS IdentList 代表需要收集指定列的相关统计信息。如COLUMN c1,c2,c3
NUM BUCKETS 指定等高直方图或者 TOPN 收集的桶个数,其中范围为[1,1024],其中指定桶个数为1则表示不收集等高直方图或者 TOPN。

使用示例

使用默认策略收集 test 库中 t1 的统计信息:
ANALYZE TABLE t1;
指定收集 test 库中 t1 的所有列的直方图统计信息:
ANALYZE TABLE t1 ALL COLUMNS WITH 256 BUCKETS;
指定收集 test 库中 t1 的 c1,c2列统计信息直方图:
ANALYZE TABLE t1 COLUMNS c1,c2 WITH 256 BUCKETS;

手动指定 database 级别的统计信息收集

如果表的数量较多时,可以直接对 database 进行统计信息收集。收集策略的含义同表级相同,收集原则是尽可能的将整个 database 下的表都收集完成,如果某个表收集失败,不会影响其他表的收集。
ANALYZE DATABASE DBNameList [ ALL COLUMNS| COLUMNS IdentList [WITH NUM BUCKETS]];

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈