测试用的存储过程脚本(连续插入1000条数据):begin 
  set v = 1000;
  truncate table t_user;
  while v > 0 do
    insert into t_user(uname) values('zhangsan');
    set v = v-1;
  end while;
end
测试环境:
两台配置完全一样的主机(i5 cpu,8G内存,500G硬盘)。
其中主机A直接安装CentOS 6.3系统+MySQL 5.6.12。
而主机B安装了VSphere,然后部署了一个虚拟机B1,该虚拟机配置(四核cpu,4G内存,100G硬盘),同样安装CentOS 6.3系统+MySQL 5.6.12。而测试是在物理机A和虚拟机B1上分别跑上面的存储过程脚本。预测:由于两台主机配置一致,理论上应该A的执行速度要高于B1的。但是!我测出的结论!居然是:
A:9.179ms
B1:0.856ms
为什么为什么为什么!虚拟机居然比物理机快10多倍!完全无法理解啊,求大神指教!
MySQL性能优化虚拟机测试存储

解决方案 »

  1.   

    是啊,my.ini也一样,都是默认安装,没改任何配置。
      

  2.   


    WWWWA,你咋知道的?你也遇到过?能解释不?
      

  3.   

    分别贴出两机以下内容以供分析
    show create table t_user;
    show index from t_user;
      

  4.   

    show create table t_user;
    物理机A:
    CREATE TABLE `t_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `uname` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8虚拟机B1:
    CREATE TABLE `t_user` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `uname` varchar(255) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8show index from t_user;
    物理机A:
    t_user 0 PRIMARY 1 id A 1000 BTREE 虚拟机B1:
    t_user 0 PRIMARY 1 id A 1000 BTREE
      

  5.   

    表结构和索引都一样啊。检查一下select @@autocommit ;
      

  6.   

    如果仍一样,那就用 SHOW PROFILES 检查一下时间的消耗。一种可能就是VM没有实际把记录写入到文件,而是积攒到一定程度然后一次性进行磁盘IO操作。