postgresql集群方案hot standby初级测试(二) ——处理数据能力
2012-07-09 16:00
232 查看
刚刚写完(一),本来想把两篇写在一起,但是发现关联不大,最后觉得分开写:
本文来自:/article/1407268.html
先写上数据库配置:
一个主数据库,两个从数据库
主数据库: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库,这里附上源码:
编译方法:
使用方法:
由于本人机器并非服务器,所以数据只用来参考,希望读者可以用上面的代码,测试服务器上主机后,发送给本人,本人不胜感激!!!!
直接上数据:
本文来自:/article/1407268.html
先写上数据库配置:
一个主数据库,两个从数据库
主数据库: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[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 |
相关文章推荐
- postgresql集群方案hot standby初级测试(二) ——处理数据能力
- Android 内存泄露测试数据处理--procrank,setprop,getprop(转)
- Problem Description 输入n(n<100)个数,找出其中最小的数,将它与最前面的数交换后输出这些数。 Input 输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。 Output 对于每组
- java 测试处理json数据
- Flash Socket底层接受数据的初级处理
- [AS3]Flash Socket底层接受数据的初级处理(转)
- Flash Socket底层接收数据的初级处理
- 第4章 处理用户输入与显示数据------------(读取参数、读取程序名称、测试参数)
- Flash Socket 底层接受数据的初级处理(as3.0)
- [AS3]Flash Socket底层接受数据的初级处理
- Atitit 学习的本质 团队管理与培训的本质 attilax总结 1. 学习的定义 1 2. 学习的本质是数据的处理,海量的数据,处理能力有限的大脑 2 2.1. 摘要(缩小数据体量。。这个过程有
- oracle数据文件丢失处理方法一(测试)
- lnmp压力测试结果php处理能力低,增加pm.max_children后一样没提升
- 测试基于传统复制下主从同步数据不一致处理
- 批处理测试数据
- Oracle存储过程处理大批量数据性能测试
- 利用最近邻KNN算法对IRIS数据进行测试处理样例
- ORA-00376,ORA-01647一次自己测试库数据文件错误的处理
- Android初级开发第七讲--特效和数据传递处理
- 代码备份:处理 SUN397 的代码,将其分为 80% 训练数据 以及 20% 的测试数据