微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在PHP中创建大型MySQL表时,延迟很大

如何解决在PHP中创建大型MySQL表时,延迟很大

|| 我正在尝试使用PHP将2个现有的MysqL MyISAM表合并为一个新表。这是我的PHP代码
$sql = \"CREATE TABLE new_table SELECT * FROM table_1 UNION SELECT * FROM table 2\";
MysqL_query(\"$sql\");
注意:表相当大,有超过3000万个条目。 因此,我在浏览器中打开PHP文件,以便它执行脚本。我使用PHPmyadmin监视数据库,起初绝对没有任何反应。然后大约30分钟后,表格“ new_table \”将显示所有正确的数据。 PHP是否要缓冲或缓存\“ new_table \”直到完成,然后在MysqL中创建它?如果是这样,有什么办法告诉PHP不要吗?恐怕是这种情况,一旦表到达数十亿行,当我尝试复制它时,它将不再适合缓冲区。 有谁知道如何使PHP立即执行查询而没有缓冲和缓存延迟? 我尝试了MysqL_unbuffered_query(\“ $ sql \”);仍然有巨大的延迟。 任何帮助将不胜感激!     

解决方法

        在创建表期间,在另一个MySQL查询中发出“ 1”,您将看到正在发生的事情。     ,        这与数据量-3000万条记录-以及创建表的方式-通过带有
UNION
SELECT
CREATE TABLE
有关。 关键是,这可能是最慢的方法。从命令行运行此查询,前
CREATE TABLE
+批处理
INSERT INTO
应该都更快。 我还建议您考虑更改表的存储引擎。 MyISAM可以随着大量记录而降级,并具有其他性能方面的考虑。您应该考虑其他因素,例如InnoDB,具体取决于您的数据库交互。阅读有关MyISAM与InnoDB的更多信息     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。