我在Mysql中有一个非常大的数据库。我需要以这种方式来维护它。例如,Innodb中大约有300,000条记录。
我将记录解析到数据库中,但现在我需要通过将一些字段类型(例如,long int转换为tinyint等)来优化它。当我通过phpMyadmin运行此命令时,连接在6分钟后停止,并收到连接超时错误?
既然php将请求发送给了mysql,那么mysql不应该不管怎样都在做它的事情,直到它完成吗?那么,即使php页面超时,它仍然可以完成吗?或者当连接超时时,Mysql会放弃请求吗?
我需要通过php在数据库上运行一个过滤器,我希望能够每隔30秒用它在继续搜索时找到的新结果更新页面,但如果用户离开,我仍然希望完成搜索,因为它为该用户创建了一个表。那么,如果他们运行一个查询,并在返回时关闭浏览器,它会继续搜索吗?
以前从来没有使用过像这样的大型数据库,如果用户运行文本搜索,我知道这将需要很长时间。任何见解,/tips或指导将不胜感激。
谢谢
发布于 2011-08-03 15:23:59
通常,您也可以在服务器本身上使用mysql客户端。对于导入的大型数据库,它往往是我的最爱。
mysql -u user -p -h localhost dbname < import.sql或者在您的情况下进入命令提示符(与phpmyadmin中的SQL窗口相同:
mysql -u user -p -h localhost dbname发布于 2011-03-31 21:05:48
因此,如果查询没有进入末尾,事务将不会被提交,它将被留下。In InnoDB, all user activity occurs inside a transaction.。
然而,在PHP中,即使用户正在停止web页面,您也可以告诉脚本继续执行。这是通过函数ignore_user_abort()完成的。
但我认为phpMyAdmin并没有提供ignore_user_abort特性。
另一种解决方案是使用异步MySQL查询,但我认为这在PHP语言中是不可能的。Maybe here,但也不是在phpMyAdmin中。
https://stackoverflow.com/questions/5499116
复制相似问题