¾�ΥС�������ʸ�� �� 17 | 16 | 15 | 14 | 13 | 12 | 11 | 10 | 9.6 | 9.5 | 9.4 | 9.3 | 9.2 | 9.1 | 9.0 | 8.4 | 8.3 | 8.2 | 8.1 | 8.0 | 7.4 | 7.3 | 7.2

9.3. ����Ū���å�

PostgreSQL�ϡ��ơ��֥���Υǡ������Ф���Ʊ���������������椹�뤿��ˤ��ޤ��ޤʼ���Υ��å��⡼�ɤ������Ƥ��ޤ��� �����Υ⡼�ɤϡ�MVCC �Ǥ�ɬ�פ�ư��������ʤ���硢���ץꥱ�����������Υ��å��˻��Ѥ��뤳�Ȥ��Ǥ��ޤ��� �ޤ����ۤȤ�ɤ� PostgreSQL ���ޥ�ɤǤϡ����Ȥ����ơ��֥뤬���Υ��ޥ�ɤμ¹�����̤���ˡ�Ǻ���⤷�����ѹ�����Ƥ��ʤ����Ȥ�μ¤ˤ��뤿��ˡ�Ŭ�ڤʥ⡼�ɤΥ��å���ưŪ�˳������ޤ��� (���Ȥ��С�ALTER TABLE ���ޥ�ɤϡ�Ʊ���ơ��֥���Ф���¾�����Ȥ�Ʊ���˼¹ԤǤ��ޤ���)

9.3.1. �ơ��֥��٥���å�

�ʲ��Υꥹ�Ȥˡ�PostgreSQL �Ǽ�ưŪ�����椵��롢���Ѳ�ǽ�ʥ��å��⡼�ɤ���Ӥ���餬���Ѥ���륳��ƥ����Ȥ򼨤��ޤ��� �����Υ��å��⡼�ɤϡ����Ȥ�����̾���� "row" (��) �Ȥ������դ��Ĥ��Ƥ��Ƥ⡢���٤ƥơ��֥��٥�Υ��å��Ǥ��뤳�Ȥ����դ��Ƥ��������� ���å��⡼�ɤ�̾�������Ū�ʤ�ΤǤ��� ������̾���ϡ��ƥ��å��⡼�ɤ���ɽŪ�ʻ�����ˡ�򤢤�����ɽ���Ƥ��ޤ�������������̣Ū�ˤϤ��٤�Ʊ���Ǥ��� ���å��⡼�ɴ֤ˤ�����ͣ��μ¼�Ū�ʺ��ۤϡ��ɤΥ⡼�ɤ��ɤΥ⡼�ɤȶ��礹�뤫�Ȥ������å��⡼�ɤ��ȹ礻�Ǥ��� 2 �ĤΥȥ�󥶥������ǡ����礹��⡼�ɤΥ��å���Ʊ����Ʊ��ơ��֥����ݻ����뤳�ȤϤǤ��ޤ��� (���������ȥ�󥶥������ϼ�ʬ���ȤȤϷ褷�ƶ��礷�ޤ��󡣤��Ȥ��С�ACCESS EXCLUSIVE ���å�������������θ�Ʊ���ơ��֥�� ACCESS SHARE ���å���������뤳�Ȥ��Ǥ��ޤ���) ���礷�ʤ����å��⡼�ɤϡ�¿���Υȥ�󥶥�������Ʊ�����ݻ����뤳�Ȥ���ǽ�Ǥ��� �äˡ����å��⡼�ɤˤϡ����ʶ��礹���� (���Ȥ��С�ACCESS EXCLUSIVE ��Ʊ����ʣ���Υȥ�󥶥��������ݻ����뤳�Ȥ��Բ�ǽ) �ȡ����ʶ��礷�ʤ���� (���Ȥ��С�ACCESS SHARE ��ʣ���Υȥ�󥶥��������ݻ���ǽ) �����뤳�Ȥ����դ��Ƥ��������� ��ö���������ȡ����å��⡼�ɤϥȥ�󥶥�����󤬽�λ����ޤǰݻ�����ޤ���

�ǡ����١��������Фˤ����ơ�����̤���Υ��å��Υꥹ�Ȥ�Ĵ�٤�ˤϡ�pg_locks �����ƥ�ӥ塼����Ѥ��Ƥ��������� ���å��ޥ͡����㥵�֥����ƥ�ξ��֤�ɽ���˴ؤ���ܺ٤ϡ�PostgreSQL �������ѥ������򻲾Ȥ��Ƥ���������

�ơ��֥��٥���å��⡼��

ACCESS SHARE

ACCESS EXCLUSIVE ���å��⡼�ɤȤΤ߶��礷�ޤ���

SELECT ���ޥ�ɤˤ�ꡢ���Ȥ����ơ��֥���Ф��Ƥ��Υ⡼�ɤΥ��å�����������ޤ��� �̾�ơ��֥���ɤ߼��Τߤ��ѹ���Ԥʤ�ʤ��䤤��碌�Ǥ���Ф��٤ơ����Υ��å��⡼�ɤ�������ޤ���

ROW SHARE

EXCLUSIVE ����� ACCESS EXCLUSIVE ���å��⡼�ɤȶ��礷�ޤ���

SELECT FOR UPDATE ���ޥ�ɤˤ�ꡢ(���ȤϤ���Ƥ��뤬��FOR UPDATE �Ȥ�������Ϥ���Ƥ��ʤ�¾�Υơ��֥���Ф��� ACCESS SHARE ���å��˲ä���) �оݤȤʤ�ơ��֥��ˤ��Υ⡼�ɤΥ��å���������ޤ���

ROW EXCLUSIVE

SHARE��SHARE ROW EXCLUSIVE��EXCLUSIVE������� ACCESS EXCLUSIVE ���å��⡼�ɤȶ��礷�ޤ���

UPDATE��DELETE������� INSERT ���ޥ�ɤϡ�(���Ȥ����¾�Τ��٤ƤΥơ��֥���Ф��� ACCESS SHARE ���å��˲ä���) �оݤȤʤ�ơ��֥��ˤ��Υ⡼�ɤΥ��å���������ޤ��� �̾���Υ��å��⡼�ɤϡ��ơ��֥�Υǡ������ѹ������䤤��碌�ˤ���������ޤ���

SHARE UPDATE EXCLUSIVE

SHARE UPDATE EXCLUSIVE��SHARE��SHARE ROW EXCLUSIVE��EXCLUSIVE������� ACCESS EXCLUSIVE ���å��⡼�ɤȶ��礷�ޤ��� ���Υ⡼�ɤˤ�ꡢƱ���¹���Υ������ޤˤ���ѹ������ VACUUM ���ޥ�ɤμ¹Ԥ��顢�ơ��֥���ݸ�ޤ���

VACUUM ���ޥ�ɤˤ�äƳ�������ޤ� (FULL ���ץ����̵��)��

SHARE

ROW EXCLUSIVE��SHARE UPDATE EXCLUSIVE��SHARE ROW EXCLUSIVE��EXCLUSIVE������� ACCESS EXCLUSIVE ���å��⡼�ɤȶ��礷�ޤ��� ���Υ⡼�ɤˤ�ꡢƱ���¹Ԥ����ǡ����ѹ�����ơ��֥���ݸ�ޤ���

CREATE INDEX �ˤ�äƳ�������ޤ���

SHARE ROW EXCLUSIVE

ROW EXCLUSIVE��SHARE UPDATE EXCLUSIVE��SHARE��SHARE ROW EXCLUSIVE��EXCLUSIVE������� ACCESS EXCLUSIVE ���å��⡼�ɤȶ��礷�ޤ���

���Υ��å��⡼�ɤ�ưŪ�˳������� PostgreSQL ���ޥ�ɤϤ���ޤ���

EXCLUSIVE

ROW SHARE��ROW EXCLUSIVE��SHARE UPDATE EXCLUSIVE��SHARE��SHARE ROW EXCLUSIVE��EXCLUSIVE������� ACCESS EXCLUSIVE ���å��⡼�ɤȶ��礷�ޤ��� ���Υ⡼�ɤϡ�Ʊ���¹Ԥ���� ACCESS SHARE �Τߤ���Ĥ��ޤ������Ȥ��С����Υ��å��⡼�ɤ��ݻ�����ȥ�󥶥��������¹Ԥ��Ƽ¹ԤǤ�������ϡ��ơ��֥���ɤ߼������Ǥ���

���Υ��å��⡼�ɤ�ưŪ�˳������� PostgreSQL ���ޥ�ɤϤ���ޤ���

ACCESS EXCLUSIVE

���٤ƤΥ��å��⡼�� (ACCESS SHARE��ROW SHARE��ROW EXCLUSIVE��SHARE UPDATE EXCLUSIVE��SHARE��SHARE ROW EXCLUSIVE��EXCLUSIVE������� ACCESS EXCLUSIVE) �ȶ��礷�ޤ��� ���Υ⡼�ɤˤ�ꡢ���ν�ͭ�԰ʳ��˥ơ��֥�˥�����������ȥ�󥶥�����󤬤ʤ����Ȥ��ݾڤ���ޤ���

ALTER TABLE��DROP TABLE������� VACUUM FULL ���ޥ�ɤˤ�äƳ�������ޤ��� �ޤ�������Ū�˥⡼�ɤ���ꤷ�ʤ���С����줬 LOCK TABLE ʸ����Ѥ���ݤΥǥե���ȤΥ��å��⡼�ɤǤ���

Note: ACCESS EXCLUSIVE ���å��Τߤ���SELECT (FOR UPDATE ̵��) ʸ��֥��å����ޤ���

9.3.2. �ԥ�٥���å�

�ơ��֥��٥���å��˲ä��ơ��ԥ�٥�Υ��å��⤢��ޤ��� ���ꤵ�줿�Ԥ��Ф���ԥ�٥���å��ϡ��Ԥ����� (�ޤ��Ϻ�����ޤ��Ϲ����оݤȤ��ƥޡ���) �����ȡ���ưŪ�˳�������ޤ��� ���Υ��å��ϡ��ȥ�󥶥�����󤬥��ߥåȤޤ��ϥ�����Хå�����ޤ��ݻ�����ޤ��� �ԥ�٥���å��ϡ��ǡ������䤤��碌�ˤϱƶ���Ϳ���ޤ��󡣹ԥ�٥���å��ϡ�Ʊ���Ԥ��Ф���񤭹����Τߤ�֥��å����ޤ��� �ºݤ˹Ԥ��ѹ������˹Ԥ��Ф��ƹԥ�٥���å����������ˤϡ���������Ԥ� SELECT FOR UPDATE �����򤷤Ƥ��������� ���ä�������ιԥ�٥���å������������ȡ�������ۤ��ʤ��ǡ����Υȥ�󥶥��������Ǥϲ���Ǥ�Ԥ��ѹ�����ǽ�Ǥ��뤳�Ȥ�Ф��Ƥ����Ƥ���������

PostgreSQL �Ǥϡ��������ѹ����줿�Ԥξ���򵭲����ʤ����ᡢƱ���˥��å��Ǥ���Կ��ξ�¤Ϥ���ޤ��󡣤��������Ԥ���å�����ݤˡ��ǥ������˽񤭹����Ȥ�ȯ�����뤫�⤷��ޤ��� �������äơ����Ȥ���SELECT FOR UPDATE�����򤵤줿�Ԥ˰����դ����ѹ���Ԥ����ǥ������ˤ��η�̤�񤭹��ळ�Ȥˤʤ�ޤ���

�ơ��֥�ȹԥ��å��˲ä����ڡ�����٥�ζ�ͭ/��¾���å������ꡢ�����϶�ͭ�Хåե��ס���ˤ���ơ��֥�ڡ����ؤ��ɤ߽񤭤Υ���������������뤿��˻��Ѥ���ޤ��������Υ��å��ϥ��ץ뤬�������줿�Ȥ��乹�����줿�Ȥ��ˡ�¨�¤˲������ޤ������ץꥱ�������ȯ�Ԥ��ä˥ڡ�����٥���å����θ����ɬ�פϤ���ޤ��� ���å��ˤĤ������Ƥ������������ä�����ڡ�����٥���å����������ޤ�����

9.3.3. �ǥåɥ��å�

����Ū�ʥ��å��λ��Ѥϡ��ǥåɥ��å��θ����Ȥʤ��ǽ��������ޤ����ǥåɥ��å��Ȥϡ�2 �� (�⤷���Ϥ���ʾ�) �Υȥ�󥶥������ˤ����ơ����줾�줬��¾���Υȥ�󥶥������ɬ�פȤ�����å��������Ƥ��ޤ����ȤǤ��� ���Ȥ��С��ȥ�󥶥������ 1 ���ơ��֥� A ����¾���å���������Ƥ��ơ����˥ơ��֥� B ����¾���å���������褦�Ȥ���ݤˡ��ȥ�󥶥������ 2 �����Ǥ˥ơ��֥� B ����¾���å�������ѤߤǤ��äơ�������ơ��֥� A ����¾���å���������褦�Ȼ�ߤ��硢�ɤ���Υȥ�󥶥������������ʤ���ޤ��� PostgreSQL �Ǥϡ���ưŪ�˥ǥåɥ��å��������ɤ����ط�����ȥ�󥶥������ΰ����򥢥ܡ��Ȥ��뤳�Ȥˤ�ꡢ���ξ������褷���⤦�����Υȥ�󥶥������ν�����λ�����ޤ��� (�ɤ���Υȥ�󥶥������򥢥ܡ��Ȥ��뤫�����Τ�ͽ������Τ��񤷤������ꤷ���뺬��Ϥ���ޤ���)��

�ǥåɥ��å����ɤ��Ǥ��ɤ���ˡ�ϡ��ǡ����١�������Ѥ��뤹�٤ƤΥ��ץꥱ������󤬡��������Τ�������ʣ���Υ��֥������Ȥ��Ф�����å���������뤳�ȤǤ��� �ޤ����ȥ�󥶥��������Υ��֥������Ȥ��Ф��Ƴ��������ǽ�Υ��å��򡢤��Υ��֥������Ȥ�ɬ�פȤ���ǹ�̤Υ⡼�ɤˤ��뤳�Ȥ�ǥåɥ��å����ɤ���ˡ�� 1 �ĤǤ��� ���Τ��Ȥ������˸��ڤǤ��ʤ���硢�ǥåɥ��å��ˤ�ꥢ�ܡ��Ȥ��줿�ȥ�󥶥�������ƻ�Ԥ���С��ǥåɥ��å���ǡ����١������Ư�����ʤ���Ǥ�������뤳�Ȥ��Ǥ��ޤ���

�ǥåɥ��å����������Ф���ʤ���С��ơ��֥��٥���å��⤷���Ϲԥ�٥���å����׵᤹��ȥ�󥶥������ϡ����礹����å������������ޤǡ�̵���¤��Ե����ޤ��� �������äơ����ץꥱ��������Ĺ���� (���Ȥ��С��桼���������Ԥ�) �ȥ�󥶥������򥪡��ץ󤷤��ޤ��ݻ����Ƥ����Τϡ��侩����ޤ���