PostgreSQL 9.2.4ʸ�� | ||||
---|---|---|---|---|
前のページ | 上に戻る | 第 27章�ǡ����١�����ư�����δƻ� | 次のページ |
PostgreSQL�ϡ��ǡ����١��������Ф�ưŪ���פݡ��Ȥ��뵡ǽ�����ޤ�������ˤ�ꡢ�����桼�ƥ���ƥ����ɤ�����Υݥ���ȤǸƤӽФ����Ȥ��Ǥ������פ�Ԥ����Ȥ��Ǥ���褦�ˤʤ�ޤ���
¿�������פ�ץ������ѤΥݥ���Ȥϡ����Ǥ˥�����������������¸�ߤ��ޤ��������Υץ����֤ϥǡ����١����γ�ȯ�Ԥ�����Ԥ��Ȥ����Ȥ�տޤ��Ƥ��ޤ����ǥե���ȤǤϡ������Υץ����֤�PostgreSQL�˥���ѥ��뤵��ޤ��桼��������Ū��configure������ץȤǥץ����֤�ͭ���ˤ���褦�����ꤹ��ɬ�פ�����ޤ���
���ߡ�OpenSolaris��Soralis 10�������ơ�Mac OS X Leopard�����Ѳ�ǽ��DTrace�桼�ƥ���ƥ��Τߤ����ݡ��Ȥ���Ƥ��ޤ���DTrace�Ͼ���FreeBSD�䤽��¾�Υ��ڥ졼�ƥ������ƥ�����ѤǤ���褦�ˤʤ뤳�Ȥ�ͽ�ꤵ��Ƥ��ޤ���SystemTap�ץ��������ȤǤ�Dtrace�����ε�ǽ��Linux���������Ƥ��ޤ���¾��ưŪ���ץ桼�ƥ���ƥ��Υ��ݡ��Ȥϡ�src/include/utils/probes.h���PG_TRACE�ޥ���������ѹ����뤳�Ȥǡ�������ϲ�ǽ�Ǥ���
�ǥե���ȤǤϡ��ץ����֤�ͭ���ǤϤ���ޤ����Τ��ᡢPostgreSQL�ǥץ����֤����ѤǤ���褦�ˤ��뤿���configure������ץȤ�����Ū�����ꤷ�ʤ���Фʤ�ޤ���DTrace���ݡ��Ȥ�ޤ��ˤϡ�configure��--enable-dtrace����ꤷ�ޤ����ܺ٤�項15.4�Ȥ��Ƥ���������
表27-15�Ǽ������褦�ˡ�¿����ɸ��Ū�ʥץ����֤��������������������Ƥ��ޤ���表27-16�ϥץ����֤ǻ��Ѥ��Ƥ��뷿���Ƥ��ޤ����ޤ���PostgreSQL��βĴ�¬�������뤿��Υץ������ɲä���ǽ�Ǥ���
表 27-15. �Ȥ߹��ߺѤߤ�Dtrace�ץ�����
̾�� | �ѥ��� | ���� |
---|---|---|
transaction-start | (LocalTransactionId) | �������ȥ�������γ��Ϥ���ª����ץ����֡�arg0�ϥȥ�������ID�Ǥ��� |
transaction-commit | (LocalTransactionId) | �ȥ�����������ェλ����ª����ץ����֡�arg0�ϥȥ�������ID�Ǥ��� |
transaction-abort | (LocalTransactionId) | �ȥ�������ΰ۾ェλ����ª����ץ����֡�arg0�ϥȥ�������ID�Ǥ��� |
query-start | (const char *) | �䤤��碌�����γ��Ϥ���ª����ץ����֡�arg0���䤤��碌ʸ����Ǥ��� |
query-done | (const char *) | �䤤��碌���������ェλ����ª����ץ����֡�arg0���䤤��碌ʸ����Ǥ��� |
query-parse-start | (const char *) | �䤤��碌�Υѡ��������γ��Ϥ���ª����ץ����֡�arg0���䤤��碌ʸ����Ǥ��� |
query-parse-done | (const char *) | �䤤��碌�Υѡ������������ェλ����ª����ץ����֡�arg0���䤤��碌ʸ����Ǥ��� |
query-rewrite-start | (const char *) | �䤤��碌�ν��������γ��Ϥ���ª����ץ����֡�arg0���䤤��碌ʸ����Ǥ��� |
query-rewrite-done | (const char *) | �䤤��碌�ν������������ェλ����ª����ץ����֡�arg0���䤤��碌ʸ����Ǥ��� |
query-plan-start | () | �䤤��碌�Υץ��ʽ����γ��Ϥ���ª����ץ����֡� |
query-plan-done | () | �䤤��碌�Υץ��ʽ��������ェλ����ª����ץ����֡� |
query-execute-start | () | �䤤��碌�μ¹�(���������塼��)�����γ��Ϥ���ª����ץ����֡� |
query-execute-done | () | �䤤��碌�μ¹�(���������塼��)���������ェλ����ª����ץ����֡� |
statement-status | (const char *) | �����Хץ������ˤ��pg_stat_activity.status�ξ��֤ι�������ª����ץ����֡� arg0�Ͽ��������֤�ʸ����Ǥ��� |
checkpoint-start | (int) | �����å��ݥ���Ȥγ��Ϥ���ª����ץ����֤Ǥ���arg0�ϥ����å��ݥ���Ȥμ���ΰ㤤(shutdown��immediate��force)����̤��뤿��Υӥåȥե饰����äƤ��ޤ��� |
checkpoint-done | (int, int, int, int, int) | �����å��ݥ���Ȥ����ェλ����ª����ץ�����(�ʲ��˼����ץ����֤ϥ����å��ݥ���ȿʹԤ˽������֤���ª����ޤ��ˡ� arg0�Ͻ��ޤ줿�Хåե�����arg1�ϥХåե���������arg2��3��4�Ϥ��줾���ɲá�����������Ѥ��줿xlog�ο��Ǥ��� |
clog-checkpoint-start | (bool) | CLOG��ʬ�Υ����å��ݥ���Ȥγ��Ϥ���ª����ץ����֡�arg0��true�ʤ���̾�Υ����å��ݥ���ȤǤ��ꡢfalse�ʤ�Х���åȥ�������Υ����å��ݥ���Ȥ��ޤ��� |
clog-checkpoint-done | (bool) | CLOG��ʬ�Υ����å��ݥ���Ȥ����ェλ����ª����ץ����֡�arg0��clog-checkpoint-start��Ʊ����̣������ޤ��� |
subtrans-checkpoint-start | (bool) | ���֥ȥ���������ʬ�Υ����å��ݥ���Ȥγ��Ϥ���ª����ץ����֡�arg0��true�ʤ���̾�Υ����å��ݥ���ȤǤ��ꡢfalse�ʤ�Х���åȥ�������Υ����å��ݥ���Ȥ��ޤ��� |
subtrans-checkpoint-done | (bool) | ���֥ȥ���������ʬ�Υ����å��ݥ���Ȥ����ェλ����ª����ץ����֡�arg0��subtrans-checkpoint-start��Ʊ����̣������ޤ��� |
multixact-checkpoint-start | (bool) | �ޥ���ȥ���������ʬ�Υ����å��ݥ���Ȥγ��Ϥ���ª����ץ����֡�arg0��true�ʤ���̾�Υ����å��ݥ���ȤǤ��ꡢfalse�ʤ�Х���åȥ�������Υ����å��ݥ���Ȥ��ޤ��� |
multixact-checkpoint-done | (bool) | �ޥ���ȥ���������ʬ�Υ����å��ݥ���Ȥ����ェλ����ª����ץ����֡�arg0��multixact-checkpoint-start��Ʊ����̣������ޤ��� |
buffer-checkpoint-start | (int) | �����å��ݥ���ȤΥХåե�������ʬ�γ��Ϥ���ª����ץ����֡�arg0�ϥ����å��ݥ���Ȥμ���ΰ㤤(shutdown��immediate��force)����̤��뤿��Υӥåȥե饰����äƤ��ޤ��� |
buffer-sync-start | (int, int) | �����å��ݥ������Υ����ƥ��Хåե��νФ����Ϥ���ª����ץ�����(�ɤΥХåե����Ф�ɬ�פ�����Τ���Ƚ�ꤷ����Ǥ�)��arg0�ϥХåե��������ǡ�arg1�ϸ��ߥ����ƥ��Ǥ��ꡢ�Ф�ɬ�פΤ���Хåե����Ǥ��� |
buffer-sync-written | (int) | �����å��ݥ������Τ��줾��ΥХåե���Ф������ª����ץ����֡�arg0�ϥХåե���ID���ޤ��� |
buffer-sync-done | (int, int, int) | ���ƤΥ����ƥ��Хåե��νФ������ª����ץ����֡�arg0�ϥХåե��������Ǥ���arg1�ϥ����å��ݥ���Ƚ����ˤ��ºݤ˽Ф��줿�Хåե����Ǥ���arg2�ϽФ����Ǥ������ȸ��Ѥ��줿�Хåե���(buffer-sync-start��arg1����)�Ǥ������ΰ㤤�ϥ����å��ݥ�������¾�Υץ������ˤ��Ф��줿�Хåե�ʬ�Ǥ��� |
buffer-checkpoint-sync-start | () | �����ͥ�ؤΥ����ƥ��Хåե��νФ�����ȯ�Ԥθ塢������Ʊ���Ф���Ϥ���������ª����ץ����֡� |
buffer-checkpoint-done | () | �Хåե�����ǥ������ؤ�Ʊ���Ф������ν�λ����ª����ץ����֡� |
twophase-checkpoint-start | () | ���ꥳ�ߥå���ʬ�Υ����å��ݥ���Ȥγ��Ϥ���ª����ץ����֡� |
twophase-checkpoint-done | () | ���ꥳ�ߥå���ʬ�Υ����å��ݥ���Ȥ����ェλ����ª����ץ����֡� |
buffer-read-start | (ForkNumber, BlockNumber, Oid, Oid, Oid, int, bool) | �Хåե��ɤ߹��ߤγ��Ϥ���ª����ץ����֡�arg0�Ϥ�arg1���ɤ߹��ߥڡ����Υե������ֹ�ȥ֥��å��ֹ�Ǥ�(����������졼�����γ�ĥ����ä���硢arg1��-1�ˤʤ�Ǥ��礦)�� arg2��arg3��arg4���оݤΥ�졼�������̤���ơ��֥���֡��ǡ����١����������ƥ�졼������OID�Ǥ��� arg5�ϰ���ơ��֥���������Хåե��˺������Ƥ���Ф��ΥХå�����ɤ�ID�Ǥ��ꡢ̵���ʥХå������ID(-1)�Ǥ���϶�ͭ�Хåե���ؤ��ޤ��� arg6��true�ʤ�Х�졼�����γ�ĥ�ᡢfalse���̾���ɤ߹��ߤ��ޤ��� |
buffer-read-done | (ForkNumber, BlockNumber, Oid, Oid, Oid, int, bool, bool) | �Хåե��ɤ߹��ߤν�λ����ª����ץ����֡�arg0��arg1���ɤ߹��ߥڡ����Υե������ֹ�ȥ֥��å��ֹ�Ǥ�(�⤷��졼�����γ�ĥ����ä���硢arg1�Ͽ������ɲä��줿�֥��å����ֹ��ޤߤޤ�)�� arg2��arg3��arg4���оݤΥơ��֥���̤���ơ��֥���֡��ǡ����١����������ƥơ��֥��OID�Ǥ���arg5�ϰ���ơ��֥���������Хåե��˺������Ƥ���Ф��ΥХå�����ɤ�ID�Ǥ��ꡢ̵���ʥХå������ID(-1)�Ǥ���϶�ͭ�Хåե���ؤ��ޤ��� arg6��true�ʤ�Х�졼�����γ�ĥ�ᡢfalse���̾���ɤ߹��ߤ��ޤ���arg7��true�ʤ�ХХåե����ס�����ˤ��롢false�ϥס������̵���ä����Ȥ��ޤ��� |
buffer-flush-start | (ForkNumber, BlockNumber, Oid, Oid, Oid) | ��ͭ�Хåե��ؤν����ᳫ�Ϥ���ª����ץ����֡�arg0��arg1�Ϥ��Υڡ����Υե������ֹ�ȥ֥��å��ֹ�Ǥ���arg2��arg3��arg4���оݤΥ�졼�������̤���ơ��֥���֡��ǡ����١����������ƥơ��֥��OID�Ǥ��� |
buffer-flush-done | (ForkNumber, BlockNumber, Oid, Oid, Oid) | ������ν�λ����ª����ץ����֡�(����ϥ����ͥ�إǡ������Ϥ��������ߥΤߤ�ȿ�Ǥ��Ƥ��뤳�Ȥ����դ��Ƥ�������; �����λ����ǤϤޤ��ºݤ˥ǥ������ؽ��ޤ�Ƥ��ޤ���)������buffer-flush-start��Ʊ���Ǥ��� |
buffer-write-dirty-start | (ForkNumber, BlockNumber, Oid, Oid, Oid) | �����Хץ������ˤ������ƥ��Хåե��νФ����Ϥ���ª����ץ����֡�(�⤷���줬��ȯ����褦�Ǥ����顢shared_buffers�����ʲ�뤫���Хå����饦��ɥ饤������Υѥ�����Ĵ�ɬ�פʤ��Ȥ��̣���ޤ���)arg0��arg1�Ϥ��Υڡ����Υե������ֹ�ȥ֥��å��ֹ�Ǥ���arg2��arg3��arg4���оݤΥ�졼�������̤���ơ��֥���֡��ǡ����١����������ƥ�졼������OID�Ǥ��� |
buffer-write-dirty-done | (ForkNumber, BlockNumber, Oid, Oid, Oid) | �����ƥ��Хåե��νФ��ν�λ����ª����ץ����֤Ǥ���������buffer-write-dirty-start��Ʊ���Ǥ��� |
wal-buffer-write-dirty-start | () | WAL�Хåե��ΰ�����ˤ�륵���Хץ������Υ����ƥ���WAL�Хåե���Ф�����ª����ץ����֡�(�⤷���줬��ȯ����褦�Ǥ����顢wal_buffers�����������뤳�Ȥ��̣���ޤ���) |
wal-buffer-write-dirty-done | () | �����ƥ���WAL�Хåե��νФ���λ����ª����ץ����֡� |
xlog-insert | (unsigned char, unsigned char) | WAL�쥳���ɤ���������ª����ץ����֡�arg0�ϥ쥳���ɤΥ�����ޥ͡�����(rmid)�Ǥ���arg1�Ͼ���ե饰�Ǥ��� |
xlog-switch | () | WAL�������ȤΥ����å������ª����ץ����֤Ǥ��� |
smgr-md-read-start | (ForkNumber, BlockNumber, Oid, Oid, Oid, int) | ��졼�����Υ֥��å��ɤ߹��ߤγ��Ϥ���ª����ץ����֡�arg0��arg1�Ϥ��Υڡ����Υե������ֹ�ȥ֥��å��ֹ�Ǥ���arg2��arg3��arg4���оݤΥ�졼�������̤���ơ��֥���֡��ǡ����١����������ƥ�졼������OID�Ǥ���arg5�ϰ���ơ��֥���������Хåե��˺������Ƥ���Ф��ΥХå�����ɤ�ID�Ǥ��ꡢ̵���ʥХå������ID(-1)�Ǥ���϶�ͭ�Хåե���ؤ��ޤ��� |
smgr-md-read-done | (ForkNumber, BlockNumber, Oid, Oid, Oid, int, int, int) | �֥��å����ɤ߹��߽�λ����ª����ץ����֡�arg0��arg1�Ϥ��Υڡ����Υե������ֹ�ȥ֥��å��ֹ�Ǥ���arg2��arg3��arg4���оݤΥ�졼�������̤���ơ��֥���֡��ǡ����١����������ƥ�졼������OID�Ǥ���arg5�ϰ���ơ��֥���������Хåե��˺������Ƥ���Ф��ΥХå�����ɤ�ID�Ǥ��ꡢ̵���ʥХå������ID(-1)�Ǥ���϶�ͭ�Хåե���ؤ��ޤ���arg6�ϼºݤ��ɤ߹�����Х��ȿ���arg7�ϥꥯ�����Ȥ��줿�ɤ߹��ߥХ��ȿ��Ǥ�(�⤷�������˺��ۤ����ä���硢���餫�����꤬���뤳�Ȥ��ޤ�)�� |
smgr-md-write-start | (ForkNumber, BlockNumber, Oid, Oid, Oid, int) | ��졼�����ؤΥ֥��å��Ф��γ��Ϥ���ª����ץ����֡�arg0��arg1�Ϥ��Υڡ����Υե������ֹ�ȥ֥��å��ֹ�Ǥ���arg2��arg3��arg4���оݤΥ�졼�������̤���ơ��֥���֡��ǡ����١����������ƥ�졼������OID�Ǥ���arg5�ϰ���ơ��֥���������Хåե��˺������Ƥ���Ф��ΥХå�����ɤ�ID�Ǥ��ꡢ̵���ʥХå������ID(-1)�Ǥ���϶�ͭ�Хåե���ؤ��ޤ��� |
smgr-md-write-done | (ForkNumber, BlockNumber, Oid, Oid, Oid, int, int, int) | �֥��å��νФ���λ����ª����ץ����֡�arg0��arg1�Ϥ��Υڡ����Υե������ֹ�ȥ֥��å��ֹ�Ǥ���arg2��arg3��arg4���оݤΥ�졼�������̤���ơ��֥���֡��ǡ����١����������ƥ�졼������OID�Ǥ���arg5�ϰ���ơ��֥���������Хåե��˺������Ƥ���Ф��ΥХå�����ɤ�ID�Ǥ��ꡢ̵���ʥХå������ID(-1)�Ǥ���϶�ͭ�Хåե���ؤ��ޤ���arg6�ϼºݤ˽Ф����Х��ȿ���arg7�ϥꥯ�����Ȥ��줿�Ф��Х��ȿ��Ǥ�(�⤷�������˺��ۤ����ä���硢���餫�����꤬���뤳�Ȥ��ޤ�)�� |
sort-start | (int, bool, int, int, bool) | �����Ƚ����γ��Ϥ���ª����ץ����֡�arg0���оݥǡ������ҡ��ס�����ǥå������ޤ���datum�Τɤ줫���ޤ���arg1��true�ʤ�а������ɬ�פȤ��Ƥ��뤳�Ȥ��ޤ���arg2�ϥ����Υ������Ǥ���arg3�ϵ��Ƥ���Ƥ����ȥ���(work_mem)�Υ����Х��ȿ��Ǥ���arg4��true�ʤ�Х����ȷ�̤��Ф�������ॢ���������ᤵ��Ƥ��뤳�Ȥ��ޤ��� |
sort-done | (bool, long) | �����Ƚ����ν�λ����ª����ץ����֡�arg0��true�ʤ�г��������ȡ�false�����������Ȥ��ޤ���arg1�ϳ��������Ȥǻ��Ѥ��줿�ǥ������֥��å������⤷�������������Ȥǻ��Ѥ��줿����Υ����Х��ȿ����ޤ��� |
lwlock-acquire | (LWLockId, LWLockMode) | LWLock(���̥��å�)�μ�������ª����ץ����֡�arg0�Ϸ��̥��å���ID���ޤ���arg1���ᤵ�줿���å��⡼��(��¾���⤷���϶�ͭ)���ޤ��� |
lwlock-release | (LWLockId) | ���̥��å��γ�������ª����ץ�����(�������������Ԥ��Υץ������Ϥޤ����Υ��å�������Ǥ��ʤ����Ȥ����դ��Ʋ�����)��arg0�Ϸ��̥��å���ID���ޤ��� |
lwlock-wait-start | (LWLockId, LWLockMode) | ���̥��å���¨�¤˼����Ǥ��ʤ��ä����ᡢ�����Хץ����������å������ѤǤ���ޤǥ��å��Ե����֤ˤʤä��ݤγ��Ϥ���ª����ץ����֡�arg0�Ϸ��̥��å���ID���ޤ���arg1���ᤵ�줿���å��⡼��(��¾���⤷���϶�ͭ)���ޤ��� |
lwlock-wait-done | (LWLockId, LWLockMode) | �����Хץ������η��̥��å��Ե��γ�������ª����ץ�����(�ºݤˤϤޤ����å��ϼ������Ƥ��ޤ���)��arg0�Ϸ��̥��å���ID���ޤ���arg1���ᤵ�줿���å��⡼��(��¾���⤷���϶�ͭ)���ޤ��� |
lwlock-condacquire | (LWLockId, LWLockMode) | �ƤӽФ������Ե����ʤ����Ȥ���ꤷ���ݤΡ����̥��å��γ�����������ª����ץ����֡�arg0�Ϸ��̥��å���ID���ޤ���arg1���ᤵ�줿���å��⡼��(��¾���⤷���϶�ͭ)���ޤ��� |
lwlock-condacquire-fail | (LWLockId, LWLockMode) | �ƤӽФ������Ե����ʤ����Ȥ���ꤷ���ݤΡ����̥��å��γ������Ԥ���ª����ץ����֡�arg0�Ϸ��̥��å���ID���ޤ���arg1���ᤵ�줿���å��⡼��(��¾���⤷���϶�ͭ)���ޤ��� |
lock-wait-start | (unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, LOCKMODE) | �̾�Υ��å�(lmgr lock)��¨�¤˼����Ǥ��ʤ��ä����ᡢ�����Хץ����������å������ѤǤ���ޤǥ��å��Ԥ����֤ˤʤä��ݤγ��Ϥ���ª����ץ����֡�arg0����arg3�ϥ��å����줿���֥������Ȥμ����ѥ����ΰ�Ǥ���arg4�ϥ��å����줿���֥������ȤΥ����פ��ޤ���arg5���ᤵ�줿���å��μ�����ޤ��� |
lock-wait-done | (unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, LOCKMODE) | �̾�Υ��å�(lmgr lock)����Ե���λ����ª����ץ�����(�Ĥޤ���å����������)�� ������lock-wait-start��Ʊ���Ǥ��� |
deadlock-found | () | �ǥåɥ��å����δ�ˤ��ǥåɥ��å���ȯ������ª����ץ����֡� |
�ʲ�����Ǥϡ������ƥ�ˤ�����ȥ������������Ϥ���DTrace������ץȤ��ޤ�����ǽ������pg_stat_database�Υ��ʥåץ���åȤ��뤳�Ȥ����ز�ǽ�Ǥ���
#!/usr/sbin/dtrace -qs postgresql$1:::transaction-start { @start["Start"] = count(); self->ts = timestamp; } postgresql$1:::transaction-abort { @abort["Abort"] = count(); } postgresql$1:::transaction-commit /self->ts/ { @commit["Commit"] = count(); @time["Total time (ns)"] = sum(timestamp - self->ts); self->ts=0; }
�¹Ԥ���ȡ����D������ץȤϰʲ��Τ褦�ʽ��Ϥޤ���
# ./txn_count.d `pgrep -n postgres` or ./txn_count.d <PID> ^C Start 71 Commit 70 Total time (ns) 2312105013
注意: ���ܤȤʤ����ץݥ���Ȥθߴ����Ϥ���ޤ�����SystemTap��DTrace�Ȱۤʤ����ץ�����ץȤ�ɽ�����Ѥ��ޤ��� ɽ���˴ؤ����ä����դ��٤����Ȥ��ơ�SystemTap�Ǥϻ��Ȥ������ץݥ����̾�Υϥ��ե���������ŤΥ���������������Ѥ���ɬ�פ�����ޤ��� ����Ͼ���Ū��SystemTap�Υ����ǽ�������뤳�Ȥ���Ԥ��Ƥ��ޤ���
DTrace������ץȤκ����ˤ����դ�ɬ�פǤ��ꡢ�ǥХå���ɬ�פǤ��뤳�Ȥ�˺��ʤ��Ǥ�������������ʤ��ȡ����������������ΰ�̣���ʤ��ʤ뤫�⤷��ޤ��ۤȤ�ɤξ�硢���Ĥ�������ϥ����ƥ�ǤϤʤ�������ˡ�δְ㤤�Ǥ���ưŪ���פ���Ѥ��Ƹ��Ĥ��ä�����˴ؤ��Ƶ�����Ԥ��ݤˤϡ�������ץȤθ����������Ǥ���褦�˥�����ץȤ�ޤ��褦�ˤ��Ƥ���������
�����¿���Υ���ץ륹����ץȤ�PgFoundry��dtrace project�ˤ���ޤ���
��ȯ�Ԥ�˾��Х�������˿������ץ����֤�������뤳�Ȥ��Ǥ��ޤ���������������ˤϺƥ���ѥ��뤬ɬ�פǤ��������ϡ������ץ����֤�����μ��Ǥ���
�ץ����֤�̾���ȥץ����֤ν������̤��Ƽ�����ǽ�Ȥ���ǡ�������ޤ�
src/backend/utils/probes.d�˥ץ����֤�������ɲä��ޤ�
�⤷���ץ����֥ݥ���Ȥ�ޤ�⥸�塼�뤬pg_trace.h�롼�ɤ��Ƥʤ���Ф���롼�ɤ�����������������Υץ����֤�Ԥ���������TRACE_POSTGRESQL�ޥ������������ޤ�
�ƥ���ѥ����Ԥ��������ץ����֤����ѤǤ��뤫��ǧ���ޤ�
��: ����ϥȥ�������ID���Ѥ��ƿ����ȥ�����������פ���ץ������ɲäλ�������Ǥ���
�ץ�����̾��transaction-start�Ȥ����ѥ����Ȥ���LocalTransactionId����ɬ�פȤ��뤳�Ȥ���ޤ�
src/backend/utils/probes.d�˥ץ����֤�������ɲä��ޤ�:
probe transaction__start(LocalTransactionId);
�ץ�����̾����ŤΥ����������������Ѥ���������դ��Ʋ�������DTrace������ץȤǥץ����֤��Ѥ����硢��ŤΥ��������������ϥ��ե���֤�������ɬ�פ�����ޤ������Τ��ᡢtransaction-start���桼��������ʸ��˵��ܤ����̾���Ȥʤ�ޤ���
����ѥ�����ˡ�transaction__start��TRACE_POSTGRESQL_TRANSACTION_START�ȸƤФ��ޥ������Ѵ�����ޤ�(�����Ǥϥ�������������ϤҤȤĤˤʤ�ޤ�)�����Υޥ����ϡ�pg_trace.h�롼�ɤ��뤳�Ȥˤ����Ѳ�ǽ�Ȥʤ�ޤ������Υޥ����������������Ŭ�ڤʲս���ɲä��Ƥ����ޤ������ξ�硢�ʲ����ͤˤʤ�ޤ���
TRACE_POSTGRESQL_TRANSACTION_START(vxid.localTransactionId);
�ƥ���ѥ����˿������Х��ʥ�ǥ����Ф�ư�����������ͤ�DTrace���ޥ�ɤμ¹Ԥˤ�꿷�����ɲä����ץ����֤����Ѳ�ǽ�ʥ����å����ޤ����������ͤʽ��Ϥ���ǧ�Ǥ���Ϥ��Ǥ�:
# dtrace -ln transaction-start ID PROVIDER MODULE FUNCTION NAME 18705 postgresql49878 postgres StartTransactionCommand transaction-start 18755 postgresql49877 postgres StartTransactionCommand transaction-start 18805 postgresql49876 postgres StartTransactionCommand transaction-start 18855 postgresql49875 postgres StartTransactionCommand transaction-start 18986 postgresql49873 postgres StartTransactionCommand transaction-start
C�Υ����������ɤ������ѤΥޥ������ɲä���ݡ������Ĥ���������������ޤ�:
�ץ����֤ΰ����˻��ꤷ���ǡ��������ޥ����ǻ��Ѥ�����ѿ��Υǡ������Ȱ��פ���褦���դ��ʤ���Фʤ�ޤ��Ǥʤ���С�����ѥ�����˥��顼�Ȥʤ�Ǥ��礦��
�ۤȤ�ɤΥץ�åȥۡ���Ǥϡ��⤷PostgreSQL��--enable-dtrace�դ��ǥӥ�ɤ��줿��硢�������פ�����ʤ��ä��Ȥ��Ƥ⡢���椬�ޥ������̲᤹��ݤϤ��ĤǤ������ѥޥ����ΰ�����ɾ������ޤ������������Υ���������ѿ�����𤹤�褦�ʾ��Ϥ���ۤɿ��ۤϤ���ޤ����������ɲä�������ʴؿ���������Ƥ֤褦�ʾ������դ��Ʋ��������⤷���Τ褦�ʴؿ���ɬ�פ����硢���פ��ºݤ˲�ǽ���ɤ���������å�����ޥ��������Ѥ������פʥޥ����μ»ܤ��뤳�Ȥ��θ���Ƥ�������:
if (TRACE_POSTGRESQL_TRANSACTION_START_ENABLED()) TRACE_POSTGRESQL_TRANSACTION_START(some_function(...));
�����ץޥ������б�����ENABLED�ޥ�������äƤ��ޤ���