在写这篇文章之前,xxx已经写过了几篇关于改事务内容主题的文章,想要了解的朋友可以去翻一下之前的文章

pgbench is a benchmarking tool for PostgreSQL ,pgbench是postgresql自带的一个性能基准测试工具。

可以通过pgbench --help看一下参数的相关信息

Usage:
  pgbench [OPTIONS]... [DBNAME]

Initialization options:
  -i           invokes initialization mode
  -F NUM       fill factor
  -s NUM       scaling factor

Benchmarking options:
  -c NUM       number of concurrent database clients (default: 1)
  -C           establish new connection for each transaction
  -D VARNAME=VALUE
               define variable for use by custom script
  -f FILENAME  read transaction script from FILENAME
  -j NUM       number of threads (default: 1)
  -l           write transaction times to log file
  -M {simple|extended|prepared}
               protocol for submitting queries to server (default: simple)
  -n           do not run VACUUM before tests
  -N           do not update tables "pgbench_tellers" and "pgbench_branches"
  -r           report average latency per command
  -s NUM       report this scale factor in output
  -S           perform SELECT-only transactions
  -t NUM       number of transactions each client runs (default: 10)
  -T NUM       duration of benchmark test in seconds
  -v           vacuum all four standard tables before tests

Common options:
  -d           print debugging output
  -h HOSTNAME  database server host or socket directory
  -p PORT      database server port number
  -U USERNAME  connect as specified database user
  --help       show this help, then exit
  --version    output version information, then exit

初始化:scale为10,pgbench_accounts记录有100W,

pgbench -i -s 10 pgbench -h 127.0.0.1 -p 1931 -U testuser

这里初始化会创立4张表,如下

 Schema |       Name       | Type  |  Owner   |  Size  | Description 
--------+------------------+-------+----------+--------+-------------
 public | pgbench_accounts | table | testuser | 130 MB | 
 public | pgbench_branches | table | testuser | 168 kB | 
 public | pgbench_history  | table | testuser | 960 kB | 
 public | pgbench_tellers  | table | testuser | 456 kB |

测试:100个client并发,每一个有100个事务

pgbench  -c 100 -t 100 pgbench
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 10
query mode: simple
number of clients: 100
number of threads: 1
number of transactions per client: 100
number of transactions actually processed: 10000/10000
tps = 114.339158 (including connections establishing)  --包括网络开销的事务数
tps = 114.643324 (excluding connections establishing)  --不包括网络开销的事务数

每日一道理
我拽着春姑娘的衣裙,春姑娘把我带到了绿色的世界里。

pgbench  -c 100 -t 100 -j 100 pgbench
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 10
query mode: simple
number of clients: 100
number of threads: 100
number of transactions per client: 100
number of transactions actually processed: 10000/10000
tps = 134.473603 (including connections establishing)
tps = 134.616838 (excluding connections establishing)

这里注意-c必须是-j的倍数,也就是client是threads的倍数。

pgbench  -c 100  -j 100 -T 10 pgbench
starting vacuum...end.
transaction type: TPC-B (sort of)
scaling factor: 10
query mode: simple
number of clients: 100
number of threads: 100
duration: 10 s
number of transactions actually processed: 2144
tps = 209.617862 (including connections establishing)
tps = 211.282453 (excluding connections establishing)

注意:-t和-T不能同时使用,

脚本的内容:

\set nbranches :scale
\set ntellers 10 * :scale
\set naccounts 100000 * :scale
\setrandom aid 1 :naccounts
\setrandom bid 1 :nbranches
\setrandom tid 1 :ntellers
\setrandom delta -5000 5000

BEGIN;
UPDATE pgbench_accounts SET abalance = abalance + :delta WHERE aid = :aid;
SELECT abalance FROM pgbench_accounts WHERE aid = :aid;
UPDATE pgbench_tellers SET tbalance = tbalance + :delta WHERE tid = :tid;
UPDATE pgbench_branches SET bbalance = bbalance + :delta WHERE bid = :bid;
INSERT INTO pgbench_history (tid, bid, aid, delta, mtime) VALUES (:tid, :bid, :aid, :delta, CURRENT_TIMESTAMP);
END;

举例测试一下呆板insert的速度有多快

insertsize.sql内容:create table data(filler text);

insert-size.sql内容:insert into data (filler) values (repeat('X',:scale));

$psql -d pgbench -f insertsize.sql 

$pgbench -s 100 -c 10 -t 10000 pgbench -f insert-size.sql 
starting vacuum...end.
transaction type: Custom query
scaling factor: 100
query mode: simple
number of clients: 10
number of threads: 1
number of transactions per client: 10000
number of transactions actually processed: 100000/100000
tps = 608.144907 (including connections establishing)
tps = 608.234303 (excluding connections establishing)

文章结束给大家分享下程序员的一些笑话语录: 手机终究会变成PC,所以ip会比wm更加畅销,但是有一天手机强大到一定程度了就会发现只有wm的支持才能完美享受。就好比树和草,草长得再高也是草,时间到了条件成熟了树就会窜天高了。www.ishuo.cn

转载于:https://www.cnblogs.com/jiangu66/archive/2013/05/14/3078668.html

事务内容postgresql pgbench相关推荐

  1. PostgreSQL 插入、删除、更新、事务

    INSERT 使用INSERT语句可以向表中插入数据. 创建一个表: CREATE TABLE ProductIns (product_id CHAR(4) NOT NULL,product_name ...

  2. 【分布式事务】内容较多CAP/BASE/2PC/3PC/TCC/Sega等等等等~,一次性捋清楚

    分布式事务 概述 什么是分布式事务 分布式事务就是指事务的资源分别位于分布式系统的不同节点之上的事务 分布式事务产生的原因 数据库分库分表 当业务数据量达到单库单表的极限时,就需要考虑分库分表,跨多个 ...

  3. “王者对战”之 MySQL 8 vs PostgreSQL 10

    本文是对两大开源关系型数据库MySQL.PostgreSQL做了详细的对比,欢迎大家在评论区发表自己的见解. 在这些版本之前,人们普遍认为,Postgres 在功能集表现更出色,也因其"学院 ...

  4. [转帖] “王者对战”之 MySQL 8 vs PostgreSQL 10

    原贴地址:https://www.oschina.net/translate/showdown-mysql-8-vs-postgresql-10?lang=chs&page=2# 英文原版地址 ...

  5. 《PostgreSQL修炼之道-从小工到专家》读书笔记

    PostgreSQL数据库 索引 事务特性 事务隔离级别: 三种问题 四种隔离级别 PostgreSQL中的事务隔离 多版本并发控制(MVCC) MVCC用到的系统字段 事务状态 PostgreSQL ...

  6. postgresql测试题_使用BenchmarkSQL测试PostgreSQL

    BenchmarkSQL是一款经典的开源数据库测试工具,内嵌了TPCC测试脚本,可以对EnterpriseDB.PostgreSQL.MySQL.Oracle以及SQL Server等数据库直接进行测 ...

  7. PostgreSQL服务器管理:服务器配置

    https://www.sypopo.com/post/715XYNwNoY/ PostgreSQL服务器管理:服务器配置 本文档为PostgreSQL 9.6.0文档,本转载已得到原译者彭煜玮授权. ...

  8. 1.4 w字,25 张图让你彻底掌握分布式事务原理

    本文提纲如下 0. 前言 1. 单数据源事务 & 多数据源事务 2. 常见分布式事务解决方案 2.1. 分布式事务模型 2.2. 二将军问题和幂等性 2.3. 两阶段提交(2PC) & ...

  9. oracle sql now函数,postgresql的now()与Oracle的sysdate区别说明

    postgresql的now()为当前事务开始时间, 而Oracle的sysdate是当前时间. 区别在于事务. postgresql中的now(): postgres=# begin ; BEGIN ...

最新文章

  1. Java-ORM数据库框架CDM介绍
  2. 详解Scala函数也是对象的特性
  3. 路径中斜杠/、点斜杠./、点点斜杠../的区别
  4. 对象实例化指针_JVM第三课:一文讲透对象的内存布局和访问方式
  5. 有关Drools业务规则引擎的完整教程
  6. C语言curl实现FTP上传、下载、获取文件信息
  7. python编写一个函数判断一个数是否为素数是则返回yes_编写函数isPrime,判断一个数字是否为素数,是则返回字符串 YES ,否则返回字符串 NO 。_学小易找答案...
  8. C语言关键字之static
  9. vs2005下载|中文版|官方
  10. Codeforces edu 88(A~E)
  11. HGNC 数据库-人类基因组数据库
  12. [转]安装win7系统不产生100M保留分区
  13. vs2013编译ffmpeg之四十二 zvbi
  14. Python调用kafka构建完整实例分析与应用!
  15. 360云服务器关闭后,360云盘宣布关闭!7个问题回答告诉你关闭之后怎么办?
  16. 信号与系统知识点记录(P4-P5)
  17. 京东JOS API 接入使用笔记
  18. win7 系统下实现音量控制
  19. 《程序员之禅》一一10.10 淡泊宁静
  20. linux函数表,libnet 函数列表

热门文章

  1. 给Future一个Promise
  2. 不止 JDK7 的 HashMap ,JDK8 的 ConcurrentHashMap 也会造成 CPU 100%?原因与解决~
  3. GO 语言websocket编程
  4. 14.线程安全?线程不安全?可重入函数?不可重入函数?
  5. Android --- 很好用的时间选择器
  6. Java 洛谷 P1909 买铅笔讲解
  7. python 下载图片损坏_爬虫爬取出的图片下载出错,图片文件直接损坏
  8. 蜂鸣器接入_无源蜂鸣器的原理和和mixly结合制作电子琴
  9. 线程的几种状态_拜托:不要再问我线程有多少种状态了
  10. 《浙江省推动数据中心能效提升行动方案(2021-2025年)》出炉