为什么INSERT性能有所不同?

时间:2012-04-04 09:58:18

标签: 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     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 个答案:

答案 0 :(得分:2)

我要经历的一些问题......

二进制日志记录是通过一个实例而不是另一个实例打开的吗?

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:1)

保持硬件差异(这不是一个容易的假设)。影响查询性能的因素是:

  1. DBMS引擎的版本
  2. 使用的查询计划和数据库统计信息
  3. 网络延迟
  4. 分配给DBMS引擎的内存(包括事务缓冲区日志)
  5. DBMS引擎的进程/线程优先级

答案 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

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