PostgreSQL 8.3的新功能[HOT](六)(簡體)
更新:2007-04-18
對映章節:
【PostgreSQLウォッチ】第35回 性能を大幅に改善するPostgreSQL 8.3の新機能「HOT」とは
引申话题
既然前边已经有了PostgreSQL和pgbench的话题,顺便接触一下pgbench在8.3中的改善,主要有三点:
(1) CREATE TABLE时可以指定filefactor(-F选项)
(2) 数据的初期载入变得更快。这里是利用8.3的新特性,在某些情况(TRUNCATE之后的COPY和INSERT)下不输出WAL日志来实现高速化。实际上,数据载入时间的缩短程度令人吃惊。
(3) 更加详细的latency log
后边还要介绍使用3)对性能提升效果的分析方法,不过这并不是笔者的原创,3)的补丁提案者GregSmith先生在下边的网页中介绍了一些与8.3结合的若干调整事项:
http://www.westnet.com/~gsmith/content/postgresql/pgbench.htm
这次使用的文件benchwarmer.sh,log-to-csv.py,create.sqlplot.sh,latency.sh)放在一个压缩包中下载:
benchwarmer.tar.gz
按时间顺序分析pgbench结果
pgbench运行一定数目的事务,然后报告平均每秒运行的事务数(TPS)。但是由于checkpoint的影响,实际运行中处理速度会有很大变化,如果有一个图表化的方法表示每时每刻的变化,分析也就变得更加容易,另外,也能表示到提交(commit)为止花费了多长时间。
首先运行benchwarmer.sh,这个脚本以-l选项运行pgbench,运行结果向作业数据表中写入用SQL处理之后转换成gnuplot的数据。
$ sh benchwarmer.sh
Cleaning up database test
creating tables...
10000 tuples done.
20000 tuples done.
30000 tuples done.
40000 tuples done.
50000 tuples done.
60000 tuples done.
70000 tuples done.
80000 tuples done.
90000 tuples done.
100000 tuples done.
set primary key...
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "branches_pkey" for table "branches"
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "tellers_pkey" for table "tellers"
NOTICE: ALTER TABLE / ADD PRIMARY KEY will create implicit index "accounts_pkey" for table "accounts"
vacuum...done.
1250 transactions for each of 16 concurrent users...
transaction type: Update only accounts
scaling factor: 1
number of clients: 16
number of transactions per client: 1250
number of transactions actually processed: 20000/20000
tps = 526.130190 (including connections establishing)
tps = 528.044259 (excluding connections establishing)
556303
556315
556415
558679
566797
567560
574470
575667
577738
584986
Pager usage is off.
psql:create.sql:1: NOTICE: table "timing" does not exist, skipping
DROP TABLE
CREATE TABLE
To be continued ...
沒有留言:
張貼留言