https://github.com/postgrespro/pg_ycsb
YCSB-like benchmark for pgbench
https://github.com/postgrespro/pg_ycsb
Last synced: 2 months ago
JSON representation
YCSB-like benchmark for pgbench
- Host: GitHub
- URL: https://github.com/postgrespro/pg_ycsb
- Owner: postgrespro
- Created: 2017-12-14T07:43:01.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2017-12-18T09:06:12.000Z (over 7 years ago)
- Last Synced: 2025-02-22T17:12:34.448Z (2 months ago)
- Language: PLpgSQL
- Size: 7.81 KB
- Stars: 15
- Watchers: 7
- Forks: 4
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[WIP]
# pg_ycsb
pg_ycsb implements basic YCSB-like workloads designed specifically to be run with pgbench.
## What is YCSB
[YCSB](https://github.com/brianfrankcooper/YCSB) is a framework and common set of workloads for performance evaluating of different kinds of database systems.
## Workloads
* **workload A**
Update heavy workload. Example: session store recording recent actions.
50% reads, 50% updates* **workload B**
Read mostly workload. Example: photo tagging; add a tag is an update, but most operations are to read tags.
95% reads, 5% updates* **workload C**
Read only. Example: user profile cache, where profiles are constructed elsewhere.
100% reads* **workload D**
Read latest workload. Example: user status updates; people want to read the latest.
95% reads, 5% inserts (WIP)* **workload E**
Short ranges. Example: threaded conversations, where each scan is for the posts in a given thread.
95% scans, 5% inserts (WIP)* **workload F**
Read-modify-write workload. Example: user database, where user records are read and modified by the user or to record user activity.
50% reads, 50% inserts (WIP)## Why use pgbench?
pgbench is a lightweight and flexible framework and usually goes with PostgreSQL. By default it performs TPC-B like benchmarks and widely used across developers. But in some cases default scripts fail to provide comprehensive measurements. pg_ycsb is a set of scripts which enables developers to run YCSB-like workloads with pgbench and using pgbench's default table set.
## Using
Full documentation on pgbench can be found in [official documentation](https://www.postgresql.org/docs/current/static/pgbench.html). The most important options are:
`-f filename@weight`
Add script to the list of executed scripts and `weight` represents probability of the execution of this script.`-T seconds`
Total time of execution.`-c clients`
Number of concurrent clients.**Workload A:**
```
pgbench postgres -f scripts/zipfian/read.sql@50 -f scripts/zipfian/update.sql@50 -T60 -c10
```**Workload B:**
```
pgbench postgres -f scripts/zipfian/read.sql@95 -f scripts/zipfian/update.sql@5 -T60 -c10
```**Workload C:**
```
pgbench postgres -f scripts/zipfian/read.sql -T60 -c10
```**Workload D:**
Not implemented yet.
**Workload E:**
```
pgbench postgres -f scripts/zipfian/scan.sql@95 -f scripts/uniform/insert.sql@5 -T60 -c10
```**Workload F:**
Not implemented yet.