2

嗨,最近我在两个不同的 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

4

4 回答 4

2

有些问题我会经历...

二进制日志记录是否在一个实例而不是另一个实例上打开?

登台服务器是否使用网络驱动器来访问 mysql 数据?

两台服务器(ext3、ext2 等)上的文件系统类型是否相同?

磁盘活动似乎是这里的罪魁祸首。

于 2012-04-04T10:09:23.437 回答
1

您的登台服务器是生产服务器吗?在这种情况下,它可能是一个并发问题。如果许多用户在该服务器上工作,插入可能会更慢,尤其是当您插入的表也被其他人使用时。开发服务器的负载可能要少得多,只有少数开发人员同时使用它。

于 2012-04-04T10:03:26.963 回答
1

将硬件差异放在一边(这不是一个简单的假设)。影响查询性能的因素有:

  1. DBMS 引擎的版本
  2. 使用的查询计划和数据库统计信息
  3. 网络延迟
  4. 分配给 DBMS 引擎的内存(包括事务缓冲区日志)
  5. DBMS 引擎的进程/线程优先级
于 2012-04-04T10:07:05.260 回答
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

当然,上面描述的只是为您提供了有关磁盘性能的非常基本的概述。因此,请记住这一点,作为对前面提到的操作的附加操作,以便追踪您的问题。

于 2012-04-04T10:34:38.120 回答