正如标题所说,我在这里非常困惑,为什么第一个(Linode)服务器会在使用十几个mysql函数的php脚本中以40-50毫秒的速度击败相当知名的liquid-web专用服务器(平均10毫秒完成,而专用服务器为50-60毫秒)。
我做了一个循环测试来测量这一点。
Linode vps 拥有 512MB 内存,而专用内存只有 4GB,但我想这在这里应该无关紧要。
另外,我的 linode 上的 vps 在测试期间平均每秒加载 10-20 个请求。
所有这些都让我非常担心,甚至将我的网站转移到这里,因为这需要快速的 mysql 操作/任务。
有什么想法或建议吗?
编辑:又做了一次测试,一个简单的插入平均需要 30 毫秒!我完全糊涂了。
测试
<?php
$started_at = millitime();
$user = "x";
$password = "x";
$database = "x";
mysql_connect('localhost', $user, $password) or die("Unable to conn");
mysql_select_db($database) or die("Unable to select database");
$result = mysql_query("INSERT INTO x VALUES ('','1', '1', '1')");
$ended = millitime();
$waited = $ended - $started_at;
echo "\n\n - >>> SCRIPT ENDED IN > " . $waited . "\n";
function millitime()
{
$microtime = microtime();
$comps = explode(' ', $microtime);
// Note: Using a string here to prevent loss of precision
// in case of "overflow" (PHP converts it to a double)
return sprintf('%d%03d', $comps[1], $comps[0] * 1000) . "\n";
}
?>
答案1
Linode vps 拥有 512MB 内存,而专用内存只有 4GB,但我想这在这里应该无关紧要。
数据库通常受 I 约束,记忆有帮助。
有什么想法或建议吗?
除非您受到 CPU 限制,否则不要担心 CPU。弄清楚缓存使用情况(内存)和 IOPS。大多数情况下,数据库的存亡取决于 IO 性能,CPU 很少受到关注。
答案2
又做了一次测试,一个简单的插入平均需要 30 毫秒!我完全困惑了。
这似乎是正确的。您需要至少旋转两次才能执行数据库更新。假设您的磁盘以 5400 RPM 的速度旋转。这样得出:(60*1000*2)/5400 = 最少 22ms。
当然,在插入过程中系统还可以做很多其他事情。你只需要等待 I/O 完成即可。