测试环境
配置直接影响执行速度,先上一下测试机配置:
cpu i7 5500U(低电压伤不起,以后再也不买低电压的U了)
内存 8G ddr3 1600
php 7.1
mysql 5.5.40
开发框架 CodeIgniter 3.1.2
影响写入效率的因素都有什么?
数据库引擎
开发中常用的数据库引擎 MyISAM,InnoDB 这两种,其他的数据库引擎我在开发中还没用到,所以不在这里测试了。
先看一下库表结构 :
test库下有两张表:分别为上面提的两种引擎:
每张表结构如下(一个自增id,一个varchar类型待插入字段):
缺省状态下对两表插入20w数据看一下效率:
PHP代码如下:
/**
*
* 测试插入效率
*
* @return void
*
*/
public function insertTest(){
set_time_limit(0); //防止超300s 500错误
$t1 = microtime(true);
//随机插入num条
for ($i=1; $i<=200000; $i++){
$result = $this->db->insert('myisam', ['value' => uniqid().$i]);
}
//程序运行时间
$t2 = microtime(true);
echo '耗时:'.round($t2-$t1,3).'秒
';
echo '内存消耗:'.round(memory_get_usage()/1048576,2)." M
";
}
执行结果:
20w 数据 Myisam要 接近3分钟了。
看一下InnoDb缺省状态下执行时间:
插入1w条数据 用了 6分49秒,没办法等下去了, 按照这个数据量推测 6分49 * 20 &