Mysql 为什么插入性能会有这种差异。。。?
嗨,最近我在两个不同的ubuntu服务器上进行了测试Mysql 为什么插入性能会有这种差异。。。?,mysql,performance,insert,Mysql,Performance,Insert,嗨,最近我在两个不同的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 Serve
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 ?
<> P>这里有什么要考虑的事情?
以下是考虑过的一些细节,但没有什么值得怀疑的:
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您的临时服务器是生产服务器吗?在这种情况下,可能是并发问题。如果有许多用户在该服务器上工作,则插入速度可能较慢,尤其是当您插入的表也被其他人使用时。
dev服务器的负载可能要小得多,只有少数开发人员同时使用它。将硬件差异放在一边(这不是一个简单的假设)。影响查询性能的因素有:
有些问题我会问 是否对一个实例而不是另一个实例启用二进制日志记录 暂存服务器是否使用网络驱动器访问mysql数据 两台服务器(ext3、ext2等)上的文件系统类型是否相同
磁盘活动似乎是罪魁祸首。我还建议检查磁盘利用率。要了解运行测试时磁盘利用率的表现,您可以使用
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
在此比较两台机器上的等待时间。此指标显示磁盘服务I/O请求所需的平均时间(以毫秒为单位)。这是一种快速检查是否存在重大差异的方法。同样有趣的还有%util
度量。这个值给出了向设备发出I/O操作时所花费的cpu时间百分比,该值越高,越接近设备的完全饱和
有关其他选项,请选中man iostat
当然,上述内容只提供了磁盘性能的基本概述。因此,记住这一点,作为前面提到的一个操作的附加操作,以便跟踪您的问题 所以你想知道为什么一台计算机比另一台计算机更快地将数据保存到其硬盘驱动器,而不告诉我们在其中任何一台计算机上使用的HDD子系统是什么。。。。不是那样的。我只是不确定什么是要考虑的事情来找出这个行为。你可以告诉我如何检查了解有关HDD子系统的详细信息请……如果我错了请更正我,但你不应该有关于服务器硬件的信息在你购买之前?code>sudo hdparm-I/dev/sda应该会为您提供足够的关于hdd子系统的信息。NB,这似乎是服务器上启用二进制日志记录的问题。说实话,我们有,但我无法接近。这可能会发生对吧…?是的。。。。并发性很重要。但在这里,两台服务器都处于空闲状态,没有什么值得怀疑的。无论如何,谢谢你的回复,Golez…我提供的版本。它只是一个简单的插入到一个空表中。网络延迟并不重要,因为插入是从同一服务器到同一服务器的。内存分配是相同的。我不确定关于第五点的问题。。。感谢你提高了这些分数。做基准点的理想方法是使用相同的环境和生态系统。否则做就不太理想了。在现实世界中,我们仍然这样做,以确定统计数据是否可以接受。在像您这样的场景中,找出确切的差异并非易事。嗨,questzen。。已在临时服务器上启用二进制日志记录。我想这就是为什么如此巨大的性能降低的原因。无论如何,我将在启用二进制日志记录的情况下对此进行测试。感谢您的时间和feed。这两个[ext3]的文件系统是相同的。你说得对,大卫。。。。你是对的。。。。在登台时启用二进制日志记录。大卫,你的意见很好。我很高兴。。。。太多了,大卫。。。。这是唯一的原因吗。启用二进制日志将对性能产生如此巨大的影响。。。?我真的很奇怪。无论如何,我会测试这个。我怎样才能在运行中停止二进制日志记录。。。?是否有任何方法可以在不停止服务器的情况下执行此操作..>?停止二进制日志记录的唯一方法是编辑my.cnf文件,然后重新启动mysql。