Mysql 从时间上混淆输出

Mysql 从时间上混淆输出,mysql,ruby,unix,time,Mysql,Ruby,Unix,Time,此命令从MySQL获取一些数据,然后对其进行操作。为什么“实时”时间比“用户”时间高得多 >time ./command.rb real 45m45.457s user 3m36.478s sys 0m28.226s 为了澄清,我理解real、user和sys输出之间的区别。然而,我对为什么会有如此大的差异感到困惑。我运行这个的机器实际上没有其他使用CPU的东西,而且我的命令中没有任何线程。它所做的只是获取数据。一个复杂的MySQL语句会导致这样的差距吗 系统大部分

此命令从MySQL获取一些数据,然后对其进行操作。为什么“实时”时间比“用户”时间高得多

>time ./command.rb

real    45m45.457s
user    3m36.478s
sys     0m28.226s

为了澄清,我理解real、user和sys输出之间的区别。然而,我对为什么会有如此大的差异感到困惑。我运行这个的机器实际上没有其他使用CPU的东西,而且我的命令中没有任何线程。它所做的只是获取数据。一个复杂的MySQL语句会导致这样的差距吗

系统大部分时间都在等待磁盘旋转和磁头寻找


“用户”时间是CPU为您计算数字实际花费的时间。

系统大部分时间都在等待磁盘旋转和磁头查找


“用户”时间是CPU为您计算数字实际花费的时间。

用户和系统报告CPU繁忙的时间量。当在网络或磁盘I/O上被阻塞时,CPU不会忙。请尝试使用“time sleep 1”或“time dd if=/dev/zero of=/dev/null bs=1024 count=1000000”来查看差异。第一个只是块,第二个将包括大量的CPU使用。

用户和系统报告CPU繁忙的时间量。当在网络或磁盘I/O上被阻塞时,CPU不会忙。请尝试使用“time sleep 1”或“time dd if=/dev/zero of=/dev/null bs=1024 count=1000000”来查看差异。第一个只是块,第二个将包括大量的CPU使用。

实际“时间”是指经过的实际挂钟时间,其中“用户”和“系统”时间是指在每类处理中用于作业的CPU时间。由于“实时”时间要高得多,您的作业可能会花费大量时间等待资源或睡眠。

实时是指实际经过的挂钟时间,其中“用户”和“系统”时间是指在每类处理中用于作业的CPU时间。由于“实时”时间要高得多,您的工作可能会花费大量时间等待资源或睡眠。

只是一个猜测,但如果您通过ssh连接查看结果,可能大部分时间都在等待处理器加密发送到远程控制台的数据。

只是一个猜测,但是,如果您正在通过ssh连接查看结果,那么很可能您的大部分时间都在等待处理器对发送到远程控制台的数据进行加密。

那么网络流量可能会部分导致这种情况?如果一个请求需要200毫秒的端到端时间,你知道CPU是什么吗?网络流量根本不是CPU密集型的。如果您使用的是环回接口(例如,与本地主机上的SQL server对话),那么它可能比I/O绑定的CPU占用量大得多,但除此之外,与网络连接相关的CPU使用量可能很小。此外,您只测量脚本的CPU使用率。SQL server将花费一些CPU(和磁盘I/O)时间来尝试响应您的请求,而您在测量中没有看到这一点。因此网络流量可能会导致部分问题?如果一个请求需要200毫秒的端到端时间,你知道CPU是什么吗?网络流量根本不是CPU密集型的。如果您使用的是环回接口(例如,与本地主机上的SQL server对话),那么它可能比I/O绑定的CPU占用量大得多,但除此之外,与网络连接相关的CPU使用量可能很小。此外,您只测量脚本的CPU使用率。SQL server将花费一些CPU(和磁盘I/O)时间来尝试回答您的请求,而您在测量中没有看到这一点。我感谢您的洞察力!我是通过ssh登录到该框的,但是通过本地gnu屏幕运行,这样开销就不会包含在
time
的输出中!我是通过ssh登录到该框的,但是通过本地gnu屏幕运行,这样开销就不会包含在
time
的输出中。