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

本节介绍如何配置非持久性优化器统计信息。当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 比大多数情况下较小的表更高的值 。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305926.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

“既然计划没有变化快,那制订计划还有个卵用啊!”

这是头哥侃码的第229篇原创每年年初,我的朋友圈里都会炸出不少在打完鸡血之后,迫不及待向全世界宣告自己 “新年Flag” 的人。有的人,把健身、养生设为目标,什么不暴瘦20斤不换头像呀,什么再也不吃炸鸡啤酒啦&#xff…

图书管理系统jsp代码_【程序源代码】使用Java开发的图书管理系统

关键字:java 管理系统 正文 | 内容01—【概述】使用Java开发的图书管理系统,读者可以注册登录,登录时会判断账号类型再分别跳到各自对应的页面,读者可以查找,借阅,还书,查看历史借阅记录&#x…

老人言:尽量用异步

官方和老人言,asp.net core中尽量用异步,为什么呢?接下来是个小demo,看看同步异步的差别吧,或许通过这个demo,就明白官方和老人的良苦用心了。1、创建一个sql server的表CREATE TABLE [dbo].[Students]([St…

mysql函数保留小数_MySql自定义函数-关于保留小数位的特殊需求

背景昨天,关于价格详情接口又来了一个小需求,而且有点特别。价格显示:改为保留两位小数,没错,就是保留两位小数。大家是不是想说这没啥特别的。。。数据库都有函数搞定了。例如四舍五入的ROUND(x,d),直接截…

整合.NET WebAPI和 Vuejs——在.NET单体应用中使用 Vuejs 和 ElementUI

.NET简介.NET 是一种用于构建多种应用的免费开源开发平台,例如:Web 应用、Web API 和微服务云中的无服务器函数云原生应用移动应用桌面应用1). Windows WPF2). Windows 窗体3). 通用 Windows 平台 (UWP)游戏物联网 (IoT)机器学习控制台应用Windows 服务跨…

python 进程池_python进程池

当需要创建的子进程数量不多时,可以直接利用multiprocessing中的Process动态成生多个进程,但如果是上百甚至上千个目标,手动的去创建进程的工作量巨大,此时就可以用到multiprocessing模块提供的Pool方法。初始化Pool时&#xff0c…

【gRPC】 在.Net core中使用gRPC

最近在学习.net core的微服务体系架构。微服务之间的通信常常通过gRPC进行同步通信,但是需要注意的是,大多数微服务之间的通信是通过事件总线进行异步通信。在微软介绍.net微服务体系架构的项目eShop中,微服务之间进行同步通信的场景很多&…

disconf mysql_Docker搭建disconf环境,三部曲之三:细说搭建过程

Docker下的disconf实战全文链接细说搭建过程在前两章中,我们利用远程或本地的镜像,快速体验了本地启动disconf的过程,本章我们一起来分析和梳理整个定制和搭建过程,了解这些后,我们就能根据自己的需要来定制本地的disc…

AgileConfig-如何使用AgileConfig.Client读取配置

前面的文章都是介绍AgileConfig服务端已经控制台是如何工作、如何使用的,其实AgileConfig还有一个重要的组成部分:AgileConfig.Client。AgileConfig.Client是使用C#编写的一个类库,只有使用它才能跟AgileConfig的服务端配合工作实现实时推送配…

mysql导入数据提前修改字段_Mysql一些导入导出数据库,添加修改字段命令_MySQL...

bitsCN.comMysql 导出数据库表包含数据命令:mysqldump -uroot -proot abc >/var/abc.sql;(mysql用户名:root 密码root 数据库:abc 导出到:/var/abc.sql)Mysql 导出数据库表不包含数据命令:mysqldump -uroot -proot …

轻量级 Kubernetes K3s - Github热点

轻量级 Kubernetes k3sstar: 15.5kK3s是完全符合生产要求的Kubernetes发行版, 安装简单,可用于生产,整个二进制文件小于100M,作为单一文件打包部署,优势在于,你只需几秒钟就可以得到一个完全成熟的Kubernetes集群。htt…

java 固定长度队列_如何彻底搞懂 Java 数据结构?|CSDN 博文精选

作者 | 张振华.Jack责编 | 郭芮出品 | CSDN 博客本文和大家一起来重温《Java数据结构》经典之作。Java数据结构要理解Java数据结构,必须能清楚何为数据结构?数据结构:Data_Structure,它是储存数据的一种结构体,在此结构…

IdentityServer4 之 Resource Owner Password Credentials 其实有点尴尬

前言接着IdentityServer4的授权模式继续聊,这篇来说说 Resource Owner Password Credentials授权模式,这种模式在实际应用场景中使用的并不多,只怪其太开放啦,直接在客户端上拿着用户名和密码就去授权服务器获取AccessToken&#…

存储过程mysql报错1271_mysqldump备份失败以及解决方法汇总

mysqldump备份失败以及解决方法汇总〇 mysqldump: Error: Query execution was interrupted, maximum statement execution time exceeded when trying to dump tablespaces〇 mysqldump: Error 3024: Query execution was interrupted, maximum statement execution time exce…

Xamarin使XRPC实现接口/委托远程调用

在之前的文章中已经介绍如何使用Beetlex.XRCP组件进行接口/委托远程调用;由于组件BeetleX.XRPC.Clients支持.NETStandard2,因此Xamarin同样可以使用它来实现基于接口/委托的数据交互通讯。接下来通过Xamarin实现一个简单的移动程序,并通过XRP…

mysql 拷贝安装_Mysql的安装和主从复制

安装mysql服务步骤一:首先下载mysql的yum源配置 ,下载mysql的yum源wget http://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm步骤二:安装mysql的yum源yum -y install mysql57-community-release-el7-11.noarch.rpm步骤三&…

浅谈CLR基础知识

中午的时候,有一个小伙伴问我,CLR到底是进程还是线程,它和自己写的程序是怎么关联的。这一问,直接把我问懞了。下面我尝试用简单的语言来描述这个问题,有的地方无法讲的太细(不然内容会太多)&am…

mysql打开无法控制_MySQL不能启动和停止 MySQL各种解决方法教程

MySQL不能启动和停止 MySQL各种解决方法教程本文章总结了种MySQL无法启动、无法停止解决办法,包括在windows系统,linux系统中mysql不能启动与停止的解决办法,有需了解的朋友可进入参考。解决无法启动A、先使用命令C:/Program files/mysql/bin/mysqladmin…

NHibernate中的SchemaExport

昨天,在看hibernate文档的时候,看到了这样一段: You should now create this table in your database manually, and later read Chapter 15, Toolset Guide if youwant to automate this step with the SchemaExport tool. This tool can …

Asp.Net Core使用Skywalking实现分布式链路追踪

介绍Skywalking 是 Apache 基金会下面的一个开源 APM 项目,是一套(APM)分布式追踪系统,提供了很多数据存储列如:Mysql,H2,Elasticsearch7 等。其中APM 全称是应用性能监测软件,主要是用来处理以及追踪分布式…