插入数据
测试方法
1)插入100条数据
create table t1(id int,c1 varchar(50));
insert into t1 select generate_series(1,100),'#abcd#';
select count(*) from t1;
2)事务1
begin;
select txid_current();
#当前事务是7932
- pgbench后台运行
cat update.sql
\set rowid random(2,2)
begin;
update t1 set c1=:rowid where id=1;
end;
./pgbench -c 1 -C -f ./update.sql -j 1 -n -t 1 -U jiang postgres
#600s
c 1个客户端
t 1个事务
j 1个线程
查看表路径
\set v_tablename t1
select pg_relation_filepath('t1');
查看数据
看当前活跃事务
postgres=# select txid_current_snapshot();
txid_current_snapshot
-----------------------
7932:25618:7932
xmin: xmax: xip_list
xin:未提交并活跃的事务中最小的XID
xmax:所有已提交事务中最大的XID + 1,下一个可以分配的txid
xip_list: xmin<=txid<xmax中仍然活跃的事务。
看表大小
\set v_tablename t1
SELECT pg_size_pretty( pg_total_relation_size(:'v_tablename') );
1.2MB
[jiang@local 13023]$ du -sh 16429
1.2M 16429
看数据内容
select * from heap_page_items(get_raw_page('t1',1)) limit 10;
lp | lp_off | lp_flags | lp_len | t_xmin | t_xmax | t_field3 | t_ctid | t_infomask2 | t_infomask | t_hoff | t_bits | t_oid | t_data
----+--------+----------+--------+--------+--------+----------+--------+-------------+------------+--------+--------+-------+----------------
1 | 8160 | 1 | 30 | 8024 | 8025 | 0 | (1,2) | 16386 | 9474 | 24 | | | \x010000000532
2 | 8128 | 1 | 30 | 8025 | 8026 | 0 | (1,3) | 49154 | 9474 | 24 | | | \x010000000532
参考

浙公网安备 33010602011771号