MySQL索引统计信息更新相关的参数

MySQL统计信息相关的参数:

  1. innodb_stats_on_metadata(是否自动更新统计信息),MySQL 5.7中默认为关闭状态

    仅在统计信息配置为非持久化的时候生效。
    也就是说在innodb_stats_persistent 配置为OFF的时候,非持久化存储统计信息的手,innodb_stats_on_metadata的设置才生效。
    当innodb_stats_on_metadata设置为ON的时候,
    InnoDB在执show table status 或者访问INFORMATION_SCHEMA.TABLES 或者INFORMATION_SCHEMA.STATISTICS 系统表的时候,更新费持久化统计信息(类似于ANALYZE TABLE)

    某个索引的统计信息更新时间参考mysql.innodb_index_stats这个系统表
    select * from mysql.innodb_index_stats  where table_name = ‘teststatistics‘;

  2. innodb_stats_auto_recalc

    是否自动触发更新统计信息,仅影响持久化存储的统计信息的表,阈值是变化的数据超过表行数的10%。
    也就是说,一个表索引统计信息是持久化存储的,并且表中数据变化了超过10%,
    如果innodb_stats_auto_recalc为ON,就会自动更新统计信息,否则不更

  3. innodb_stats_persistent(非持久化统计信息开关),MySQL 5.7中默认为打开,持久化存储统计信息

    该选项设置为ON时候,统计信息会持久化存储到磁盘中,而不是存在在内存中,
    相反,如果是非持久化存储的(存在内存中),相应的统计信息会随着服务器的关闭而丢失。

  4. innodb_stats_persistent_sample_pages (持久化更新统计信息时候索引页的取样页数)

    默认是20个page,如果设置的过高,那么在更新统计信息的时候,会增加ANALYZE TABLE的执行时间。

  5. innodb_stats_transient_sample_pages(临时性更新统计信息时候索引页的取样页数)

    默认值是8,innodb_stats_persistent设置为disable的情况下innodb_stats_transient_sample_pages才生效,
    也就是非持久化存储过索引统计信息的时候,innodb_stats_transient_sample_pages为更新统计信息的采样页数

  6. innodb_stats_sample_pages

    已弃用. 已用innodb_stats_transient_sample_pages 替代。

时间: 2024-09-29 21:57:30

MySQL索引统计信息更新相关的参数的相关文章

MySQL innodb统计信息

对innodb 统计信息的控制可以通过如下几个常用的variables 来实现 1.innodb_stats_persistent: 这个参数控制着innodb的统计信息是否持久化到磁盘,先说明一下持久化到磁盘是什么意思:通常来说统计信息只保存在内存中,也就是说如果mysql服务一重启那么之前 所有的统计信息都没有了,这个情况下mysql就要重新收集&计算了:如果统计信息持久化到磁盘了,那么就可以直接从磁盘中读取: 为了真正的可以达到红统计信息持久化到磁盘光是innodb_stats_persi

MySQL的统计信息学习总结

原文:MySQL的统计信息学习总结 统计信息概念 MySQL统计信息是指数据库通过采样.统计出来的表.索引的相关信息,例如,表的记录数.聚集索引page个数.字段的Cardinality.....MySQL在生成执行计划时,需要根据索引的统计信息进行估算,计算出最低代价(或者说是最小开销)的执行计划.MySQL支持有限的索引统计信息,因存储引擎不同而统计信息收集的方式也不同. MySQL官方关于统计信息的概念介绍几乎等同于无,不过对于已经接触过其它类型数据库的同学而言,理解这个概念应该不在话下.

SQL Server创建索引统计信息

摘自:http://www.cnblogs.com/kerrycode/p/3337817.html 数据库统计信息的相关参数有三个: 自动创建统计信息(Auto Create Statistics).自动更新统计信息(Auto Update Statistics).自动异步更新统计信息(Auto Update Statistics Asynchronously),都是数据库级别的. 建议:“自动创建统计信息”与“自动更新统计信息”设置为True,“自动异步更新统计信息”设置为False. 可以

Oracle按用户进行统计信息更新

按用户进行统计信息更新 PL/sqldev工具使用system用户连接到oracle,打开命令窗口执行以下SQL,用户名请根据实际情况进行更改: begin dbms_stats.gather_schema_stats( ownname          => 'testuser', estimate_percent => dbms_stats.auto_sample_size, method_opt       => 'for all columns size auto', degre

【原创】MySQL性能优化-I/O相关配置参数

本文介绍InnoDB和MyISAM两种存储引擎的I/O相关参数配置. 1.InnoDB  I/O相关配置 Innodb是一种事务型的存储引擎,为了减少提交事务时产生的io开销,innodb采用了写日志的方式,也就是在事务提交的时候会先写入事务日志中 ,而不是每次都把修改或者数据刷新到数据文件中,这样做是为了提高io的性能,因为事务的修改,使数据和索引文件通常都会映射到表空间随机的位置,所以刷新数据变更到数据文件会产生大量随机io,而记录日志是顺序io,一旦事务日志安全的写到磁盘中,数据就算是持久

MySQL 内存和CPU优化相关的参数

mysql> SHOW GLOBAL STATUS LIKE 'innodb%read%'; +---------------------------------------+---------+ | Variable_name | Value | +---------------------------------------+---------+ | Innodb_buffer_pool_read_ahead_rnd | 0 | | Innodb_buffer_pool_read_ahead

Atitit mysql数据库统计信息

SELECT table_name, table_rows, index_length, data_length, auto_increment, create_time, update_time, table_collation, ENGINE FROM INFORMATION_SCHEMA. TABLES WHERE table_schema = 'yunprint' 作者:: 绰号:老哇的爪子claw of Eagle 偶像破坏者Iconoclast image-smasher 捕鸟王"B

MySQL 5.6为什么关闭元数据统计信息自动更新&统计信息收集源代码探索

问题描述: MySQL 5.5.15 原sql如下: select constraint_schema,table_name,constraint_name,constraint_type from information_schema.table_constraints where table_schema not in ('information_schema', 'mysql', 'test','performance_schema'); 不只是上面提到的table_constraints

数据库参数调优--自动更新统计信息

数据库参数调优--自动更新统计信息 原文: https://blog.csdn.net/z10843087/article/details/78356975 背景 我们都知道SQL SERVER 借助统计信息来产生执行计划,而过时的统计信息会导致SQL SERVER选择错误的执行计划,导致严重的性能问题.  在数据库中选项可以自动的更新统计信息.如下图: 默认他是开启的,所以我们很少去关注他或者修改他. 异步更新和同步更新 其实除了同步更新统计信息外,还有一个异步更新统计信息的选项.他和同步更新