打靶归来_个人页

个人头像照片 打靶归来
0
2
0

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息
正在加载, 请稍后...
暂无更多信息
  • 提交了问题 2014-09-03

    关于RDS的性能

  • 回答了问题 2014-09-03

    关于RDS的性能

    Re关于RDS的性能 ping的数据如下: ds.aliyuncs.com (ip) 56(84) bytes of data. 64 bytes from ip: icmp_req=1 ttl=54 time=1.21 ms 64 bytes from ip: icmp_req=2 ttl=54 time=1.21 ms 64 bytes from ip: icmp_req=3 ttl=54 time=1.23 ms 64 bytes from ip: icmp_req=4 ttl=54 time=1.20 ms 看起来还好 ------------------------- 回1楼小猪猪的帖子 嗯,我试试用hibernate 2nd level cache,减少数据库的直接访问 ------------------------- 回2楼mayle的帖子 ping的数据还好,1.x ms 那现在的解释可能是,链接建立时间? 我是新手,配置mysql有个connection pool,这算是使用了长连接吗? 谢谢! ------------------------- 回7楼mayle的帖子 我用的java melody做的profiling 今天我打开了memcache,从而减少数据库访问,request的处理时间明显下降。 进一步说明,确实是因为访问数据库造成了性能下降。 另外,值得注意的是:数据库操作时间跟数据库sql hit的个数呈线性关系(我观察了大概10几个request,需要我也可以贴图),大概一个hit需费时4ms;这说明应该不是短长链接引起的; 我截了图,只放了一个request的数据;第一行是memcache打开之前的,第二行是memcache打开之后的数据。 ------------------------- Re关于RDS的性能 忘了说了,最后两列是数据库相关的。其中,最后一列是ms,倒数第二列是sql hit count 第四列绿色的数字,是request总耗时。 ------------------------- 回11楼mayle的帖子 刚刚申请加入了,能否帮忙转贴下分析结果。我现在进去,之前的聊天记录我应该看不到的吧 ------------------------- Re关于RDS的性能 我刚刚弄了一张最小的表,然后在RDS以及本地的数据库上都通过rest api进行操作,每个操作都只是简单的一个select 数据如下 第一行是数据库在RDS的性能,可以明显看到每个sql hit的mean time为3ms 第二行是数据库在本地(本地是个性能非常一般的机器),每个sqlhit的mean time为0(说明小于1ms) 期待大牛解释 ------------------------- Re关于RDS的性能 #include #include #include #include int main(void) {   MYSQL *conn;   MYSQL_RES *res;   MYSQL_ROW row;  /* Change me */   char *server = 'rdsql.rds.aliyuncs.com';   char *user = 'userXXX';   char *password = 'XXXXX';   char *database = 'XXXX';      conn = mysql_init(NULL);      /* Connect to database */   if (!mysql_real_connect(conn, server,         user, password, database, 0, NULL, 0)) {      fprintf(stderr, '%s\n', mysql_error(conn));      exit(1);   }      struct timeval start, end;   long secs_used,micros_used;   gettimeofday(&start, NULL);   char *sql_cmd = 'SELECT * FROM user where id=11';   /* send SQL query */   if (mysql_query(conn, sql_cmd)) {      fprintf(stderr, '%s\n', mysql_error(conn));      exit(1);   }   gettimeofday(&end, NULL);   printf('start: %d secs, %d usecs\n',start.tv_sec,start.tv_usec);   printf('end: %d secs, %d usecs\n',end.tv_sec,end.tv_usec);   secs_used=(end.tv_sec - start.tv_sec); //avoid overflow by subtracting first   micros_used= ((secs_used*1000000) + end.tv_usec) - (start.tv_usec);   printf('Execute SQL %s micros_used: %d\n',sql_cmd, micros_used);   res = mysql_use_result(conn);   int num_fields = mysql_num_fields(res);   /* output table name */   printf('Result of %s is :\n', sql_cmd);   while ((row = mysql_fetch_row(res)) != NULL) {      int i;      for (i = 0; i           printf('%s ', row ? row : 'NULL');      }      printf('\n');   }   /* close connection */   mysql_free_result(res);   mysql_close(conn);    return 0;} ------------------------- Re关于RDS的性能 gcc -o select_one_row mysql_select_one_row.c -lmysqlclient------------------------- Re关于RDS的性能 总结一下,使用RDS,肯定会比local的mysql要慢。具体是一个sql select操作,RDS大概会费时3到4ms,而local的mysql server,大概是0.4到0.5ms。原因应该就是网络延迟,ping rds大概是1.3ms;本来我不理解的是,local的0.4ms 加上网络延迟1.3ms,到了RDS最多也就是2ms,怎么会变成3到4ms;可能的解释是,ping也就是一个来回,而且是比较简单的网络协议;sql操作可能会涉及到一些握手行为,多加一个来回,就是多1ms多。------------------------- Re关于RDS的性能 嗯,看我代码,profile相关的代码,只是包含了select 操作,没有包含建立链接以及关闭链接------------------------- 回23楼joyzheng的帖子 第一个问题见20楼第二个问题,我的理解,是的------------------------- Re关于RDS的性能 最后回复下21楼,2000次的select,平均下来的sql操作也是3.x msstart: 1410340266 secs, 704180 usecsend: 1410340274 secs, 412382 usecsExecute SQL SELECT * FROM user where id=%d 2000 times, average micros_used: 3854  
    踩0 评论0
正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息