返回顶部
首页 > 资讯 > 数据库 >详解mysql持久化统计信息
  • 579
分享到

详解mysql持久化统计信息

mysql持久化统计信息mysql统计信息 2022-05-27 09:05:44 579人浏览 安东尼
摘要

一、持久化统计信息的意义:   统计信息用于指导Mysql生成执行计划,执行计划的准确与否直接影响到sql的执行效率;如果mysql一重启   之前的统计信息就没有了,那么当SQL语句来临时,那么mysql就要收集统

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

  统计信息用于指导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 参数来控制更新

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

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

  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这个引擎

以上就是详解mysql持久化统计信息的详细内容,更多关于mysql持久化统计信息的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 详解mysql持久化统计信息

本文链接: https://lsjlt.com/news/9993.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 详解mysql持久化统计信息
    一、持久化统计信息的意义:   统计信息用于指导mysql生成执行计划,执行计划的准确与否直接影响到SQL的执行效率;如果mysql一重启   之前的统计信息就没有了,那么当SQL语句来临时,那么mysql就要收集统...
    99+
    2022-05-27
    mysql 持久化统计信息 mysql 统计信息
  • 学生信息系统(json模块解决数据持久化
    将学生管理的案例,学生信息由原来的只有姓名,拓展为包含,姓名,年龄,两个属性;完成对应的增、删、查、改,操作 import json,os,time,sys student_list = [] File_path = 'name.txt...
    99+
    2023-01-31
    信息系统 持久 模块
  • Redis 持久化详解
    http://www.redis.cn/topics/persistence.html 持久化 Redis 如同其他的存储组件一样,提供了两类持久化方式:快照,和全量追加日志。 RDB - 快照 在默认情况下, Redis 将数据库...
    99+
    2015-08-16
    Redis 持久化详解
  • Percona MySQL 5.6如何配置InnoDB优化器永久统计信息
    这篇文章主要介绍Percona MySQL 5.6如何配置InnoDB优化器永久统计信息,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 优化器永久统计信息...
    99+
    2024-04-02
  • redis 详解(4)持久化
    定义 redis 所有数据保存在内存中,对数据更新将异步保存到磁盘 持久化的作用 方式 说明 快照 mysql dump,redis RDB 日志 mysql binlog,redis AOF,hbase Hlog ...
    99+
    2020-07-06
    redis 详解(4)持久化
  • Redis的持久化详解
    目录一、Redis的持久化二、RDB(Redis DataBase)1、RDB快照原理2、RDB配置3、redis.conf 其他一些配置4、RDB的备份恢复5、RDB优缺点三、AOF(Append Of File)1、...
    99+
    2023-06-05
    Redis持久化详解 Redis 持久化
  • 如何理解ORACLE表统计信息与列统计信息、索引统计信息
    如何理解ORACLE表统计信息与列统计信息、索引统计信息,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 ...
    99+
    2024-04-02
  • Redis持久化存储详解
    为什么要做持久化存储 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服务器关机等一些异常情况都会...
    99+
    2018-04-22
    Redis持久化存储详解
  • python 统计MySQL表信息
    线上有一台MySQL服务器,里面有几十个数据库,每个库有N多表。现在需要将每个表的信息,统计到excel中,格式如下:库名表名表说明建表语句db1users用户表CREATE TABLE `users` (...)怎么做呢?1. 手动录入(...
    99+
    2023-01-30
    信息 python MySQL
  • 微课sql优化(8)、统计信息收集(6)-统计信息查询
    1、关于查询统计信息 dba_tables...
    99+
    2024-04-02
  • Redis教程(十):持久化详解
    一、Redis提供了哪些持久化机制: 1). RDB持久化: 该机制是指在指定的时间间隔内将内存中的数据集快照写入磁盘。 2). AOF持久化: 该机制将以日志的形式...
    99+
    2022-06-04
    详解 持久 教程
  • Redis持久化存储详解(一)
    为什么要做持久化存储 持久化存储是将 Redis 存储在内存中的数据存储在硬盘中,实现数据的永久保存。我们都知道 Redis 是一个基于内存的 nosql 数据库,内存存储很容易造成数据的丢失,因为当服...
    99+
    2024-04-02
  • 详解vue页面状态持久化详解
    目录代码:补充:总结需求:左树右表。组织树选中某一节点后,进入详情页面,再返回时需要保持选中。其他查询条件也需要保持状态。 思路:用vuex结合localStorage缓存数据。点击...
    99+
    2024-04-02
  • Oracle 11g收集多列统计信息详解
    前言 通常,当我们将SQL语句提交给Oracle数据库时,Oracle会选择一种最优方式来执行,这是通过查询优化器Query Optimizer来实现的。CBO(Cost-Based Optimizer)是...
    99+
    2024-04-02
  • 一文详解Redis中的持久化
    目录1. 前言2. RDB2.1 手动触发2.2 自动触发3. bgsave大致流程4. RDB持久化方式的优缺点5. AOF6. AOF的使用方式7. AOF流程剖析7.1 命令写入7.2 文件同步7.3 重写机制7....
    99+
    2024-04-02
  • Java ActiveMQ:全面解析消息持久化机制
    一、消息持久化的重要性 消息持久化是消息中间件的核心功能之一,它确保了消息在传输过程中不会丢失。在Java ActiveMQ中,消息持久化机制可以保证即使在消息代理或网络故障的情况下,消息也不会丢失。 二、消息持久化的机制 Active...
    99+
    2024-02-08
    Java ActiveMQ 消息 持久化 策略 性能
  • MySQL 数据持久化过程讲解
    目录1. 过程简述2. 内存中的操作3. 磁盘的持久化3.1 事务日志的作用3.2 表结构的两步存储1. 过程简述 理解MySQL数据的持久化过程,能很好的帮助我们加深对于MySQL...
    99+
    2022-11-13
    MySQL 数据持久化过程 MySQL 数据持久化
  • Redis持久化方式RDB与AOF详解
    前言Redis提供了两种数据存储方式,分别是:cache-only && persistence;cache-only顾名知义,是用与缓存服务的,数据在服务器终止后将消失,在此模式下将不存在...
    99+
    2024-04-02
  • react redux及redux持久化示例详解
    目录一、react-redux二、redux持久化一、react-redux react-redux依赖于redux工作。 运行安装命令:npm i react-redux: 使用...
    99+
    2022-11-13
    react redux持久化 react redux redux持久化
  • SQL优化之统计信息和索引
    大部分情况下的sql优化的场景,都是发生在我们想让我们的sql语句运行的更快一点,这个时候我们往往会采取一些“措施”调整sql的执行路径以便它们能更快的运行结束。 刚入dba行业,常常听到导师和...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作