ABKYH 发表于 2016-11-21 07:32:07

postgresql集群方案hot standby初级测试(二) ——处理数据能力

  刚刚写完(一),本来想把两篇写在一起,但是发现关联不大,最后觉得分开写:
  
  本文来自:http://blog.csdn.net/lengzijian/article/details/7729465
  
  先写上数据库配置:
  一个主数据库,两个从数据库
  主数据库:Intel(R) Pentium(R) D CPU 2.80GHz *2 | MemTotal: 1027072 kB
  从库1 :Pentium(R) Dual-Core CPU E5200 @ 2.50GHz| MemTotal: 2066020 kB
  从库2 :Pentium(R) Dual-Core CPU E5200 @ 2.50GHz| MemTotal: 2066020 kB
  
  本人自己写了c语言的测试脚本,用到了libpq c库,这里附上源码:

#include <stdio.h>
#include <libpq-fe.h>
#include <pthread.h>
#include <sys/time.h>
/*
首先创建一个简单的表只有userid和name
CREATE TABLE t_user
(
userid character varying(25),
name character varying(25)
)
*/
void thread(char *count){
int i,j;
const char *conninfo;
char char_time;
PGresult *res;
PGconn *conn;
j = atoi(count);
struct timeval tpstart,tpend;
float timeuser;
gettimeofday(&tpstart,NULL);
//数据库配置(主机地址,用户名,端口,数据库名)
conninfo = "hostaddr=192.168.30.150 user=postgres port=5433 dbname=lengzijian";
conn = PQconnectdb(conninfo);
for(i = 0;i<j;i++){
sprintf(char_time,"insert into t_user values ('%d','lengzijian')",i);
res = PQexec(conn, char_time);
if(!res||PQresultStatus(res)!=PGRES_COMMAND_OK)
{
printf("insert failed:%s--[%d]\n",PQerrorMessage(conn),i);
PQclear(res);
}
PQclear(res);
}
gettimeofday(&tpend,NULL);
timeuser=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;
timeuser /=1000000;
//输出每个线程的运行时间,方便计算平均值
printf("Used Time:%f\n",timeuser);
PQfinish(conn);
}
//第一个变量表示线程数,第二个参数表示并发量(每个线程的插入测试)
int main(int argc,char *argv[])
{
int i, j;
j = atoi(argv);
pthread_t id;
int ret;
if(argc < 3){
printf("Not enough arguments, exiting...");
return -1;
}
for(i=0;i<j;i++)
ret=pthread_create(&id,NULL,(void *) thread,argv);
/* 关闭数据库连接并清理 */
for(i=0;i<j;i++)
pthread_join(id,NULL);
}

  

编译方法:

gcc test.c -lpq #千万别忘了-lpq
  

  使用方法:

./a.out 1 1000         #表示1个线程1000个插入操作
  

  由于本人机器并非服务器,所以数据只用来参考,希望读者可以用上面的代码,测试服务器上主机后,发送给本人,本人不胜感激!!!!
  直接上数据:



  线程数量


  每个线程插入次数


  总时间(s)


  每秒处理次数




  1


  1000


  0.684


  1461.988304




  1


  10000


  6.56


  1524.390244




  1


  50000


  33.008


  1514.784295




  1


  100000


  76.972


  1299.173726




  2


  1000


  0.83


  2409.638554




  2


  10000


  7.96


  2512.562814




  2


  50000


  41


  2439.02439




  2


  100000


  95.675


  2090.410243




  3


  1000


  1.15


  2608.695652




  3


  10000


  11.99


  2502.085071




  3


  50000


  70.98


  2113.271344




  3


  100000


  163.4


  1835.985312




  5


  1000


  1.22


  4098.360656




  5


  10000


  15.9


  3144.654088




  5


  50000


  82.9


  3015.681544




  5


  100000


  118.4034


  4222.852386




  10


  1000


  1.830302


  5463.579234




  10


  10000


  16.94417


  5901.736326




  10


  50000


  87.61617


  5706.709487




  10


  100000


  179.2664


  5578.290561



页: [1]
查看完整版本: postgresql集群方案hot standby初级测试(二) ——处理数据能力