mysql-5.7 持久化统计信息详解

一、持久化统计信息的意义:

  统计信息用于指导mysql生成执行计划,执行计划的准确与否直接影响到SQL的执行效率;如果mysql一重启

  之前的统计信息就没有了,那么当SQL语句来临时,那么mysql就要收集统计信息然后再生成SQL语句的执行

  计划。如果能在关闭mysql的时候就把统计信息保存起来,那么在启动时就不要再收集一次了,这种处理方式

  有助于效率的提升。

 

 

二、统计信息准确与否也同样重要:

  第一目中我们说明了“持久化统计信息的意义”,我们的假设统计信息是有用的,是准确的;如果统计信息本身

  已经过时了,比如说统计信息是在表中只有100行时统计出来的,这种情况下往往走全表扫描开销会更小,但是

  呢! 现在表中的行数已经达到了100万行,明显这种过时的统计信息会引发性能灾难,所以统计信息的时效性也

  是同样重要的。那mysql它什么时候自动更新统计信息呢?默认情况下当表中的数据有10%被修改过的就会更新。

 

 

三、mysql对统计信息的处理:

  针对上面的两个问题mysql都有给出解决方案,并且都可能通过简单的配置来解决

  1、针对是否持久化统计信息mysql可以通过innodb_stats_persistent参数来控制

  2、针对统计信息的时效性,mysql通过innodb_stats_auto_recalc参数来控制是否自动更新

  3、针对统计信息的准确性,mysql通过innodb_stats_persistent_sample_pages 参数来控制更新

  统计信息时的采样,样本页面的数量。

[mysqld]
innodb_stats_persistent=1
innodb_stats_auto_recalc=1
innodb_stats_persistent_sample_pages=20

 

四、手动更新统计信息的方式:

  mysql通过analyze table 语句来手动的更新统计信息

 

五、查看表的统计信息是什么时候更新的:

  mysql把统计信息相关的内容记录在mysql.innodb_table_stats ,mysql.innodb_index_stats 这两张表里面。

  mysql.innodb_table_stats以表为单位记录着统计信息

mysql> select * from innodb_table_stats;
+---------------+----------------------------+---------------------+--------+----------------------+--------------------------+
| database_name | table_name                 | last_update         | n_rows | clustered_index_size | sum_of_other_index_sizes |
+---------------+----------------------------+---------------------+--------+----------------------+--------------------------+
| fdb           | auth_group                 | 2017-08-10 14:36:40 |      0 |                    1 |                        1 |
| fdb           | auth_group_permissions     | 2017-08-10 14:36:41 |      0 |                    1 |                        2 |
| fdb           | auth_permission            | 2017-08-10 14:36:41 |     30 |                    1 |                        1 |
| fdb           | auth_user                  | 2017-08-10 14:36:41 |      0 |                    1 |                        1 |
| fdb           | auth_user_groups           | 2017-08-10 14:36:41 |      0 |                    1 |                        2 |
| fdb           | auth_user_user_permissions | 2017-08-10 14:36:41 |      0 |                    1 |                        2 |
| fdb           | cninfo_company             | 2017-08-10 14:36:58 |   4996 |                  161 |                        6 |
| fdb           | csindex_indexdetail        | 2017-09-17 14:04:27 |      0 |                    1 |                        0 |
| fdb           | csindex_indexoverview      | 2017-09-01 12:44:18 |     11 |                    1 |                        0 |
| fdb           | django_admin_log           | 2017-08-10 14:36:47 |      0 |                    1 |                        2 |
| fdb           | django_content_type        | 2017-08-10 14:36:47 |     10 |                    1 |                        1 |
| fdb           | django_migrations          | 2017-09-04 14:04:09 |     37 |                    1 |                        0 |
| fdb           | django_session             | 2017-08-10 14:36:47 |      0 |                    1 |                        1 |
| fdb           | glod_glodprice             | 2017-08-10 14:36:48 |   2271 |                   10 |                        0 |
| fdb           | pbc_moneysupply            | 2017-08-10 14:37:08 |     78 |                    1 |                        0 |
| fdb           | shibor_shiborrate          | 2017-08-10 14:37:18 |   2711 |                   14 |                        0 |
| fdb           | sse_marketoverview         | 2017-08-15 16:06:12 |      0 |                    1 |                        0 |
| mysql         | gtid_executed              | 2017-09-06 11:02:14 |      2 |                    1 |                        0 |
| sys           | sys_config                 | 2017-08-10 12:19:06 |      6 |                    1 |                        0 |
| tempdb        | person                     | 2017-09-14 11:18:15 |      1 |                    1 |                        0 |
| tmp           | t                          | 2017-08-15 11:06:18 |      2 |                    1 |                        0 |
+---------------+----------------------------+---------------------+--------+----------------------+--------------------------+
21 rows in set (0.00 sec)

  各个列所代表的意义:

  database_name        表所在的库名

  table_name          表名

  last_update          最近一次的更新时间

  n_rows            表中的行数

  clustered_index_size       主键的大小

  sum_of_other_index_sizes   所有二级索引的大小

 

 

 六、一些在analyze table 过程中的经验:

  如果我们用explan 语句查看SQL的执行计划的时候发现,计划走的不准,多半是由于统计信息过时引起的,这个

  时候就要执行一下analyze table 来重新生成一下执行计划了;有时候可能发现重新生成执行计划后并没有什么用

  SQL还是走的不准,这个时候最可能的原因就是生成执行计划时的采样页的数量太低了,innodb_stats_persistent_sample_pages

  这个参数的值,注意这个值也不要加的太大,要不然会老半天都执行不完analyze table 语句。

 

  

七、附加说明

  上文中说的mysql实际上指的只是Innodb这个引擎

 

----

-----------------------------------------------------------------------

 

转载于:https://www.cnblogs.com/JiangLe/p/7535710.html

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

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

相关文章

关于传感器”英寸“计量

传感器上的n是指对角线长度为16mm或18mm的n倍 以英寸代指的传感器大小称为靶面尺寸。 在CCD/CMOS出现之前,摄像机是利用一种叫作“光导摄像管(Vidicon Tube)”的成像器件感光成像的,这是一种特殊设计的电子管,其直径的…

关于USB-AUDIO使用ALSA编程的一点问题

转载自:http://blog.chinaunix.net/uid-25272011-id-3153434.html 最近在调试一款原相PAP7501摄像头中的USB的麦克风,USB层走的应该是标准的UAC协议,具体可以见USB的官网:http://www.usb.org/developers/devclass_docs#approved&a…

Fiddler4入门——手机抓包

一、下载工具包 百度搜索”fiddler 下载“ ,安装最新版本 下载的软件安装包为“fiddler_4.6.20171.26113_setup.exe”格式,双击安装。安装成功,在“开始”-“所有程序”,就会看见这样的图标,若是常用的话,也…

(五)DOM4j进行XML文件的解析及生成

DOM4j本身还是需要使用SAX建立解析器,然后通过文档依次找到根节点,再通过根节点查找每一个节点的内容. 1.写操作 import java.io.File;import java.io.FileOutputStream;import java.util.Iterator; import org.dom4j.Document;import org.dom4j.Documen…

Linux系统基础.作业

要求以root用户登录系统,右击桌面打开终端,查看当前登陆Linux系统所使用的用户名 查看哪些用户在系统上工作 修改当前时间为2018年8月26号11:28 查看2015年10月份日历 使用两种方法查看ls命令的使用说明 清除屏幕 ctrlL使用“useradd tom”命令新建tom用…

Alsa中PCM参数设置

分类: LINUX 1) PCM设备的句柄.2) 指定同时可供回放或截获的PCM流的方向3) 提供一些关于我们想要使用的设置选项的信息,比如缓冲区大小,采样率,PCM数据格式等4) 检查硬件是否支持设置选项.4.1) 初始化PCM变量4.2) 分配hwparams结构4.3) 打开PCM设备4.4) 以声卡的全部…

java5

java基础(五)命名规则: 名字中只能包含->字母、_、数字、$,且开头不能为数字包名必须都小写文件名首字母和后面英文文件单词首字母都要大写变量和方法名 首字母小写,后面英文单词首字母大写java中的方法&#xff1a…

最新历史版本 :H.265

原来对264有深入的研究,现在想详细了解下265啦,愿265尽快广泛的使用起来,人们可以享受无处不在的视觉盛宴。 H.265是ITU-T VCEG 继H.264之后所制定的新的视频编码标准。H.265标准围绕着现有的视频编码标准H.264,保留原来的某些技术…

凯撒密码、GDP格式化输出、99乘法表

1.恺撒密码的编码 sinput(请输入明文:) print(密文为:) for i in s:print(chr(ord(i)3),end)运行结果为: 2.国家名称 GDP总量(人民币亿元) 中国 ¥765873.4375 澳大利亚 ¥ 78312.4375 (国家名称左对齐&am…

【BZOJ3453】XLkxc [拉格朗日插值法]

XLkxc Time Limit: 20 Sec Memory Limit: 128 MB[Submit][Status][Discuss]Description 给定 k,a,n,d,p  f(i)1^k2^k3^k......i^k  g(x)f(1)f(2)f(3)....f(x)  求(g(a)g(ad)g(a2d)......g(and))mod p Input 第一行数据组数,(保证小于6)  以下每行四个整数 …

hive安装

雷顿学院大数据雷顿学院大数据:http://www.leidun.site/hive安装下载hivehttp://mirror.bit.edu.cn/apache/hive/下载后解压配置命令将hive加入命令vim ~/.bash_profile添加如下命令export HIVE_HOME/usr/local/Cellar/hive/1.2.1/libexec保存文件mysql数据库驱动cu…

Alsa驱动分析(转)

1. Abstract 2. Introduction 3. 音频驱动框架介绍 3.1 音频设备的注册 3.2 音频驱动的注册 3.2.1 Probe函数的调用 3.2.2 Soc_probe函数 4. 通常的使用流程的分析 4.1.1 open过程介绍 4.1.2 snd_pcm_hw_params流程分析 4.1.3 …

[BZOJ] 1620: [Usaco2008 Nov]Time Management 时间管理

1620: [Usaco2008 Nov]Time Management 时间管理 Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 850 Solved: 539[Submit][Status][Discuss]Description Ever the maturing businessman, Farmer John realizes that he must manage his time effectively. He has N jobs con…

DDR工作原理

DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的SDRAM的基础上改进而来。也正因为如此,DDR能够凭借着转产成本优势来打败昔日的对手RDRAM,成为当今的主流。本文只着重讲讲DDR的原理和DDR SDRAM相对于…

智能故事机方案简介

智能故事机,又叫WiFi故事机,AI故事机,通过WiFi联网,用户语音就可以跟它进行问答、点歌等互动;由于联网所以可以播放云端海量的儿童音频内容;手机端在微信公众号或者专属APP上操作,可以点播相应内…

weui-switch开关控件,表单提交后如何取值

最近在学习weui这个框架,做了一些小的试验,发现weui-switch控件直接提交不能获取到表单信息,在segmentfault上发现也有人提了这个问题,有人说可以设置一个隐含标签来捕获开关的状态,试了一下,确实可以&…

麦克风设计指导与选型参考

随着语音识别技术的成熟,智能音箱类产品的火爆,越来越多的产品可以升级为语音交互产品; 下面简单介绍下此类产品的语音前端--麦克风阵列设计相关注意事项: 线性四麦阵列构型:如上图所示,麦克风直线等距摆…

云计算在未来一定是不可或缺的

2019独角兽企业重金招聘Python工程师标准>>> 在2018京东云合作伙伴大会上,京东云总裁申元庆表示,技术发展的大趋势是“分久必合,合久必分”循环往复的波动,近十年来云计算的发展将算力、存储、带宽全部集中在中央部分&…

智能音箱 之 音频通路质量--测试与参数

一、概述 当将语音识别算法接入到设备时,务必要保证设备的音频通路具有足够的质量。因此对设备进行音频测试,以评估能够影响语音识别性能的音频前端的音频参数。如下要点对语音识别至关重要: 自然声音合适的增益良好的信噪比一致的响应&…

Python学习 - 常用模块(二)

目录 一. 常用模块 - hashlib 二. 常用模块 - hmac 三. 常用模块 - logging 四. 常用模块 - re 五. 常用模块 - requests 六. 常用模块 - paramiko 一. 常用模块 - hashlib hash: 一种算法, 3.x里代替了md5模块和sha模块, 主要提供 SHA1, SHA224, SHA256, SHA384, SHA512, MD5 …