Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP导致高SQL负载_Php_Mysql_Load_Flush - Fatal编程技术网

PHP导致高SQL负载

PHP导致高SQL负载,php,mysql,load,flush,Php,Mysql,Load,Flush,我需要将70000个条目从csv导入SQL数据库。不幸的是,这会导致服务器负载过高,并最终导致服务器崩溃。我读过这篇关于大规模SQL导入的文章,其中提到需要刷新“最简单的方法是创建一个简单的方法来定期清除这些集合。” 然后,它会非常快地运行脚本,尽管它是用另一种语言编写的,但是否有PHP替代方案?用于冲洗或垃圾收集。在一个循环中导入70000个条目的最佳方式是什么 文章还提到使用MySQL索引来减少负载,我如何在PHP中实现这一点 谢谢 另外,您认为它是SQL还是CSV阅读器?您可以尝试下一步:

我需要将70000个条目从csv导入SQL数据库。不幸的是,这会导致服务器负载过高,并最终导致服务器崩溃。我读过这篇关于大规模SQL导入的文章,其中提到需要刷新“最简单的方法是创建一个简单的方法来定期清除这些集合。”

然后,它会非常快地运行脚本,尽管它是用另一种语言编写的,但是否有PHP替代方案?用于冲洗或垃圾收集。在一个循环中导入70000个条目的最佳方式是什么

文章还提到使用MySQL索引来减少负载,我如何在PHP中实现这一点

谢谢

另外,您认为它是SQL还是CSV阅读器?

您可以尝试下一步:

执行表阴影复制。(如果是活动表,这样可以避免站点挂起,否则可以跳过此步骤)

现在您已经有了源表的精确副本,您可以使用它来做您不必担心导入时“站点关闭”的后果的事情

在新创建的表上禁用索引

ALTER TABLE __shadow_table DISABLE KEYS;
现在您可以导入到表(
\uuu shadow\u table

尝试
加载数据本地填充
(需要
文件
权限)

如果您没有
文件权限,请使用批量插入

INSERT INTO __shadow_table (col1, col2, col3, col4) VALUES (1,2,3,4), (6,7,8,9), (20,30,40,60);
在表(阴影表)上启用索引

删除原始表格

DROP TABLE IF EXISTS table
将阴影表重命名为原始(
DROP
ped)名称

导入时禁用索引允许在插入数据时减少加载和HDD搜索。此外,如果表是
InnoDB
,则应禁用
外键检查。

导入过程中禁用的所有内容应在导入结束时启用。

导入的记录类型是什么?7万不算多。你检查过了吗?我正在从csv文档导入条目,因此它抓住了输入到给定表中的行。70000不是一个批次。事实上,您可以将1个csv拆分为多个csv文件,然后上载它们。我在读取数据之后和导入之前修改数据csv文件的大小是多少?进口需要多少时间?不客气!我们已经在我们的生活环境中开发并使用了类似的技术,并且工作非常顺利。巨大的数据量+无服务中断。这就是你得到的。
ALTER TABLE __shadow_table ENABLE KEYS;
DROP TABLE IF EXISTS table
RENAME TABLE __shadow_table TO table;