首页 > 数据库 >GreatSQL统计信息相关知识点

GreatSQL统计信息相关知识点

时间:2024-04-24 09:44:39浏览次数:29  
标签:知识点 stats GreatSQL 信息 索引 innodb STATS 统计

相关知识点:

INNODB_STATS_PERSIST=ON或用STATS_PERSIST=1定义单个表时,优化器统计信息将持久化到磁盘。默认情况下,innodb_stats_persistent是启用的。

持久统计信息存储在mysql.innodb_table_statsmysql.innodb_index_stats表中。

默认情况下启用的innodb_stats_auto_recalc变量控制当表中超过10%的行发生更改时是否自动计算统计信息。可以通过在创建或更改表时指定STATS_AUTO_RECALC子句来为单个表配置自动统计数据重新计算。

由于在后台进行的自动统计数据重新计算的异步性质,即使启用了innodb_stats_auto_recalc,在运行影响表10%以上的DML操作后,也不会立即重新计算统计数据。在某些情况下,统计数据的重新计算可能会延迟几秒钟。如果立即需要最新的统计数据,运行ANALYZE TABLE以启动统计数据的同步(前台)重新计算。

如果禁用innodb_stats_auto_recalc则可以通过在对索引列进行大量更改后执行ANALYZE TABLE语句来确保优化器统计信息的准确性。

INNODB_STATS_PERSIST=OFF或使用STATS_PERSIST=0创建或更改单个表时,优化器统计信息不会持久化到磁盘。相反,统计信息存储在内存中,当服务器关闭时会丢失。统计数据也会通过某些操作和在某些条件下定期更新。

当向现有表中添加索引时,或者当添加或删除列时,无论innodb_stats_auto_recalc的值如何,都会计算索引统计信息并将其添加到innodb_index_stats表中。

影响统计信息的五个参数

  • innodb_stats_persistent:指定InnoDB索引统计信息是否持久化到磁盘,默认打开。

  • innodb_stats_persistent_sample_pages:估计索引列的基数和其他统计信息(如由分析表计算的统计信息)时要采样的索引页数。增加该值可以提高索引统计信息的准确性,但为innodb_stats_persistent_sample_pages设置较高的值可能会导致分析表执行时间过长。

  • innodb_stats_auto_recalc:使InnoDB在表中的数据发生重大变化后自动重新计算持久统计信息。阈值为表中行数的10%,默认打开。

  • innodb_stats_include_delete_marked:计算持久优化器统计信息时InnoDB是否包括已标记删除的记录,默认关闭。

  • innodb_stats_transient_sample_pages:估计索引列的基数和其他统计信息(如由分析表计算的统计信息)时要采样的索引页数。默认值为8。增加该值可以提高索引统计信息的准确性,从而改进查询执行计划,但代价是在打开InnoDB表或重新计算统计信息时会增加I/O。该参数仅适用于为表禁用innodb_stats_persistent的情况,如果启用了INNODB_STATS_PERSIST则应用INNODB_STATS_PERSIST_SAMPLE_PAGES代替innodb_stats_sample_pages

总结:

1、非持久化统计信息在以下情况会被自动更新:

  1. 执行ANALYZE TABLE
  2. innodb_stats_on_metadata=ON情况下,执SHOW TABLE STATUS, SHOW INDEX, 查询INFORMATION_SCHEMA下的TABLES, STATISTICS
  3. 启用--auto-rehash功能情况下,使用mysql client登录
  4. 表第一次被打开
  5. 距上一次更新统计信息,表1/16的数据被修改

非持久化统计信息的缺点显而易见,数据库重启后如果大量表开始更新统计信息,会对实例造成很大影响,所以目前都会使用持久化统计信息。

2、持久化统计信息在以下情况会被自动更新:

  1. INNODB_STATS_AUTO_RECALC=ON的情况下,表中10%的数据被修改

  2. 增加新的索引

3、统计信息不准确的处理

我们查看执行计划,发现未使用正确的索引,如果是innodb_index_stats中统计信息差别较大引起,可通过以下方式处理:

  1. 手动更新统计信息,注意执行过程中会加读锁:

ANALYZETABLE TABLE_NAME;

  1. 如果更新后统计信息仍不准确,可考虑增加表采样的数据页,两种方式可以修改:

​ a. 全局变量INNODB_STATS_PERSISTENT_SAMPLE_PAGES默认为20;

​ b. 单个表可以指定该表的采样:

ALTER TABLE TABLE_NAME STATS_SAMPLE_PAGES=40;

​ 经测试,此处STATS_SAMPLE_PAGES的最大值是65535,超出会报错。

​ c. 手动更新innodb_table_statsinnodb_index_stats表统计信息(修改这两个表不会产生binlog),然后使用FLUSH TABLE tbl_name语句加载更新后的统计信息。


Enjoy GreatSQL

标签:知识点,stats,GreatSQL,信息,索引,innodb,STATS,统计
From: https://www.cnblogs.com/greatsql/p/18154394

相关文章

  • springboot 统计接口耗时及指定时间接口访问次数
     1.使用AOP在不改变原有方法的基础上对接口方法增强,引入依赖<!--引入AOP依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId></dependency><!--引入Redis依赖--><depen......
  • Datax助力轻松迁移SQLServer数据至GreatSQL
    1.环境说明1.1源端SQLSserver版本IP端口MicrosoftSQLServer2017192.168.140.16014331.2目标端GreatSQL版本IP端口GreatSQL-8.0.32192.168.139.8633082.安装环境2.1安装SQLServer环境环境说明:借助Docker使用镜像启动数据库2.1.1安装docke......
  • Servlet监听器统计在线人数
    首先,我们需要创建一个HttpSessionListener来监听会话的创建和销毁事件。当新的会话创建时,我们将增加在线人数;当会话销毁时,我们将减少在线人数。publicclassOnlineCounterListenerimplementsHttpSessionListener{privatestaticintactiveSessions=0;@Overri......
  • 100294. 统计特殊字母的数量 I
     100294. 统计特殊字母的数量I 显示英文描述 我的提交返回竞赛 通过的用户数3108尝试过的用户数3161用户总通过次数3158用户总提交次数4364题目难度Easy给你一个字符串 word。如果 word 中同时存在某个字母的小写形式和大写形式,则称这个字母为 ......
  • 100291. 统计特殊字母的数量 II
    给你一个字符串 word。如果 word 中同时出现某个字母 c 的小写形式和大写形式,并且 每个 小写形式的 c 都出现在第一个大写形式的 c 之前,则称字母 c 是一个 特殊字母 。返回 word 中 特殊字母 的数量。 示例1:输入:word="aaAbcBC"输出:3解释:特殊字母......
  • stm32 例子 人数统计
      1单纯统计进出人数 #definepin_RED1PA0#definepin_RED2PA1intpeople_useNum=0;intstate_RED1=0;//红外1intstate_RED2=0;//红外2intcar_state[2]={0,0};intcar_oldstate[2]={0,0};voidsetup(){Serial.begin(9600);pi......
  • SciTech-Statistics-英语授课:Business Statistics商务统计
    WhatIsaPopulationParameter?ByAlaneLim,AlaneLim,ScienceExpertPh.D.,MaterialsScienceandEngineering,NorthwesternUniversityB.A.,Chemistry,JohnsHopkinsUniversityB.A.,CognitiveScience,JohnsHopkinsUniversityAlaneLimholdsaPh.D.......
  • GEE C24 区域统计
    导读:1.以点为中心缓冲成方形或者圆形;2.编写和应用带有可选参数的函数;3.学习什么是区域统计并使用reducer;4.将计算结果导出到表中;5.将属性从一个图像复制到另一个图像。一、原理1.1从给定区域内的栅格计算统计数据称为区域统计。1.2在第22章和23章中使用ee.Image.Reduce......
  • GreatSQL 死锁案例分析
    1.背景概述客户业务发生死锁的报错,根据业务程序日志及业务流程,发现造成死锁的原因是:事务1delete+insert,事务2delete+insert2个事务交替执行导致的死锁;由于GAP锁阻塞了插入意向锁,并且当delete的数据存在时死锁不会发生,当delete的数据不存在时,会发生死锁。2.问题复现本......
  • Python-统计和微积分研讨会(三)
    Python统计和微积分研讨会(三)原文:zh.annas-archive.org/md5/6cbaed7d834977b8ea96cc7aa6d8a083译者:飞龙协议:CCBY-NC-SA4.0第五章:用Python进行更多数学概述在本章结束时,你将能够掌握序列和级数的基本概念,并编写实现这些概念的Python函数。你将了解基本三角函数及其应......