提高 mysql 速度?
Improve mysql Speed?
我的 linux 机器上有 mysql/php 脚本 运行。它基本上是将文件内容迁移到 MySql table。大约有 4400,000 个文件,帐户文件每个文件的内容都放在 table 一行中。已经 14 个小时了,到目前为止它只完成了 300,000 个帐户。
起初速度非常快,每秒处理大约 1000 个文件,现在速度减慢到每秒 50 个文件,mysql 进程消耗了 95% 的服务器 CPU。
虽然这台机器有多个核心,但我在想是否可以将一个以上的核心分配给 mysql 进程,该进程消耗了 CPU 的 95%。
或者有没有其他方法可以使这个过程更快?
谢谢。
这是脚本
https://paste.ee/p/LZwlH#GHxpgqiUUPsVQFchdKVny2DEJQxaXH9V
不要使用mysql_*
API。切换到 mysqli_*
或 PDO
.
请提供这些:
SHOW CREATE TABLE
SHOW VARIABLES LIKE '%buffer%';
select * from players where p_name='
——不需要select*
,只需SELECT 1
。你有 p_name
的索引吗?这很重要。
闻起来像索引更新,但不能确定。
加速插入的一种方法是 'batch' 它们——一次 100 行通常 运行 是一次 1 行的 10 倍。
更好的方法可能是使用 LOAD DATA
。您可能需要加载到一个临时文件 table,然后在执行 INSERT .. SELECT ..
之前修改一些东西以将数据放入真实的 table.
暂时从程序中删除 INSERT
。看看它有多快 运行s。 (你还没有'proven'认为INSERT
是反派。)
我的 linux 机器上有 mysql/php 脚本 运行。它基本上是将文件内容迁移到 MySql table。大约有 4400,000 个文件,帐户文件每个文件的内容都放在 table 一行中。已经 14 个小时了,到目前为止它只完成了 300,000 个帐户。
起初速度非常快,每秒处理大约 1000 个文件,现在速度减慢到每秒 50 个文件,mysql 进程消耗了 95% 的服务器 CPU。
虽然这台机器有多个核心,但我在想是否可以将一个以上的核心分配给 mysql 进程,该进程消耗了 CPU 的 95%。
或者有没有其他方法可以使这个过程更快?
谢谢。
这是脚本 https://paste.ee/p/LZwlH#GHxpgqiUUPsVQFchdKVny2DEJQxaXH9V
不要使用mysql_*
API。切换到 mysqli_*
或 PDO
.
请提供这些:
SHOW CREATE TABLE
SHOW VARIABLES LIKE '%buffer%';
select * from players where p_name='
——不需要select*
,只需SELECT 1
。你有 p_name
的索引吗?这很重要。
闻起来像索引更新,但不能确定。
加速插入的一种方法是 'batch' 它们——一次 100 行通常 运行 是一次 1 行的 10 倍。
更好的方法可能是使用 LOAD DATA
。您可能需要加载到一个临时文件 table,然后在执行 INSERT .. SELECT ..
之前修改一些东西以将数据放入真实的 table.
暂时从程序中删除 INSERT
。看看它有多快 运行s。 (你还没有'proven'认为INSERT
是反派。)