【问题标题】:Mysql phpMyadmin Timeout QuestionMysql phpMyadmin 超时问题
【发布时间】:2011-03-31 11:31:04
【问题描述】:

我在 Mysql 中有一个非常大的数据库。我需要以这种方式维护它。例如它在 Innodb 中的大约 300,000 条记录。

我将记录解析到数据库中,但现在我需要通过将一些字段类型(例如 long int 转换为 tinyint 等)来优化它。当我通过 phpMyadmin 运行此操作时,6 分钟后连接停止并且出现连接超时错误?。

既然 php 向 mysql 发送了请求,那么 mysql 不应该只是在做它的事情,直到它完成吗?所以即使php页面超时它仍然会完成吗?或者当连接超时时,Mysql 是否会放弃请求?

我需要通过 php 在数据库上运行过滤器,并且我希望能够每 30 秒更新一次页面,并在继续搜索时使用它发现的新结果,但如果用户导航离开,我仍然希望完成搜索,因为它为该用户创建了一个表。因此,如果他们运行查询并在返回时关闭浏览器,它会继续搜索吗?

以前从未使用过像这样的大型数据库,如果用户运行文本搜索,我知道这将需要很长时间。任何见解/提示或指导将不胜感激。

谢谢

【问题讨论】:

  • @user685590 +1 提问。您使用的是什么 phpMyAdmin 版本?
  • 你的 MySQL 服务器的 InnoDB 选项是什么?比如缓冲池大小?

标签: mysql timeout phpmyadmin innodb


【解决方案1】:

一般也可以在服务器本身使用mysql客户端。对于导入的大型数据库,它往往是我的最爱。

mysql -u user -p -h localhost dbname < import.sql

或者在您的情况下进入命令提示符(与 phpmyadmin 中的 SQL 窗口相同:

mysql -u user -p -h localhost dbname

【讨论】:

  • 感谢您的建议。也许需要提到您需要 import.sql 可访问并加载到您的服务器。
【解决方案2】:

In InnoDB, all user activity occurs inside a transaction.所以,如果查询没有进入最后,事务就不会被提交,它会被留下。

尽管如此,在 PHP 中,即使用户正在停止网页,您也可以告诉脚本继续。它是通过函数ignore_user_abort() 完成的。

但我认为 phpMyAdmin 没有提供 ignore_user_abort 功能。

另一种解决方案是使用异步 MySQL 查询,但我认为 PHP 还不可能。 Maybe here,但不在 phpMyAdmin 中。

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 2010-12-02
    • 2013-05-18
    • 2012-06-12
    • 1970-01-01
    • 2014-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多