我很难使用 Google Cloud SQL 获得不错的性能,我正在做一些非常基本的 CRUD 操作,例如:
public BaseUser getUser(String token) throws SQLException{
Connection conn = DriverManager.getConnection(JDBC_CON_STRING);
PreparedStatement ps = conn.prepareStatement(GET_USER_BY_TOKEN_QUERY);
ps.setString(1, token);
ResultSet rs = ps.executeQuery();
List<BaseUser> users = inflateUser(rs);
if(users.size() == 0){
return null;
}
if(users.size() > 1){
logger.info("DATABASE MAY BE CORRUPTED, THERE'S MORE THAN 1 USER WITH THE SAME TOKEN");
}
ps.close();
rs.close();
conn.close();
return users.get(0);
}
每个查询的平均响应时间为 450 毫秒。+= 150 表示打开连接,150 表示运行,150 表示关闭。看图。以下。
我已经阅读了谷歌文档、论坛和多个博客,但仍然看不到我做错了什么(我一定是做错了什么,450 毫秒/查询太远了……)
更新 1:我绝对是 Google Cloud SQL 问题,我安装了自己的本地 MySQL 服务器,并且性能更好(“插入或更新”为 80 毫秒,然后选择最终提交。),希望我能得到一些来自谷歌开发者的提示。团队,我真的很喜欢整个谷歌云平台,但在这种延迟水平下工作简直是不可能的 =(
更新 2:2014/05/06延迟问题与 D0 或 D16 相同。由于延迟,尝试从 Google ComputeEngine VM 插入 10000 行(3 个 varchar 和一个 ~100 字节的 blob)需要 32 秒。10000 次插入和单个批量插入的持续时间相同。如果我使用 64 个线程,那么持续时间将降至 3 秒。我用本机 mysql jdbc 驱动程序进行了测试。
有什么建议么?谢谢!