本节介绍如何配置非持久性优化器统计信息。当innodb_stats_persistent=OFF或使用创建或更改单个表时,Optimizer统计信息不会保留在磁盘 上 STATS_PERSISTENT=0。相反,统计信息存储在内存中,并且在服务器关闭时会丢失。统计信息还可以通过某些操作在特定条件下定期更新。

默认情况下,优化器统计信息会保留在磁盘上,并由innodb_stats_persistent 配置选项启用。有关持久性优化器统计信息,请参见第15.8.10.1节“配置持久性优化器统计参数”。

优化器统计信息更新

非持久性优化器统计信息将在以下情况下更新:

运行中ANALYZE TABLE。

运行SHOW TABLE STATUS, SHOW INDEX或 在 启用了该选项的情况下查询 INFORMATION_SCHEMA.TABLES或 INFORMATION_SCHEMA.STATISTICS表 innodb_stats_on_metadata。

的默认设置 innodb_stats_on_metadata是 OFF。启用 innodb_stats_on_metadata 可能会降低具有大量表或索引的架构的访问速度,并降低涉及InnoDB 表的查询的执行计划的稳定性。 innodb_stats_on_metadata使用一条SET语句全局配置 。

SET GLOBAL innodb_stats_on_metadata=ON

注意

innodb_stats_on_metadata 仅当优化器统计信息配置为非持久性( innodb_stats_persistent 禁用时)时才适用 。

使用启用的选项 启动mysql客户端 --auto-rehash,这是默认设置。该 auto-rehash选项将导致所有 InnoDB表被打开,并且打开表操作将导致统计信息被重新计算。

为了提高mysql 客户端的启动时间并更新统计信息,可以auto-rehash使用该 --disable-auto-rehash 选项将其关闭 。该auto-rehash 功能可为交互式用户自动完成数据库,表和列名称的名称命名。

首先打开一个表。

InnoDB 检测到自上次更新统计信息以来,表的1/16已被修改。

配置采样页数

MySQL查询优化器基于索引的相对选择性,使用有关键分布的估计 统计信息来选择执行计划 的索引。当更新优化器统计信息,从表中的每个索引它的样本的随机页面来估计 基数的指数。(这种技术被称为 随机潜水。) InnoDB

为了控制统计信息估计的质量(从而为查询优化器提供更好的信息),您可以使用参数更改采样页数 innodb_stats_transient_sample_pages。默认的采样页数是8,可能不足以产生准确的估计值,从而导致查询优化器的索引选择不正确。对于大型表和联接中使用的表,此技术尤其重要 。此类表的不必要的 全表扫描可能是一个严重的性能问题。有关调优此类查询的提示,请参见 第8.2.1.23节“避免全表扫描”。 innodb_stats_transient_sample_pages 是可以在运行时设置的全局参数。

的值 innodb_stats_transient_sample_pages 影响InnoDB 时所有表和索引 的索引采样innodb_stats_persistent=0。更改索引样本大小时,请注意以下潜在的重大影响:

较小的值(例如1或2)可能会导致基数估计不准确。

增大该 innodb_stats_transient_sample_pages 值可能需要更多的磁盘读取。大于8的值(例如100)会导致打开表或执行时间大大减慢SHOW TABLE STATUS。

优化器可能基于对索引选择性的不同估计来选择非常不同的查询计划。

无论哪种值对 innodb_stats_transient_sample_pages 系统最有效,请设置该选项并将其保留为该值。选择一个可以对数据库中的所有表进行合理准确估计的值,而无需过多的I / O。由于统计信息会在执行以外的其他时间自动重新计算 ANALYZE TABLE,因此增加索引样本大小,运行ANALYZE TABLE并再次减小样本大小没有意义 。

较小的表通常比较大的表需要更少的索引样本。如果您的数据库有很多大表,则考虑使用innodb_stats_transient_sample_pages 比大多数情况下较小的表更高的值 。

mysql 8 配置参数优化_mysql8 参考手册--配置非持久性优化器统计参数相关推荐

  1. mysql通过订单量排序_mysql8 参考手册--通过排序优化

    本节描述了MySQL何时可以使用索引满足ORDER BY子句,无法使用索引时使用的 filesort操作,以及有关优化程序的执行计划信息ORDER BY. 一个ORDER BY有和没有 LIMIT可能 ...

  2. MySQL可不可以直接定义程序_mysql8 参考手册-定义存储程序

    每个存储的程序都包含一个由SQL语句组成的主体.该语句可以是由多个用分号(;)字符分隔的语句组成的复合语句.例如,以下存储过程的主体由一个BEGIN ... END包含一个SET 语句的块 和一个RE ...

  3. mysql innodb 缓冲池_mysql8 参考手册--配置多个InnoDB缓冲池实例

    配置多个缓冲池实例 对于缓冲池在数千兆字节范围内的系统,将缓冲池划分为多个单独的实例可以通过减少争用不同线程读写缓存页面的争用来提高并发性.此功能通常用于缓冲池大小在数GB范围内的系统.使用innod ...

  4. mysql添加枚举约束语句_mysql8 参考手册--MySQL如何处理约束

    MySQL使您既可以使用允许回滚的事务表,也可以使用不允许回滚的非事务表.因此,MySQL中的约束处理与其他DBMS中的约束处理有所不同.当您在非事务处理表中插入或更新了很多行时,如果发生错误,则无法 ...

  5. mysql复合语句声明开始于_mysql8 参考手册--BEGIN ... END复合语句

    [begin_label:] BEGIN [statement_list] END [end_label] BEGIN ... END 语法用于编写复合语句,复合语句可以出现在存储程序(存储过程和函数 ...

  6. mysql中repair的用法_mysql8 参考手册--REPAIR TABLE语句

    REPAIR [NO_WRITE_TO_BINLOG | LOCAL] TABLE tbl_name [, tbl_name] ... [QUICK] [EXTENDED] [USE_FRM] REP ...

  7. 支持mysql8的客户端_mysql8 参考手册--mysql客户端帮助

    mysql客户端帮助 mysql>help search_string 如果为help命令提供参数,则mysql将其用作搜索字符串,以从< MySQL参考手册>中提供帮助内容.该命令 ...

  8. mysql8 关闭密码策略_mysql8 参考手册--密码安全策略

    最终用户密码安全准则 MySQL用户应使用以下准则来保护密码安全. 当您运行客户端程序以连接到MySQL服务器时,建议不要以其他人可以发现它的方式指定密码.此处列出了您在运行客户端程序时可以用来指定密 ...

  9. mysql管理节点_mysql8 参考手册-NDB群集管理节点配置参数

    本节中的清单提供了有关在配置NDB群集管理节点的文件[ndb_mgmd]或 [mgm]部分中 使用的参数的信息config.ini.有关每个参数的详细说明和其他附加信息,请参见 第22.3.3.5节& ...

最新文章

  1. Pycharm安装PyQT5调用QTDesigner
  2. volatile关键字——保证并发编程中的可见性、有序性
  3. android读取外部图片,Android读取本地图库与调用摄像头拍摄
  4. 神曲背后的故事:算法工程师带你理性解构“蚂蚁呀嘿”
  5. html写用户导入,用户基本信息录入.html
  6. uvm 形式验证_谈一谈IC flow中的形式验证
  7. 第一天 学习前的准备
  8. 对 比 学 习 小 综 述
  9. cv2 python 多线程调用摄像头_2种方法用python调用cv2模块给图片打马赛克
  10. Java入门第37课——猜字母游戏之设计数据结构
  11. 同时安装vs2010和VS2012后IEnumerableModelClientValidationRule编译错误
  12. 云痕大数据 家长登录_智学网家长学生查分入口:www.zhixue.com
  13. 数据库自增 ID 用完了会咋样?
  14. ARRL在线电台日记(LOTW)申请
  15. c语言 数据定义,C语言中的数据定义
  16. 2017-2018-2 20179204《网络攻防实践》第二周学习总结
  17. 那计算机的发展基础是什么呢,计算机的基础
  18. 【天光学术】药学论文:医院药学部门管理现状与对策(节选)
  19. 网易云放音乐加载不出来 CSDN打不开等问题 重新分配IP地址
  20. 优酷路由器-openwrt学习二

热门文章

  1. SQL Server 急救包(First Responder Kit)入门教程
  2. windows环境下Apache+PHP+MySQL搭建服务器
  3. php.ini-development和php.ini-production的区别
  4. PHP开发中保证接口安全
  5. 【ArcGIS微课1000例】0009:ArcGIS影像拼接(镶嵌、镶嵌至新栅格)
  6. 【ArcGIS风暴】ArcGIS快捷键大全
  7. 【专升本计算机】专升本计算机期末考试复习题(B卷附答案)
  8. 从C#开始的面向对象编程经典自学教程
  9. 【遥感物候】C#遥感数据GIMMS 3G NDVI头文件批量生成器(几何校正)
  10. java之异常java.net.MalformedURLException解决办法