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和nameCREATE TABLE t_user( userid character varying(25), name character varying(25))*/void thread(char *count){ int i,j; const char *conninfo; char char_time[1024]; 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[1]); pthread_t id[j]; int ret; if(argc < 3){ printf("Not enough arguments, exiting..."); return -1; } for(i=0;i<j;i++) ret=pthread_create(&id[i],NULL,(void *) thread,argv[2]); /* 关闭数据库连接并清理 */ for(i=0;i<j;i++) pthread_join(id[i],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