您最近我在两个不同的ubuntu服务器上进行了测试。
Here are the results:
innodb_flush_trx_commit = 1
Staging Server: 10,000 Inserts ----> 81 seconds
innodb_flush_trx_commit = 2
Staging Server: 10,000 Inserts ----> 61 seconds
Dev Server:
innodb_flush_trx_commit = 1
10,000 Inserts ----> 5 seconds
Dev Server:
innodb_flush_trx_commit = 2
10,000 Inserts ----> 2 seconds
I am clear that performance vary with innodb_flush setting.
But why there is a huge diff in performance from the server to server ?
这里有什么需要考虑的事情......? 以下是所考虑的一些细节,但没有重要意义:
staging server: Intel(R) Xeon(R) CPU X5355 @2.66GHz
processor 0, 1
mysql 5.1.61
innodb_buffer_pool : 8MB
RAM: 4GB
dev server: AMD Opteron(tm) Processor 4130 @2.60ghZ
processor 0, 1
mysql 5.0.67
innodb_buffer_pool : 8MB
RAM: 4GB
请帮助理解导致不同服务器上的性能差异的确切因素是什么......?
NOTE: same script used in the same way on noth the servers and not from remote
sesrvers.
提前致谢。 问候, UDAY
答案 0 :(得分:2)
我要经历的一些问题......
二进制日志记录是通过一个实例而不是另一个实例打开的吗?
登台服务器是否使用联网驱动器来访问mysql数据?
两个服务器(ext3,ext2等)上的文件系统类型是否相同?
磁盘活动似乎是罪魁祸首。
答案 1 :(得分:1)
您是否将服务器升级为生产服务器?在这种情况下,它可能是一个并发问题。如果许多用户正在使用该服务器,则插入可能会更慢,尤其是当您插入的表也被其他人使用时。 开发服务器的负载可能要少得多,只有少数开发人员同时使用它。
答案 2 :(得分:1)
保持硬件差异(这不是一个容易的假设)。影响查询性能的因素是:
答案 3 :(得分:1)
我还建议检查磁盘利用率。要了解运行测试时磁盘利用率的执行情况,可以使用iostat
(在基于redhat的系统上,它位于包systat
中)
例如,您可以尝试以下方法:
iostat -xd 1
这将导致输出与此类似:
Device: rrqm/s wrqm/s r/s w/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 0.31 0.00 0.05 0.16 2.89 56.67 0.00 2.99 0.62 0.00
在这里比较两台机器上的await
时间。此度量标准显示磁盘为I / O请求提供服务所需的平均时间(以毫秒为单位)。它可以快速检查是否存在很大差异。同样有趣的是%util
指标。这个给出了在向设备发出I / O操作时花费的CPU时间百分比,随着此值越高,越接近设备的完全饱和度。
对于其他选项,请检查man iostat
。
当然,上述内容仅为您提供了磁盘性能的基本概述。因此,请记住这一点作为对前面提到的操作的附加操作,以便追踪您的问题。