相关疑难解决方法(0)

为什么 InnoDB 不存储行数?

每个人都知道,在使用 InnoDB 作为引擎的表中,诸如此类SELECT COUNT(*) FROM mytable的查询非常不准确且非常慢,尤其是当表变大并且在该查询执行时不断插入/删除行时。

据我了解,InnoDB 不会将行数存储在内部变量中,这就是导致此问题的原因。

我的问题是:为什么会这样?存储这样的信息有那么难吗?在许多情况下,这是一个重要的信息。我看到是否要实现这样的内部计数的唯一困难是当涉及事务时:如果事务未提交,您是否计算它插入的行数?

PS:我不是数据库方面的专家,我只是一个将 MySQL 作为一个简单爱好的人。因此,如果我只是问一些愚蠢的问题,请不要过分挑剔:D。

mysql innodb count

21
推荐指数
2
解决办法
8181
查看次数

从 MySQL 8 导出时如何将 mysqldump .sql 文件导入 MySQL 5.7

我不小心安装了 MySQL 8 并在那里做了大量工作,创建了大量数据。然后我使用 mysqldump 备份了所有数据库。

后来,我意识到我需要降级回 MySQL 5.7(甚至没有意识到我已经升级了)。

我已经卸载了 8 并安装了 5.7,但是我在从转储的 .sql 文件中导入我的数据时遇到了问题。

首先,我得到了错误ERROR 1273 (HY000) at line 1753: Unknown collation: 'utf8mb4_0900_ai_ci',我通过使用 Notepad++ 替换解决了这个错误:

  • utf8mb4_0900_ai_ciutf8_unicode_ci
  • utf8mb4utf8
  • utf8_unicode_520_ciutf8_unicode_ci

然后我还删除了 .sql 文件中与'mysql' 数据库相关的部分。

现在命令mysql < alldb.sql运行没有错误,但是当我查看我的数据时,很多数据都丢失了。

PS 我对有人可以帮助我感到乐观,但MySQL 8 文档说有点令人担忧:

不支持从 MySQL 8.0 降级到 MySQL 5.7,或从 MySQL 8.0 版本降级到以前的 MySQL 8.0 版本。唯一受支持的替代方法是恢复升级前的备份。因此,您必须在开始升级过程之前备份数据。

mysql mysqldump mysql-5.7 mysql-8.0

8
推荐指数
1
解决办法
4054
查看次数

标签 统计

mysql ×2

count ×1

innodb ×1

mysql-5.7 ×1

mysql-8.0 ×1

mysqldump ×1