首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL 8.0统计信息不准确?

MySQL 8.0统计信息不准确?

提问于 2021-01-26 23:24:52
回答 5关注 2查看 1.3K

MySQL 5.7下的场景

(1)首先,创建两张表,并插入数据

代码语言:javascript
运行
AI代码解释
复制
mysql >选择版本(); 
+  -  -  -  -  -  -  +  
|  版本()   |  
+  -  -  -  -  -  -  +  
|   5.730  -日志|  
+  -  -  -  -  -  -  +  
1行中集合(0.00秒)

的MySQL的>显示创建表测试\ G变变
**  **  **  **  **  **  **  **  **  **  **  **  **  *   1。排**  **  **  **  **  **  **  **  **  **  **  **  **  *
       表:测试
创建表:CREATE TABLE `test``id`   INT10)无符号NOT NULL AUTO_INCREMENT`k`   INT10)无符号NOT NULL DEFAULT '0'`C`炭(120NOT NULL DEFAULT ''`pad`   char(60NOT NULL DEFAULT ”,
  主键(`id`),
  键`k_1``k`)
)ENGINE = InnoDB的AUTO_INCREMENT =  101个字符集= utf8mb4 MAX_ROWS =百万
1行中集合(0.00秒)

的MySQL的>显示创建表sbtest1 \ G变变
**  **  **  **  **  **  **  **  **  **  **  **  **  *   1。第**  **  **  **  **  **  **  **  **  **  **  **  **  **  *
       表:sbtest1
创建表:CREATE TABLE`sbtest1``id`   int(10)unsigned NOT NULL AUTO_INCREMENT`k`   int(10)unsigned NOT NULL DEFAULT'0 '`c`   char(120NOT NULL DEFAULT',
   `pad `   char(60)非空默认值”,
  主键(`id`),
  键`k_1``k`)
)ENGINE = InnoDB的AUTO_INCREMENT =  1000001个字符集= utf8mb4 MAX_ROWS =百万
1行中集合(0.00秒)

的MySQL >从测试中选择计数(*; +  -  -  -  -  -  +  |数(*|  +  -  -  -  -  -  +  |  100  |  +  -  -  -  -  -  +  1行中集合(0.00秒)

  

       

  

mysql >从sbtest1选择计数(*); +  -  -  -  -  -  +  |数(*|  +  -  -  -  -  -  +  |  1000000  |  +  -  -  -  -  -  +  1行中集合(0.14秒)

(2)查看两张表的统计信息,均比较准确

代码语言:javascript
运行
AI代码解释
复制
mysql >从表名=  '测试'的表中选择table_schema,table_name,table_rows ;  +  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  | table_schema | table_name | table_rows |  +  -  -  -  -  -  -  -  +


-  -  -  -  -  -  +  -  -  -  -  -  -  +  
|测试         |测试       |          100   |  
+  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  
1行中集合(0.00秒)

mysql >从表名=  'sbtest1'的表中选择table_schema,table_name,table_rows ;  +  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  | table_schema | table_name | table_rows |  +  -  -  -  -  -  -  -  +


-  -  -  -  -  -  +  -  -  -  -  -  -  +  
|测试         | sbtest1      |       947263   |  
+  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  
1行中集合(0.00秒)

(3)我们持续往test表插入1000w条记录,并再次查看统计信息,还是相对准确的,因为在位置情况下,数据变化量超过10%,就会触发统计信息更新

代码语言:javascript
运行
AI代码解释
复制
的MySQL >从测试中选择计数(*; +  -  -  -  -  -  +  |数(*|  +  -  -  -  -  -  +  |  10000100  |  +  -  -  -  -  -  +  1行中集合(1.50秒)

  

  

  

mysql >从表名=  '测试'的表中选择table_schema,table_name,table_rows ;  +  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  | table_schema | table_name | table_rows |  +  -  -  -  -  -  -  -  +


-  -  -  -  -  -  +  -  -  -  -  -  -  +  
|测试         |测试       |      9749036   |  
+  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  
1行中集合(0.00秒)

MySQL 8.0下的场景

(1)接下来我们看看8.0下的情况吧,同样地,我们创建两张表,并插入相同记录

代码语言:javascript
运行
AI代码解释
复制
mysql >选择版本(); 
+  -  -  -  -  -  -  +  
|  版本()|  
+  -  -  -  -  -  -  +  
|   8.020      |  
+  -  -  -  -  -  -  +  
1行中集合(0.00秒)

的MySQL的>显示创建表测试\ G变变
**  **  **  **  **  **  **  **  **  **  **  **  **  *   1。排**  **  **  **  **  **  **  **  **  **  **  **  **  *
       表:测试
创建表:CREATE TABLE `test``id` INT无符号NOT NULL AUTO_INCREMENT`k` INT无符号NOT NULL DEFAULT '0'`C`
  炭(120NOT NULL DEFAULT ''`pad`
  炭(60)非空默认值”,
  主键(`id`),
  键`k_1``k`)
)引擎= InnoDB AUTO_INCREMENT =  101时间的字符集= utf8mb4 COLLATE = utf8mb4_0900_ai_ci MAX_ROWS =百万
1行中集合(0.00秒)

的MySQL的>显示创建表sbtest1 \ G变变
**  **  **  **  **  **  **  **  **  **  **  **  **  *   1。第**  **  **  **  **  **  **  **  **  **  **  **  **  **  *
       表:sbtest1
创建表:CREATE TABLE`sbtest1``id` INT无符号NOT NULL AUTO_INCREMENT`k` INT无符号NOT NULL缺省'0'`C`炭(120NOT NULL DEFAULT ”,
   ``pad`炭(60)非空默认值”,
  主键(`id`),
  键`k_1``k`)
)引擎= InnoDB AUTO_INCREMENT =  1000001默认的字符集= utf8mb4 COLLATE = utf8mb4_0900_ai_ci MAX_ROWS =百万
1行中集合(0.00秒)

的MySQL >从测试中选择计数(*; +  -  -  -  -  -  +  |数(*|  +  -  -  -  -  -  +  |  100  |  +  -  -  -  -  -  +  1行中集合(0.00秒)

  

       

  

mysql >从sbtest1选择计数(*); +  -  -  -  -  -  +  |数(*|  +  -  -  -  -  -  +  |  1000000  |  +  -  -  -  -  -  +  1行中集合(0.02秒)

(2)查看两张表的统计信息,均比较准确

代码语言:javascript
运行
AI代码解释
复制
mysql >从表名=  '测试'的表中选择table_schema,table_name,table_rows ;  +  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  | TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS |  +  -  -  -  -  -  -  -  +


-  -  -  -  -  -  +  -  -  -  -  -  -  +  
|测试         |测试       |          100   |  
+  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  
1行中集合(0.00秒)

mysql >从表名=  'sbtest1'的表中选择table_schema,table_name,table_rows ;  +  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  | TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS |  +  -  -  -  -  -  -  -  +


-  -  -  -  -  -  +  -  -  -  -  -  -  +  
|测试         | sbtest1      |       947468   |  
+  -  -  -  -  -  -  -  +  -  -  -  -  -  -  +  -  -  -  -  -  -  +  
1行中集合(0.01秒)

(3)同样地,我们持续往test表插入1000w条记录,并再次查看统计信息,发现table_rows显示还是100条,出现了偏差

代码语言:javascript
运行
AI代码解释
复制
mysql >从测试中选择count (* ) ;+ - - - - - + | 数(*| + - - - - - + | 10000100 | + - - - - - + 1行中集合(0.33秒)

  

  

  

mysql >从table_name = 'test'的表中选择table_schema , table_name , table_rows ; + - - - - - - - + - - - - - - + - - - - - - + | TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | + - - - - - - - +


- - - - - - + - - - - - - + 
| 测试         | 测试       |         100  | 
+ - - - - - - - + - - - - - - + - - - - - - + 
1行中 集合 (0.00秒)

回答 5

刺激

精选回答

发布于 2021-01-27 09:23:47

回答来自于问答智囊团成员:王文安@DBA

专栏:https://cloud.tencent.com/developer/user/7566357

原因剖析

实际上是MySQL 8.0为了提高information_schema的查询效率,将表和统计信息放入内部的统计信息缓存起来,缓存时间由参数information_schema_stats_expiry决定,至少为86400s;如果想获取最新的统计信息,可以通过如下两种方式:

(1)分析表进行表分析

(2)设置information_schema_stats_expiry = 0

继续探索

那么统计信息不准确,会带来哪些影响呢?或者会影响执行计划呢?然后我们再次进行测试

测试1:表test记录数100,表sbtest1记录数100w

执行如下SQL,查看执行计划,走的是NLJ,小表test作为驱动表(全表扫描),大表sbtest1作为被驱动表(主键关联),执行效率很快

代码语言:javascript
运行
AI代码解释
复制
mysql >从测试中选择count (* ) ;+ - - - - - + | 数(*| + - - - - - + | 100 | + - - - - - + 1行中集合(0.00秒)

  

       

  

mysql >从sbtest1选择计数(*; + - - - - - + | 数(*| + - - - - - + | 1000000 | + - - - - - + 1行中集合(0.02秒)

  

   

  

mysql >从table_name = 'test'的表中选择table_schema , table_name , table_rows ; + - - - - - - - + - - - - - - + - - - - - - + | TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | + - - - - - - - +


- - - - - - + - - - - - - + 
| 测试         | 测试       |         100  | 
+ - - - - - - - + - - - - - - + - - - - - - + 
1行中 集合 (0.00秒)

mysql >从table_name = 'sbtest1'的表中选择table_schema , table_name , table_rows ; + - - - - - - - + - - - - - - + - - - - - - + | TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | + - - - - - - - +


- - - - - - + - - - - - - + 
| 测试         | sbtest1     |      947468  | 
+ - - - - - - - + - - - - - - + - - - - - - + 
1行中 集合 (0.01秒)

mysql >选择t 。* 来自于t的测试t内部联接sbtest1 t1 。id = t1 。id在哪里t 。c = '08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977'和t1 。c = '08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977' ; 
+ - - + - - - - + - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 
| id | k       | c                                                                                                                        || 
+ - - + -- - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 
|   1  |  501885  |  08566691963 - 88624912351 - 16662227201 - 46648573979 -64646226163 - 77505759394 - 75470094713 - 41097360717 - 15161106334 - 50535565977  |  63188288836 - 92351140030 - 06390587585 - 66802097351 - 49282961843  | 
+ - - + - - - - + - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - + 
1行中 集合 (0.00秒)

mysql >说明选择t 。* 来自于t的测试t内部联接sbtest1 t1 。id = t1 。id在哪里t 。c = '08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977'和t1 。Ç = ' 08566691963 - 88624912351 - 16662227201 - 4664 
+ - - + - - - - - - - + - - -- + - - - - - - + - - - - + - - - - - - - - + - - - - - + - - - - - + - - - - - - + - - - + - - - - - + - - - - - -- + 
| id | select_type | 桌子| 隔板| 键入   | 可能的钥匙| 关键     | key_len | 参考       || 过滤| 额外       | 
+ - - + - - - - - - - + - - - - + - - - - - - + -- - - + - - - - - - - - + - - - - - + - - - - - + - - - - - - - + - - - + - - - - - + - - - - - - - + 
|   1  | SIMPLE       | t      |NULL        | 全部    | 主要       | NULL     | NULL     | NULL       |   100  |     10.00  | 使用Where | 
|   1  | SIMPLE       | t1     | NULL        | eq_ref | 主要       | 主要|  4        | 测试。Ť 。id |     1  |     10.00  | 使用Where | 
+ - -+ - - - - - - - + - - - - + - - - - - - + - - - - + - - - - - - - - - + - - - - - + - - - - - + - - - - - - + - - - +- - - - - + - - - - - - - + 
2行中 集合, 1个 警告 (0.00秒)

测试2:表test记录数1000w左右,表sbtest1记录数100w

再次执行SQL,查看执行计划,走的也是NLJ,相对小表sbtest1作为驱动表,大表测试作为被驱动表,也是正确的执行计划

代码语言:javascript
运行
AI代码解释
复制
mysql >从测试中选择count (* ) ;+ - - - - - + | 数(*| + - - - - - + | 10000100 | + - - - - - + 1行中集合(0.33秒)

  

  

  

mysql >从sbtest1选择计数(*; + - - - - - + | 数(*| + - - - - - + | 1000000 | + - - - - - + 1行中集合(0.02秒)

  

   

  

mysql >从table_name = 'test'的表中选择table_schema , table_name , table_rows ; + - - - - - - - + - - - - - - + - - - - - - + | TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | + - - - - - - - +


- - - - - - + - - - - - - + 
| 测试         | 测试       |         100  | 
+ - - - - - - - + - - - - - - + - - - - - - + 
1行中 集合 (0.00秒)

mysql >从table_name = 'sbtest1'的表中选择table_schema , table_name , table_rows ; + - - - - - - - + - - - - - - + - - - - - - + | TABLE_SCHEMA | TABLE_NAME | TABLE_ROWS | + - - - - - - - +


- - - - - - + - - - - - - + 
| 测试         | sbtest1     |      947468  | 
+ - - - - - - - + - - - - - - + - - - - - - + 
1行中 集合 (0.01秒)

mysql >选择t 。* 来自于t的测试t内部联接sbtest1 t1 。id = t1 。id在哪里t 。c = '08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977'和t1 。c = '08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977' ; 
+ - - + - - - - + - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 
| id | k       | c                                                                                                                        || 
+ - - + -- - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -- - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + 
|   1  |  501885  |  08566691963 - 88624912351 - 16662227201 - 46648573979 -64646226163 - 77505759394 - 75470094713 - 41097360717 - 15161106334 - 50535565977  |  63188288836 - 92351140030 - 06390587585 - 66802097351 - 49282961843  | 
+ - - + - - - - + - - - - - - - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - -- - - - - - - - - - - - - - - - + 
1行中 集合 (0.37秒)

mysql >说明选择t 。* 来自于t的测试t内部联接sbtest1 t1 。id = t1 。id在哪里t 。c = '08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977'和t1 。c = '08566691963-88624912351-16662227201-46648573979-64646226163-77505759394-75470094713-41097360717-15161106334-50535565977' ; 
+ - - + - - - - - - - + - - -- + - - - - - - + - - - - + - - - - - - - - + - - - - - + - - - - - + - - - - - - + - - - - + - - - - - + - - - - - -- - + 
| id | select_type | 桌子| 隔板| 键入   | 可能的钥匙| 关键     | key_len | 参考        || 过滤| 额外       | 
+ - - + - - - - - - - + - - - - + - - - - - - +- - - - + - - - - - - - - + - - - - - + - - - - - + - - - - - - - + - - - - + - - - - - + - - - - - - - + 
|   1  | SIMPLE       |t1     | NULL        | 全部    | 主要       | NULL     | NULL     | NULL        |  947468  |     10.00  | 使用Where | 
|   1  | SIMPLE       | t      | NULL        | eq_ref | 主要       | 主要|  4        | 测试。T1 。id |       1  |     10.00  | 使用Where |
+ - - + - - - - - - - + - - - - + - - - - - - + - - - - + - - - - - - - - + - - - - - + - - - - - + - - - - - - + - ---  -  -  +  -  -  -  -  -  +  -  -  -  -  -  -  -  +  
2行中集合,1个警告(0.01秒)

为什么优化器没有选择错误的执行计划呢?之前文章也提过,MySQL 8.0是将元数据信息存放在MySQL库下的数据字典表里,information_schema库只是提供相对方便的视图供用户查询,所以优化器在选择执行计划时,会从数据字典表中获取统计信息,生成正确的执行计划。

总结

MySQL 8.0为了提高information_schema的查询效率,将视图和表的内部信息统计缓存起来,缓存时间由参数information_schema_stats_expiry决定(建议设置该参数为0);这可能会导致用户查询上方视图时,无法获取最新,准确的统计信息,但并不会影响执行计划的选择。

用户3777315

修改于 2021-09-02 02:16:53

6

用户8527335

修改于 2021-09-01 09:37:20

实际上是MySQL 8.0为了提高information_schema的查询效率,将表和统计信息放入内部的统计信息缓存起来,缓存时间由参数information_schema_stats_expiry决定,至少为86400s;如果想获取最新的统计信息,可以通过如下两种方式:

(1)分析表进行表分析

(2)设置information_schema_stats_expiry = 0

和开发者交流更多问题细节吧,去 写回答
相关文章
MySQL案例:8.0统计信息不准确?
不管是Oracle还是MySQL,新版本推出的新特性,一方面给产品带来功能、性能、用户体验等方面的提升,另一方面也可能会带来一些问题,如代码bug、客户使用方法不正确引发问题等等。
brightdeng@DBA
2020/08/21
2.6K0
MySQL案例:8.0统计信息不准确?
MySQL 8.0 中统计信息直方图的尝试
直方图是表上某个字段在按照一定百分比和规律采样后的数据分布的一种描述,最重要的作用之一就是根据查询条件,预估符合条件的数据量,为sql执行计划的生成提供重要的依据
星哥玩云
2022/08/17
7630
MySQL 8.0 中统计信息直方图的尝试
新特性解读 | MySQL 8.0 字段信息统计机制
网名“北在南方”,资深 DBA,主要负责数据库架构设计和运维平台开发工作,擅长数据库性能调优、故障诊断。
爱可生开源社区
2023/08/18
5910
新特性解读 | MySQL 8.0 字段信息统计机制
MySQL统计信息简介
MySQL执行SQL会经过SQL解析和查询优化的过程,解析器将SQL分解成数据结构并传递到后续步骤,查询优化器发现执行SQL查询的最佳方案、生成执行计划。查询优化器决定SQL如何执行,依赖于数据库的统计信息,下面我们介绍MySQL 5.7中innodb统计信息的相关内容。
阿炳数记
2019/04/24
2.8K0
MySQL统计信息简介
MySQL 统计信息简介
MySQL执行SQL会经过SQL解析和查询优化的过程,解析器将SQL分解成数据结构并传递到后续步骤,查询优化器发现执行SQL查询的最佳方案、生成执行计划。查询优化器决定SQL如何执行,依赖于数据库的统计信息,下面我们介绍MySQL 5.7中innodb统计信息的相关内容。
阿炳数记
2019/02/27
2.4K0
MySQL 统计信息简介
MySQL 8.0 新特性之统计直方图
原文链接:https://mysqlserverteam.com/histogram-statistics-in-mysql/
沃趣科技
2018/07/02
2.2K0
MySQL 8.0 新特性之统计直方图
python 统计MySQL表信息
需要利用的技术点,有2个。一个是pymysql(连接mysql),一个是xlwt(写入excel)
py3study
2020/01/20
5.2K0
MySQL统计信息更新小结
MySQL优化器的工作之一是选择索引。通过选择索引,找到一个最优的执行方案,以最小的代价去执行语句。而评估代价大小的因素之一,就是扫描行数。因为扫描的行数越少,访问磁盘数据的次数越少,消耗的CPU资源就相应越少。另外,优化器还会结合是否使用临时表、是否排序等因素进行综合判断。
胖五斤
2022/12/25
3K0
MySQL统计信息相关表介绍
以前给大家介绍过MySQL中的统计信息,相信大家也都了解了。那么统计信息是存放在哪里呢?我们怎么去查看? 在MySQL中提供了两个表记录统计信息的相关内容,分别是 innodb_table_stats
沃趣科技
2018/03/26
2.3K0
MySQL统计信息相关表介绍
MySQL字段信息统计机制场景
同事咨询个问题:某个业务基于 INFORMATION_SCHEMA 统计表的信息(比如最大值)向表里面插入数据。
bisal
2023/08/09
4790
MySQL 8.0安装后Navicat连接不上的问题
Navicat连接MySQL 8.0.1版本出现1251--Client does not support authentication protocol requested by server的解决
星哥玩云
2022/08/18
4.6K0
Cardinality统计取值不准确导致MYSQL选错索引
Non_unique:如果是唯一索引,则值为 0,如果可以有重复值,则值为 1 Key_name:索引名字 Seq_in_index:索引中的列序号,比如联合索引 idx_a_b_c (a,b,c) ,那么三个字段分别对应 1,2,3 Column_name:字段名 Collation:字段在索引中的排序方式,A 表示升序,NULL 表示未排序 Cardinality:索引中不重复记录数量的预估值,该值等会儿会详细讲解 Sub_part:如果是前缀索引,则会显示索引字符的数量;如果是对整列进行索引,则该字段值为 NULL Null:如果列可能包含空值,则该字段为 YES;如果不包含空值,则该字段值为 ’ ’ Index_type:索引类型,包括 BTREE、FULLTEXT、HASH、RTREE 等
友儿
2022/09/11
9050
MySQL索引统计信息更新相关的参数
  1. innodb_stats_on_metadata(是否自动更新统计信息),MySQL 5.7中默认为关闭状态
星哥玩云
2022/08/17
1.6K0
MySQL索引统计信息更新相关的参数
MYSQL 8 统计信息持久化 与 null
在任何数据库中统计信息是帮助数据库查询中走更适合的查询路径的基础,MYSQL 8 中持久化的统计信息怎么做,怎么能持久化后提高执行计划的稳定性。
AustinDatabases
2020/06/01
8250
MySQL中的统计信息相关参数介绍
统计信息的作用 上周同事在客户现场遇到了由于统计信息的原因,导致应用数据迁移时间过慢,整个迁移差点失败。关键时刻同事发现测试环境与生产环境SQL语句执行计划不一致,立刻收集统计信息才保证迁移得以正常完成。 统计信息对于SQL的执行时间有重要的影响,统计信息的不准确会导致SQL的执行计划不准确,从而致使SQL执行时间变慢,Oracle DBA非常了解统计信息的收集规则,同样在MySQL中也有相关的参数去控制统计信息。 相关参数 innodb_stats_auto_recalc 控制innodb是否自动收集统
沃趣科技
2018/03/26
1.6K0
MySQL中的统计信息相关参数介绍
Mysql8.0+ 操作数据库用户信息
查看用户信息 USE mysql; SELECT `user`,`host`,`authentication_string` FROM user; #user 用户名 #host 权限,及可通过此账号访问数据库的ip地址 #authentication_string 加密后的密码 创建用户 CREATE USER 'username'@'host' IDENTIFIED BY 'password'; #若host为 % 则表示所有ip可访问 添加权限 GRANT ALL ON databaseName.ta
全栈开发日记
2022/05/12
1.1K0
mysql统计账单信息(下):数据导入及查询
上一篇mysql统计账单信息(上):mysql安装及客户端DBeaver连接使用介绍了mysql5.7的安装及客户端DBeaver的连接配置,本文接上一篇内容,介绍数据导入和查询导出。
loong576
2022/09/01
2.5K0
mysql统计账单信息(下):数据导入及查询
翻译|MySQL统计信息不准导致的性能问题
一个客户的性能优化案例: 没有修改数据库实例的任何配置参数以及业务代码没有变更的情况下,一条 sql 出现大幅性能下降。
用户1278550
2022/05/17
1.3K0
mysql: 8.0参数优化
MySQL 8.0在内存管理和性能优化方面做了很多改进,而innodb_buffer_pool_size参数仍然是一个关键的参数,它可以显著影响数据库的性能。然而,除了innodb_buffer_pool_size之外,还有其他一些参数也可以用来优化MySQL的性能和内存使用。这里有一些参数和优化措施的例子:
运维开发王义杰
2023/10/23
1.2K0
mysql: 8.0参数优化
Presto统计信息
Presto支持基于统计的查询优化。为了使查询能够利用这些优化,Presto必须具有该查询中表的统计信息。
sparkle123
2020/10/26
2.7K0
Presto统计信息

相似问题

xtrabackup8.0+mysql8.0增量备份目录?

054

移动统计中开放的API统计应用基本指标的实时数据数据不准确?

1320

2020-01-26:mysql8.0做了什么改进?

0143

MySQL8.0 数据库产品什么时候上线?

0452

腾讯云Mysql什么时候提供8.0版本的?

2632
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
相关问答用户
新浪微博 | 高级总监擅长4个领域
到家集团 | 技术VP擅长5个领域
擅长5个领域
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档