先写上数据库配置:

一个主数据库,两个从数据库

主数据库: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库,这里附上源码:

[cpp] view plaincopyprint?
  1. #include <stdio.h>
  2. #include <libpq-fe.h>
  3. #include <pthread.h>
  4. #include <sys/time.h>
  5. /*
  6. 首先创建一个简单的表只有userid和name
  7. CREATE TABLE t_user
  8. (
  9. userid character varying(25),
  10. name character varying(25)
  11. )
  12. */
  13. void thread(char *count){
  14. int i,j;
  15. const char *conninfo;
  16. char char_time[1024];
  17. PGresult *res;
  18. PGconn *conn;
  19. j = atoi(count);
  20. struct timeval tpstart,tpend;
  21. float timeuser;
  22. gettimeofday(&tpstart,NULL);
  23. //数据库配置(主机地址,用户名,端口,数据库名)
  24. conninfo = "hostaddr=192.168.30.150 user=postgres port=5433 dbname=lengzijian";
  25. conn = PQconnectdb(conninfo);
  26. for(i = 0;i<j;i++){
  27. sprintf(char_time,"insert into t_user values ('%d','lengzijian')",i);
  28. res = PQexec(conn, char_time);
  29. if(!res||PQresultStatus(res)!=PGRES_COMMAND_OK)
  30. {
  31. printf("insert failed:%s--[%d]\n",PQerrorMessage(conn),i);
  32. PQclear(res);
  33. }
  34. PQclear(res);
  35. }
  36. gettimeofday(&tpend,NULL);
  37. timeuser=1000000*(tpend.tv_sec-tpstart.tv_sec)+tpend.tv_usec-tpstart.tv_usec;
  38. timeuser /=1000000;
  39. //输出每个线程的运行时间,方便计算平均值
  40. printf("Used Time:%f\n",timeuser);
  41. PQfinish(conn);
  42. }
  43. //第一个变量表示线程数,第二个参数表示并发量(每个线程的插入测试)
  44. int main(int argc,char *argv[])
  45. {
  46. int i, j;
  47. j = atoi(argv[1]);
  48. pthread_t id[j];
  49. int ret;
  50. if(argc < 3){
  51. printf("Not enough arguments, exiting...");
  52. return -1;
  53. }
  54. for(i=0;i<j;i++)
  55. ret=pthread_create(&id[i],NULL,(void *) thread,argv[2]);
  56. /* 关闭数据库连接并清理 */
  57. for(i=0;i<j;i++)
  58. pthread_join(id[i],NULL);
  59. }

编译方法:

[cpp] view plaincopyprint?
  1. gcc test.c -lpq #千万别忘了-lpq

使用方法:

[cpp] view plaincopyprint?
  1. ./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

本文转自h2内存数据库博客园博客,原文链接:http://www.cnblogs.com/h2-database/archive/2012/07/09/2583251.html,如需转载请自行联系原作者

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

  1. postgresql集群方案hot standby 安装和测试

    这两天正忙着研究postgresql,基本用法和其他数据库大同小异,先不自己讲解,今天主要想记录下postgresql的集群方案hot standby方式. 转载请注明:http://blog.csd ...

  2. Redis集群方案,Codis安装测试

    Redis集群方案,Codis安装测试 1,关于豌豆荚开源的Codis Codis是豌豆荚使用Go和C语言开发.以代理的方式实现的一个Redis分布式集群解决方案,且完全兼容Twemproxy.Twe ...

  3. PostgreSQL集群方案-Postgres-XL

    Postgres-XL 主机 系统 hostname 192.168.1.42 centos7 node1 GTM 192.168.1.43 centos7 node2 gtm_proxy.Coord ...

  4. PostgreSQL集群方案-citus

    citus Citus基本上是Postgres,可以进行横向扩展.它是Postgres的扩展,可以在多台计算机的群集中分发数据和查询.作为扩展(而不是分支),Citus支持新的PostgreSQL版本 ...

  5. MySQL常用集群方案

    了解 MySQL 集群之前,先看看单节点数据库的弊病: 大型互联网程序用户群体庞大,所以架构需要特殊设计. 单节点数据库无法满足大并发时性能上的要求. 单节点的数据库没有冗余设计,无法满足高可用. 单 ...

  6. PostgreSQL高可用性、负载均衡、复制与集群方案介绍

    目录[-] 一.高可用性.负载均衡.复制的几个方案比较: 二.多节点集群方案比较 9.3官方文档(中文):http://58.58.27.50:8079/doc/html/9.3.1_zh/high- ...

  7. PostgreSQL学习总结(11)—— PostgreSQL 常用的高可用集群方案

    前言 PostgreSQL 本身不支持任何多主群集解决方案,例如 MySQL 或 Oracle.尽管如此,仍有许多商业和社区产品提供此实现,以及其他产品,例如 PostgreSQL 的复制或负载平衡. ...

  8. 在 Kubernetes 上快速测试 Citus 分布式 PostgreSQL 集群(分布式表,共置,引用表,列存储)...

    准备工作 这里假设,你已经在 k8s 上部署好了基于 Citus 扩展的分布式 PostgreSQL 集群. 查看 Citus 集群(kubectl get po -n citus),1 个 Coor ...

  9. Greenplum集群Master与Standby相互切换

    Greenplum集群Master与Standby相互切换 1 概述 1 2 查看集群的基本信息 2 2.1 查看集群的配置信息 2 2.2 快速查看down segments节点 2 2.3 查看M ...

最新文章

  1. 深度学习之自编码器AutoEncoder
  2. L4,C16:差1墩,从张数最多的套上去找
  3. 百度地图API禁用点击景点弹出详细信息的方法
  4. centos mysql 新增用户
  5. python函数返回布尔值_python-3.x - 函数不返回正确的布尔值 - SO中文参考 - www.soinside.com...
  6. redhat升级linux内核,用rpm方式升级RHEL6.1内核
  7. html怎么隐藏y方向内容,如何隐藏scroll-Y纵向滚动条,并不影响内容滚动的方法...
  8. 03-30 兼容性测试
  9. 用asp.net获取服务器和客服端有关信息
  10. java 小数精度问题
  11. python在屏幕上画画,屏幕上的Python绘图
  12. 从事游戏开发怎么入门
  13. 基于crontab的服务器恶意程序
  14. bootstrap搜索图标的使用
  15. 16 - 12 - 20 KMP算法 模式匹配 终极奥义!
  16. mysql存储过程 outfile_mysql存储过程 outfile
  17. 一个强悍而优美的Android视频播放器
  18. 全国联动css,CSS3 齿轮啮合联动动画
  19. 初学verilog必看
  20. 内马尔成为e.GO全球品牌大使;小马智行与如祺出行战略合作 | 美通企业日报

热门文章

  1. 数据库管理之数据表管理(1)
  2. 软件设计师 --哈夫曼树的一个经典问题
  3. Windows系统上3种连接Docker虚拟机的方法
  4. webform中提交按钮同时执行更新和插入操作_软件测试中的功能测试点(三)
  5. 疲劳驾驶监测方案_【Nano Energy】TENG用于驾驶员驾驶状态监测
  6. ubuntu 破解mysql密码_Ubuntu下忘记MySQL root密码解决方法
  7. tablednd保存 php,JQuery-tableDnD 拖拽的基本使用介绍
  8. 这些数据分析方法你都掌握了么
  9. 面试题,产品经理岗位的哪些特点最吸引你?
  10. 互联网日报 | TikTok将开启Pre-IPO融资;菜鸟裹裹战略再升级;滴滴中国西区总部落户重庆江北...