我的linux机器上运行了mysql / php脚本。它基本上将文件内容迁移到MySql表。大约有4400,000个文件,每个文件的内容的帐户文件都放在一行的表中。已经过了14个小时,到目前为止它只完成了300,000个账户。
起初它速度非常快,每秒大约需要1000个文件,现在速度减慢到每秒50个文件,而mysql进程占用了95%的服务器CPU。
虽然这台机器有多个核心,但我在考虑是否有可能为mysql进程分配多个核心,而这个进程占用了95%的CPU。
或者还有其他方法可以让这个过程更快吗?
谢谢。
这是脚本 https://paste.ee/p/LZwlH#GHxpgqiUUPsVQFchdKVny2DEJQxaXH9V
答案 0 :(得分:0)
不使用mysql_*
API。切换到mysqli_*
或PDO
。
请提供以下信息:
SHOW CREATE TABLE
SHOW VARIABLES LIKE '%buffer%';
select * from players where p_name='
- 无需选择*
,只需SELECT 1
。你有p_name
的索引吗?这非常重要。
它闻起来像索引更新,但不能确定。
加速插入的一种方法是“批量处理” - 一次100行,通常一次运行10次。
更好的方法是使用LOAD DATA
。您可能需要加载到临时表中,然后在执行INSERT .. SELECT ..
之前按摩内容以将数据放入真实表中。
暂时从过程中删除INSERT
。看看它运行的速度有多快。 (你还没有'证明'INSERT
是恶棍。)