加入收藏 | 设为首页 | 会员中心 | 我要投稿 济南站长网 (https://www.0531zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL 8.0新特性之统计直方图

发布时间:2018-11-07 05:06:50 所属栏目:MySql教程 来源:韩杰·沃趣科技
导读:副标题#e# 【新品产上线啦】51CTO播客,随时随地,碎片化学习 概览 MySQL8.0实现了统计直方图。利用直方图,用户可以对一张表的一列做数据分布的统计,特别是针对没有索引的字段。这可以帮助查询优化器找到更优的执行计划。统计直方图的主要使用场景是用来

当你在建立直方图的时候,MySQL server会将所有数据读到内存中,然后在内存中进行操作,包括排序。如果对一个很大的表建立直方图,可能会有风险将几百M的数据都读到内存中,但这是不明智的。为了规避这个风险,MySQL会根据给定的histogram_generation_max_mem_size的值计算该将多少行数据读到内存中。如果根据当前histogram_generation_max_mem_size的限制,MySQL认为只能读一部分数据,那么MySQL会进行取样。通过“sampling-rate”属性,可以观察到取样比率。

  1. mysql> SET histogram_generation_max_mem_size = 1000000;  
  2. Query OK, 0 rows affected (0.00 sec)  
  3. mysql> ANALYZE TABLE customer UPDATE HISTOGRAM ON c_birth_country WITH 16 BUCKETS;  
  4. +----------------+-----------+----------+------------------------------------------------------------+  
  5. | Table | Op | Msg_type | Msg_text |  
  6. +----------------+-----------+----------+------------------------------------------------------------+  
  7. | tpcds.customer | histogram | status | Histogram statistics created for column 'c_birth_country'. |  
  8. +----------------+-----------+----------+------------------------------------------------------------+  
  9. 1 row in set (0.22 sec)  
  10. mysql> SELECT histogram->>'$."sampling-rate"'  
  11. -> FROM information_schema.column_statistics  
  12. -> WHERE table_name = "customer"  
  13. -> AND column_name = "c_birth_country";  
  14. +---------------------------------+  
  15. | histogram->>'$."sampling-rate"' |  
  16. +---------------------------------+  
  17. | 0.048743243211626014 |  
  18. +---------------------------------+  
  19. 1 row in set (0.00 sec) 

(编辑:济南站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读