1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
$PostgreSQL: pgsql/contrib/pgrowlocks/README.pgrowlocks.euc_jp,v 1.1 2006/04/23 01:12:58 ishii Exp $
pgrowlocks README �а�ã��
1. pgrowlocks�Ȥ�
pgrowlocks�ϡ����ꤵ�줿�ơ��֥�ιԥ��å��˴ؤ�������ɽ�����ޤ���
pgrowlocks���֤����ϡ��ʲ��Τ褦�ˤʤ�ޤ���
CREATE TYPE pgrowlocks_type AS (
locked_row TID, -- row TID
lock_type TEXT, -- lock type
locker XID, -- locking XID
multi bool, -- multi XID?
xids xid[], -- multi XIDs
pids INTEGER[] -- locker's process id
);
�¹�����ޤ���
test=# SELECT * FROM pgrowlocks('t1');
locked_row | lock_type | locker | multi | xids | pids
------------+-----------+--------+-------+-----------+---------------
(0,1) | Shared | 19 | t | {804,805} | {29066,29068}
(0,2) | Shared | 19 | t | {804,805} | {29066,29068}
(0,3) | Exclusive | 804 | f | {804} | {29066}
(0,4) | Exclusive | 804 | f | {804} | {29066}
(4 rows)
�ƹ��ܤ������Ǥ���
locked_row -- ���å����줿�ԤΥ��ץ�ID(TID)
lock_type -- ��ͭ���å��ʤ�"Shared"����¾���å��ʤ�"Exclusive"
locker -- ���å����Ƥ���ȥ�������ID[��1]
multi -- locker���ޥ���ȥ�������ʤ�t�����Ǥʤ����f
xids -- ���å����Ƥ���ȥ�������ID[��2]
pids -- ���å����Ƥ���Хå�����ɥץ������Υץ�����ID[��2]
[��1: locker���ޥ���ʤ顤�ȥ�������ID�ǤϤʤ��ƥޥ��ID�ˤʤ�
�ޤ���]
[��2: locker���ޥ���ξ�硤ʣ���Υǡ�����ɽ������ޤ���]
2. pgrowlocks�Υ��ȡ���
pgrowlocks�Υ��ȡ���ˤϡ�PostgreSQL�ȡ��뤷���Ȥ��Υ���
���ĥ��ɬ�פǤ������ΤȤ����б����Ƥ���С�������PostgreSQL
8.0�ʹߤǤ���
�����Ǥ�PostgreSQL�Υ�������/usr/local/src/postgresql-8.1/��Ÿ����
��Ƥ����ΤȤ��ޤ���
1) pgrowlocks�Υ�������Ÿ�����ޤ����������ե������
/tmp/pgrowlocks-1.0.tar.gz���֤��Ƥ����ΤȤ��ޤ���
$ cd /usr/local/src/postgresql-8.1/contrib
$ tar xfz pgrowlocks-1.0.tar.gz
2) PostgreSQL 8.0�ξ��ϡ��������ΰ����˽�����ɬ�פǤ���
pgrowlocks.c��61�����դ��
#undef MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS
�Ȥ����Τ�����Τǡ������
#define MAKERANGEVARFROMNAMELIST_HAS_TWO_ARGS
�˽����ޤ�(undef->define�ˤ��ޤ�)��
3) ����ѥ��뤷�ƴؿ��ζ�ͭ�饤�֥��ȡ��뤷�ޤ���
$ make
$ make install
4) �桼������ؿ�����Ͽ���ޤ���
$ psql -e -f /usr/local/pgsql/share/contrib/pgrowlocks.sql test
������Ǥ�"test"�Ȥ����ǡ����١�������Ͽ���Ƥ��ޤ������⤷¾�Υǡ�
���١�������Ͽ������Ϥ������ɤ��ؤ��Ƥ���������
3. pgrowlocks�λȤ���
pgrowlocks�θƤӽФ������ϰʲ��Ǥ���
CREATE OR REPLACE FUNCTION pgrowlocks(text) RETURNS pgrowlocks_type
AS 'MODULE_PATHNAME', 'pgrowlocks'
LANGUAGE 'c' WITH (isstrict);
������: �ơ��֥�̾
�ؿ�������pgrowlocks_type���Ǥ���
pgrowlocks�ϥơ��֥��AccessShareLock���å�����1�Ԥ����ɤ߽Ф�
�ƤϹԥ��å��������äƤ��뤫�ɤ��������å����ޤ����ʲ����������դ�
�Ƥ���������
1) �����ơ��֥����¾���å��������äƤ���ȡ�pgrowlocks�μ¹Ԥϥ֥���
������ޤ���
2) pgrowlocks�μ¹���˿����ˤ����ä��ꡤ������줿�ԥ��å��˴ؤ���
�����pgrowlocks�μ¹Է�̤�ȿ�Ǥ���Ƥ��ʤ���ǽ��������ޤ���
pgrowlocks�ϥ��å����줿�Ԥ����Ƥ�ɽ�����ޤ������Ƥ������
�ϡ��ơ��֥��pgrowlocks��locked_rows��Ƿ�礷�ޤ�������ޤ���
SELECT * FROM accounts AS a, pgrowlocks('accounts') AS p WHERE p.locked_ row = a.ctid;
4. pgrowlocks�Υ饤�����ˤĤ���
pgrowlocks.c����Ƭ�˽Ƥ����̤�Ǥ�(����BSD�饤���˽स�Ƥ�
�ޤ�)���ޤ���pgrowlocks �ϴ�����̵�ݾڤǤ���pgrowlocks ����Ѥ�����
�Ȥˤ�ä������뤤���ʤ��̤˴ؤ��Ƥ���Ǥ���餤�ޤ���
5. ��������
2006/03/21 pgrowlocks �С������ 1.1����(8.2 current�ǥƥ���)
2005/08/22 pgrowlocks ������� 1.0����
|