首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Information_Schema.Tables在MySQL 5.5和MySQL 5.7中报告的结果不同

问Information_Schema.Tables在MySQL 5.5和MySQL 5.7中报告的结果不同
EN

Database Administration用户
提问于 2018-10-04 10:12:08
回答 1查看 360关注 0票数 1

我已经开始测试一些MySQL 5.7数据库,以取代我们老化的5.5数据库,information_schema.tables表记录数据大小的方式似乎发生了重大变化。

我运行以下查询:

代码语言:javascript
复制
SELECT  
    table_schema AS table_schema,   
    table_name AS table_name,   
    (data_length + index_length + data_free) AS table_size, 
    ROUND((data_length + index_length + data_free)/POWER(1024,3),2) AS table_sizeGB,    
    t.data_length,  
    t.index_length, 
    t.data_free
FROM information_schema.TABLES t
WHERE table_schema = 'myDb' 
ORDER BY table_size DESC, table_name
LIMIT 10;

这给了我10张最大的桌子。我每天都这样做是为了记录一段时间的增长。在MySQL 5.5上它需要5秒,在MySQL 5.7上它是即时的。

在MySQL 5.5上,对于最大的表,我得到以下结果:

代码语言:javascript
复制
myDb | myTable | 319383535616 | 297.45 | 319116279808 | 262012928 | 5242880

在MySQL 5.7上,我得到:

代码语言:javascript
复制
myDB | myTable | 270051115008 | 251.50 | 269824819200 | 226295808 | 0

两个数据库都是隔几天创建的。5.7数据库是5.5数据库的奴隶。它们都还没有活动(只是作为主动系统的奴隶)。

如果我查看服务器,5.5数据库上的表.ibd文件是302 on,5.7数据库上是292 on。

我期望一个小的差异(一个是使用羚羊,on是梭鱼文件格式-两者都是无害的)。数据不断地被添加到数据库中,很少(如果有的话)被删除。

在MySQL 5.5数据库中,我可以看到每次运行查询时,数字都会增加,甚至间隔几秒钟。但在MySQL 5.7上,自从我一周前开始看它以来,数据并没有变化。

这行为正确吗?在MySQL 5.7中是否有更好的方法来监控这一点,我已经错过了?

-2018年-10-16

三周后,在MySQL 5.7上查询的结果实际上仍然相同:

代码语言:javascript
复制
5.5 -- myDb | myTable | 327890632704 | 305.37 | 327616036864 | 268304384 |6291456
5.7 -- myDb | myTable | 270055309312 | 251.51 | 269824819200 | 226295808 | 4194304

服务器上的物理大小在MySQL 5.5上是310 on,在MySQL 5.7上是300 on。

两个表都是相同创建的。

两个数据库都还没有激活,所以唯一运行的查询(除了我的测试)是来自复制。

这两个数据库都使用innodb_file_per_table。

MySQL 5.5是使用mysqldump从活动从中复制的。

5.7数据库是使用mysqldump + mysql_upgrade从mysql_upgrade 5.5数据库中复制的。

优化表从未在这些表上运行过。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2018-10-15 21:27:48

简短的回答:数字很接近,别担心。

较长的答覆:

有很多解释。

  • 嗯,我猜梭鱼比羚羊小15%。(这可能是造成这种差异的主要原因。尽管如此,许多其他的事情都会引起分歧。)
  • 他们是一个不同的ROW_FORMAT。
  • SELECTs可能导致锁定,从而导致插入/更新/删除的额外碎片。
  • innodb_file_per_table是一样的吗?
  • 奴隶的数据是如何从主人那里克隆出来的?
  • 你在任何一台机器上做过OPTIMIZE TABLE吗?(几乎没有任何理由这样做。)
  • 5.7在5.5上有很多代码更改,但我想不出任何其他可能直接出现在这些数字中的问题。
  • 不太可能存在任何数据差异。Percona有一个工具可以检查。
  • 有没有“更好的监控方法?”--监控什么?

另外,

  • 当InnoDB块因更新/删除而缩小时,会尝试将该块与相邻块合并。可能5.7比5.5做得更好,因此,随着时间的推移,表的增长速度可能会放慢。(这似乎是索引BTrees中的一个问题。)
  • "Data_free“只包含可重用空间的一小部分。它不应该太受信任。
票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/219263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档