-1

我有一个巨大的 mysql 数据库,大约 5Gb。我正在为这些数据库表使用 InnoDB。我注意到 PHPMyadmin(MySql 在 1Gb VPS 上运行)变得相当慢,有时甚至没有响应。

由于我根本不使用数据(目前),我将表从该数据库(我们称之为数据库A)移动到另一个B(我每天在A中创建新表)

现在数据库 A 只有 300Mb 的数据。但是,PHPMyadmin 仍然很慢,有时甚至没有响应。

即使我没有使用它,这是由数据库B引起的吗?

编辑:根据“top”,MySql 消耗了大约 20% 的服务器内存。但是,使用“free”命令检查,分配了 95% 的服务器内存。没有其他明显的程序会消耗内存。

4

1 回答 1

1

这取决于您的服务器设置 (my.cnf)。如果您将 mySQL 配置为通过基于进程的缓冲区(myISAM 的 key_block_size 或 INNODB 的 innodb_buffer_pool)消耗 20% 的内存,那么 mysql 将不会增长,除非查询使用基于线程的缓冲区并且配置为很大。

如果分配了 95% 的系统内存,它分配到哪里?文件系统缓存中的内存吗?另一个过程?

另请注意,当您移动数据库、删除表等时,mySQL 的基于用户的内存在大多数情况下都会被刷新,并且缓冲区需要在 mysql 中重新填充,因此您正在执行的操作会更多地访问磁盘。

另一件事。如果 PHPmyadmin 在新数据库内存上运行缓慢。您的应用程序可能会因为另一个数据库而更难地访问 mysql,这会迫使 PHPMyadmin 的所有新查询访问磁盘以获取新数据库的表。

所有这些逻辑都由 my.cnf 更改控制。

于 2013-03-26T00:09:43.493 回答