MySQL 8.0.31新特性之导入直方图存量数据

0    43    1

Tags:

👉 本文共约791个字,系统预计阅读时间或需3分钟。

MySQL 8.0 已经发布了好几年,对于直方图这个老概念想必大家已经熟知,今天介绍一个 MySQL 最新小版本8.0.31带来的新特性:存量直方图数据导入!

存量直方图数据导入的新语法为:analyze table 表名 update histogram on 列名1(,列名N) using data '存量数据'。

MySQL 直方图的更新需要耗费大量时间,一般由具体列的数据分布状态而定。比如下面对表t1(数据量1000W条)的c1列建立直方图:用时5秒多。

给列建立好直方图后,MySQL 把直方图元数据保存在表 information_schema.column_statistics 中:这张表的 histogram 列值即为直方图的详细元数据。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!

一般来讲,以下两种场景会再次更新直方图数据:

第一:如果后期对表t1进行过于频繁的 DML 操作,数据会较之前有许多新的变更。特别是对于列c1,原先的数值范围为1-10,大量更新后 ,数据范围变为1-20;或者说大量更新后,列c1的数值范围还是1-10,不过每个数值的分布范围发生变化。对于这种情况,就得按需手动进行直方图的更新,再次执行对应 SQL 语句。

第二:表列c1值没变化,但是 DBA 不小心删除了列c1上的直方图数据,恰好此时数据库并发又很大,不敢随意再次添加列c1的直方图数据。

以上这两种情况,刚好适合 MySQL 8.0.31 最新小版本带来的存量直方图数据导入功能!

为了减少数据库端的计算压力,需要提前在外部预先计算好直方图数据,并且定义好格式。比如新的直方图数据存放在文件 histogram_new.txt 里

提前计算好直方图数据后,就可以使用最新版本的存量数据导入功能:执行时间只有0.03秒,比在线添加直方图快100多倍。

参考

https://mp.weixin.qq.com/s/JyJV0XcvTTn2ePopMnYQCg

标签:

头像

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦
  • 18509239930
  • 个人微信

  • 麦老师QQ聊天
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部
返回顶部