免费开源数据库用mysql还是postgresql一直是讨论的热点,本着求真务实的精神本人用周末休息的机会做了一个简单测试。本次测试仅针对性能,安全性,易用性,可维护性等等均不考虑。将测试过程和结果公布,欢迎拍砖。
测试环境:阿里云ECS青岛主机最低配那种(CentOS 7.0 64位,1g内存);mysql5.6,postgresql9.5.2,两个数据库均是默认配置,未做任何优化;tomcat8.0.22,spring4.2.5,druid-1.0.17,mysql-connector-java-5.0.8-bin,postgresql-9.4.1208
测试方法:新建测试表,包含三个字段,id主键,col1 varchar,cnt int;druid只开一个连接,未开启事务,使用jdbctemplate循环插入,然后全表查询;
@Service
public class TestMysqlService {
@Resource(name = "testMysqlDao")
private TestMysqlDao dao;
public void ins(Integer loop){
TestEntity entity = new TestEntity();
for (int i=0;i<loop;i++){
entity.setCol1("测试");
entity.setCnt(i);
dao.ins(entity);
}
}
public void query(){
dao.query();
}
}
public class TestMysqlDao extends NamedParameterJdbcTemplate {
public TestMysqlDao(DataSource dataSource) {
super(dataSource);
}
public void ins(TestEntity entity){
update("insert into t_test(col1,cnt) values (:col1,:cnt)",
new BeanPropertySqlParameterSource(entity));
}
public void query(){
queryForList("select * from t_test",new HashMap());
}
}
测试结果:
插入1万条记录耗时(毫秒)
mysql5.6 | postgresql9.5.2 | |
第一次 | 47398 | 17499 |
第二次 | 48268 | 20290 |
第三次 | 49472 | 17236 |
查询3万条记录
mysql5.6 | postgresql9.5.2 | |
第一次 | 68 | 51 |
第二次 | 67 | 92 |
第三次 | 51 | 46 |
我还做过插入10万条记录的测试,基本是上面放大10倍的结果。以前没有接触过pg,这个测试结果还是让我吃惊不小。pg的写入操作几乎是mysql的3倍。看来以后做项目pg是首选的数据库