zoukankan      html  css  js  c++  java
  • 事务内容postgresql pgbench

    在写这篇文章之前,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

  • 相关阅读:
    request和response概念用法
    servlet知识点
    Nginx的安装和配置文件详细说明
    Tomcat优化
    Tomcat安装和常见问题
    WEB服务器和tomcat介绍
    WEB技术相关入门知识点
    前期绑定和后期绑定
    1-4选择题
    1-3选择题
  • 原文地址:https://www.cnblogs.com/jiangu66/p/3078668.html
Copyright © 2011-2022 走看看