我有一个上传位置,因此用户可以使用上传的文件更新我的数据库的一部分。这些文件通常高达9GB,因此插入150,000,000行可能需要几分钟的时间。使用PHP阻止多个MySQL访问,但未锁定MySQL
点击网站上的按钮更新数据库后,PHP(使用mysqli)基本上进行了mysql锁定。如果我打开其他选项卡,则在大型更新完成之前它们不会得到任何内容。 但是,我知道它实际上并没有锁定数据库/表,因为从CLI我仍然可以“SELECT count(*)FROM table”,它立刻给我一个结果。
什么是最好的插入150,000,000条记录,同时让其他PHP页面访问数据库的方法(只读)?
听起来像阿帕奇工作人员的数量已经超出了,所以它挂在请求,直到有一个免费的工人? – cdhowie 2013-04-08 21:44:56
将它移动到cronjob .. – 2013-04-08 21:49:54
这不是简单的Apache工作。创建另一个只是<?php echo'Test'?>的页面立即打开。它只在访问数据库的页面上遇到问题。 PHP在查询运行时工作正常,MySQL在查询运行时正常运行。这个问题似乎与MySQL + PHP组合有关。根据phpinfo(),mysqli.max_links被设置为无限。我似乎无法弄清楚问题可能是什么。 – 2013-04-09 15:13:38