Files
zvfs/scripts/do_pgbecnh.md

129 lines
3.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
```shell
# 1. 安装 PostgreSQL 和 pgbench
sudo apt-get update
sudo apt-get install -y postgresql postgresql-contrib
# 4. 重启 PostgreSQL
## 清理旧空间
sudo systemctl stop postgresql
pkill -9 -u postgres postgres || true
rm -rf /home/lian/pg/pgdata
LD_PRELOAD=/home/lian/share/zvfs/src/libzvfs.so rm -rf /zvfs/pg_ts_bench
rm -rf /tmp/pg.log
## 初始化
sudo mkdir -p /home/lian/pg/pgdata
sudo chown -R postgres:postgres /home/lian/pg
sudo -u postgres mkdir -p /home/lian/pg/pgdata
sudo chown -R postgres:postgres /home/lian/pg/pgdata
sudo -u postgres env LD_PRELOAD=/home/lian/share/zvfs/src/libzvfs.so \
/usr/lib/postgresql/12/bin/initdb -D /home/lian/pg/pgdata
## 修改配置文件
cp /home/lian/share/zvfs/postgresql.conf /home/lian/pg/pgdata/
sudo chown -R postgres:postgres /home/lian/pg/pgdata/postgresql.conf
## 创建测试环境
sudo mkdir -p /zvfs/pg_ts_bench
sudo chown -R postgres:postgres /zvfs/pg_ts_bench
sudo chmod 700 /zvfs/pg_ts_bench
## 启动服务
sudo -u postgres env LD_PRELOAD=/home/lian/share/zvfs/src/libzvfs.so \
/usr/lib/postgresql/12/bin/pg_ctl -D /home/lian/pg/pgdata -l /tmp/pg.log start
## 打开命令行工具
sudo -u postgres env LD_PRELOAD=/home/lian/share/zvfs/src/libzvfs.so \
/usr/lib/postgresql/12/bin/psql
## 重启服务指令
sudo -u postgres env LD_PRELOAD=/home/lian/share/zvfs/src/libzvfs.so \
/usr/lib/postgresql/12/bin/pg_ctl -D /home/lian/pg/pgdata -l /tmp/pg.log restart
# 5. 验证配置生效
pid=$(pgrep -u postgres -xo postgres)
echo "pid=$pid"
sudo grep libzvfs /proc/$pid/maps
show data_directory;
SHOW shared_memory_type;
SHOW dynamic_shared_memory_type;
```
## 简易功能测试
```shell
# 1. 创建 tablespace
DROP TABLESPACE IF EXISTS zvfs_ts;
CREATE TABLESPACE zvfs_ts LOCATION '/zvfs/pg_ts_bench';
# 2. 创建数据库
DROP DATABASE IF EXISTS benchdb;
CREATE DATABASE benchdb TABLESPACE zvfs_ts;
## 3. 连接数据库
\c benchdb
# -- 查看数据库默认 tablespace
SHOW default_tablespace;
# 4. 创建表(默认 tablespace
DROP TABLE IF EXISTS hook_probe;
CREATE TABLE hook_probe(
id int,
val text
);
INSERT INTO hook_probe VALUES (1,'a');
INSERT INTO hook_probe VALUES (2,'b');
INSERT INTO hook_probe VALUES (3,'c');
INSERT INTO hook_probe VALUES (4,'d');
SELECT * FROM hook_probe;
# 5. UPDATE / DELETE 测试
DELETE FROM hook_probe WHERE id = 1;
UPDATE hook_probe SET id = 11 WHERE id = 2;
SELECT * FROM hook_probe;
# 6. 批量 INSERT 测试
INSERT INTO hook_probe
SELECT generate_series(100,10000), 'bulk';
SELECT count(*) FROM hook_probe;
# 7. 创建索引(测试 index file
CREATE INDEX idx_hook_probe_id ON hook_probe(id);
# 8. 大对象测试TOAST
INSERT INTO hook_probe VALUES (99999, repeat('zvfs_test_',1000));
# 9. VACUUM 测试
VACUUM hook_probe;
# 10. ANALYZE
ANALYZE hook_probe;
# 11. 查看物理文件位置
SELECT
relname,
pg_relation_filepath(oid)
FROM pg_class
WHERE relname='hook_probe';
# 12. 删表
DROP TABLE IF EXISTS hook_probe;
# 查看表文件
SELECT pg_relation_filepath('hook_probe');
# 13. 压测
bash /home/lian/share/zvfs/scripts/run_pgbench_no_mmap.sh
```