插入数据

测试方法

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
  1. 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

参考

https://www.jianshu.com/p/5ee448105555

posted @ 2021-08-23 01:05  stupidstan2019  阅读(137)  评论(0)    收藏  举报