在线应用升级后 反倒觉得慢 机器a 之前   mysql5.0.45 内存8g 
机器b 升级后 mysql5.1.49 内存12g但是发现 插入同等的数据明显机器b要比机器a要慢。  分析是配置原因
检查发现 机器b show innodb status    (该应用全部是innodb)
----------------------
BUFFER POOL AND MEMORY
----------------------
Total memory allocated 2348834730; in additional pool allocated 1048576
Dictionary memory allocated 1630208
Buffer pool size   128000
Free buffers       1
Database pages     114913
Modified db pages  44
Pending reads 0
Pending writes: LRU 0, flush list 0, single page 0
Pages read 5363074, created 1114825, written 85280143
0.00 reads/s, 0.00 creates/s, 0.00 writes/s
Buffer pool hit rate 1000 / 1000
--------------
ROW OPERATIONS
--------------
0 queries inside InnoDB, 0 queries in queue
1 read views open inside InnoDB
Main thread process no. 7209, id 1181718848, state: sleeping
Number of rows inserted 117264774, updated 54036880, deleted 89108151, read 11234440182
20.99 inserts/s, 0.00 updates/s, 0.00 deletes/s, 0.00 reads/s
----------------------------
END OF INNODB MONITOR OUTPUT
============================当前我设置的 my.cnf 里  Buffer pool size=2000g。  跟2348834730是接近的。
从Buffer pool hit rate 来看是合理的,Free buffers   =    1说明这个设置还行的。
是否Database pages     114913过大 ?     插入相同的数据为什么反倒机器b 比机器a要慢 ??

解决方案 »

  1.   

    影响插入数据性能包含很多方面,autocommit,innodb_flush_log_at_trx_commit等
      

  2.   

    机器b上
    select @autocommit;
    +-------------+
    | @autocommit |
    +-------------+
    | NULL        |
    +-------------+
    1 row in setmysql> 机器a 上 一样的。现在拿2个相同的数据文件分别在2个机器上测试 发现 机器a1分不到可以导入6百万数据。 而同样的文件在机器b上1小时才能导入170万 ???
      

  3.   

    2个how  variables like 'autocommit';
    +---------------+-------+
    | Variable_name | Value |
    +---------------+-------+
    | autocommit    | ON    |
    +---------------+-------+
    1 row in set (0.00 sec)mysql> select @@autocommit;
    +--------------+
    | @@autocommit |
    +--------------+
    |            1 |
    +--------------+
    1 row in set (0.00 sec)都是这样的
      

  4.   

    “重建一下数据库,整理一下碎片。‘想问下 我的在线应用适合这样吗 ??   (重建你的意思是重新安装 ?  我的引擎全部是innodb)
      

  5.   

    机器b的 innodb_log_file_size = 5242880而机器a的innodb_log_file_size = 50m  是否这个有区别 导致插入非常慢 ???