每隔一段时间就会出现一篇关于数据库性能描述得天花乱坠的文章,经常出现100W QPS这样的大数字,去掉几千字的文字讲解后,核心内容是一台顶级配置的服务器和为测试专做的配置,对于大部分系统根本不会去购买哪台不知哪里才有卖的服务器,大部分开发人员也不会去折腾哪一堆配置,并且改了默认配置往往引入新问题。怎样的数据库测试才是最真实,反映系统实际运行能力?GIT@OSC的演示平台可以作为一个参考,这里写了两段代码,测试并发10个连接,每个连接读10,000个数据在iBoxDB与MySQL上所需要的时间,时间越短,性能越好。
先看MySQL的测试代码
public Integer call() throws Exception {
ResultSet rs = c.createStatement()
executeQuery("select `id`, `value`, `msg` from test");
int l = 0;
while (rs.next()) {
if (rs.getString(3).startsWith(
Integer.toString(rs.getInt(1)))){
l += rs.getInt(2);
}
}
return l;
}
这段代码的内容是从test表中读出 id,value,msg, 首先对msg内容进行合法检测,内容符合的把vlaue加到校验码l中。msg的内容创建时是 "id.toString()+一段文字"。
再看iBoxDB的测试代码,因为是NoSQL,代码更易读
public Long call() throws Exception {
long l = 0;
for (Map<String, Object> map : c.select("from test")) {
if (map.get("msg").toString().startsWith(
map.get("id").toString())) {
l += (Long) map.get("value");
}
}
return l;
}
启动GIT@OSC的演示平台后,点击几次测试后, MySQL都在100ms以上,而 iBoxDB 大部分在50ms附近,花费时间越小,性能越好。