|
1 |
| -<!-- $PostgreSQL: pgsql/doc/src/sgml/mvcc.sgml,v 2.68 2007/02/16 03:50:29 momjian Exp $ --> |
| 1 | +<!-- $PostgreSQL: pgsql/doc/src/sgml/mvcc.sgml,v 2.69 2007/02/18 01:21:49 momjian Exp $ --> |
2 | 2 |
|
3 | 3 | <chapter id="mvcc">
|
4 | 4 | <title>Concurrency Control</title>
|
@@ -536,7 +536,8 @@ SELECT SUM(value) FROM mytab WHERE class = 2;
|
536 | 536 | To some extent the names reflect the typical usage of each lock
|
537 | 537 | mode — but the semantics are all the same. The only real difference
|
538 | 538 | between one lock mode and another is the set of lock modes with
|
539 |
| - which each conflicts. Two transactions cannot hold locks of conflicting |
| 539 | + which each conflicts (see <xref linkend="table-lock-compatibility">). |
| 540 | + . Two transactions cannot hold locks of conflicting |
540 | 541 | modes on the same table at the same time. (However, a transaction
|
541 | 542 | never conflicts with itself. For example, it might acquire
|
542 | 543 | <literal>ACCESS EXCLUSIVE</literal> lock and later acquire
|
@@ -741,119 +742,118 @@ SELECT SUM(value) FROM mytab WHERE class = 2;
|
741 | 742 | releases locks acquired within it.
|
742 | 743 | </para>
|
743 | 744 |
|
| 745 | + |
| 746 | + |
744 | 747 | <table tocentry="1" id="table-lock-compatibility">
|
745 |
| - <title> Compatibility of lock modes</title> |
| 748 | + <title> Conflicting lock modes</title> |
746 | 749 | <tgroup cols="9">
|
747 |
| - <colspec colnum="1" colwidth="1*"> |
748 |
| - <colspec colnum="2" colwidth="1*"> |
749 |
| - <colspec colnum="3" colwidth="1*"> |
750 |
| - <colspec colnum="4" colwidth="1*"> |
751 |
| - <colspec colnum="5" colwidth="1*"> |
752 |
| - <colspec colnum="6" colwidth="1*"> |
753 |
| - <colspec colnum="7" colwidth="1*"> |
754 |
| - <colspec colnum="8" colwidth="1*"> |
755 |
| - <colspec colnum="9" colwidth="1*"> |
| 750 | + <colspec colnum="2" colname="lockst"> |
| 751 | + <colspec colnum="9" colname="lockend"> |
| 752 | + <spanspec namest="lockst" nameend="lockend" spanname="lockreq"> |
756 | 753 | <thead>
|
757 | 754 | <row>
|
758 |
| - <entry>Modes</entry> |
759 |
| - <entry>AS</entry> |
760 |
| - <entry>RS</entry> |
761 |
| - <entry>RE</entry> |
762 |
| - <entry>SUE</entry> |
763 |
| - <entry>S</entry> |
764 |
| - <entry>SRE</entry> |
765 |
| - <entry>E</entry> |
766 |
| - <entry>AE</entry> |
| 755 | + <entry morerows="1">Requested Lock Mode</entry> |
| 756 | + <entry spanname="lockreq">Current Lock Mode</entry> |
| 757 | + </row> |
| 758 | + <row> |
| 759 | + <entry>ACCESS SHARE</entry> |
| 760 | + <entry>ROW SHARE</entry> |
| 761 | + <entry>ROW EXCLUSIVE</entry> |
| 762 | + <entry>SHARE UPDATE EXCLUSIVE</entry> |
| 763 | + <entry>SHARE</entry> |
| 764 | + <entry>SHARE ROW EXCLUSIVE</entry> |
| 765 | + <entry>EXCLUSIVE</entry> |
| 766 | + <entry>ACCESS EXCLUSIVE</entry> |
767 | 767 | </row>
|
768 | 768 | </thead>
|
769 | 769 | <tbody>
|
770 | 770 | <row>
|
771 |
| - <entry>AS</entry> |
772 |
| - <entry align="center">Y</entry> |
773 |
| - <entry align="center">Y</entry> |
774 |
| - <entry align="center">Y</entry> |
775 |
| - <entry align="center">Y</entry> |
776 |
| - <entry align="center">Y</entry> |
777 |
| - <entry align="center">Y</entry> |
778 |
| - <entry align="center">Y</entry> |
779 |
| - <entry align="center">N</entry> |
| 771 | + <entry>ACCESS SHARE</entry> |
| 772 | + <entry align="center"></entry> |
| 773 | + <entry align="center"></entry> |
| 774 | + <entry align="center"></entry> |
| 775 | + <entry align="center"></entry> |
| 776 | + <entry align="center"></entry> |
| 777 | + <entry align="center"></entry> |
| 778 | + <entry align="center"></entry> |
| 779 | + <entry align="center">X</entry> |
780 | 780 | </row>
|
781 | 781 | <row>
|
782 |
| - <entry>RS</entry> |
783 |
| - <entry align="center">Y</entry> |
784 |
| - <entry align="center">Y</entry> |
785 |
| - <entry align="center">Y</entry> |
786 |
| - <entry align="center">Y</entry> |
787 |
| - <entry align="center">Y</entry> |
788 |
| - <entry align="center">Y</entry> |
789 |
| - <entry align="center">N</entry> |
790 |
| - <entry align="center">N</entry> |
| 782 | + <entry>ROW SHARE</entry> |
| 783 | + <entry align="center"></entry> |
| 784 | + <entry align="center"></entry> |
| 785 | + <entry align="center"></entry> |
| 786 | + <entry align="center"></entry> |
| 787 | + <entry align="center"></entry> |
| 788 | + <entry align="center"></entry> |
| 789 | + <entry align="center">X</entry> |
| 790 | + <entry align="center">X</entry> |
791 | 791 | </row>
|
792 | 792 | <row>
|
793 |
| - <entry>RE</entry> |
794 |
| - <entry align="center">Y</entry> |
795 |
| - <entry align="center">Y</entry> |
796 |
| - <entry align="center">Y</entry> |
797 |
| - <entry align="center">Y</entry> |
798 |
| - <entry align="center">N</entry> |
799 |
| - <entry align="center">N</entry> |
800 |
| - <entry align="center">N</entry> |
801 |
| - <entry align="center">N</entry> |
| 793 | + <entry>ROW EXCLUSIVE</entry> |
| 794 | + <entry align="center"></entry> |
| 795 | + <entry align="center"></entry> |
| 796 | + <entry align="center"></entry> |
| 797 | + <entry align="center"></entry> |
| 798 | + <entry align="center">X</entry> |
| 799 | + <entry align="center">X</entry> |
| 800 | + <entry align="center">X</entry> |
| 801 | + <entry align="center">X</entry> |
802 | 802 | </row>
|
803 | 803 | <row>
|
804 |
| - <entry>SUE</entry> |
805 |
| - <entry align="center">Y</entry> |
806 |
| - <entry align="center">Y</entry> |
807 |
| - <entry align="center">Y</entry> |
808 |
| - <entry align="center">N</entry> |
809 |
| - <entry align="center">N</entry> |
810 |
| - <entry align="center">N</entry> |
811 |
| - <entry align="center">N</entry> |
812 |
| - <entry align="center">N</entry> |
| 804 | + <entry>SHARE UPDATE EXCLUSIVE</entry> |
| 805 | + <entry align="center"></entry> |
| 806 | + <entry align="center"></entry> |
| 807 | + <entry align="center"></entry> |
| 808 | + <entry align="center">X</entry> |
| 809 | + <entry align="center">X</entry> |
| 810 | + <entry align="center">X</entry> |
| 811 | + <entry align="center">X</entry> |
| 812 | + <entry align="center">X</entry> |
813 | 813 | </row>
|
814 | 814 | <row>
|
815 |
| - <entry>S</entry> |
816 |
| - <entry align="center">Y</entry> |
817 |
| - <entry align="center">Y</entry> |
818 |
| - <entry align="center">N</entry> |
819 |
| - <entry align="center">N</entry> |
820 |
| - <entry align="center">Y</entry> |
821 |
| - <entry align="center">N</entry> |
822 |
| - <entry align="center">N</entry> |
823 |
| - <entry align="center">N</entry> |
| 815 | + <entry>SHARE</entry> |
| 816 | + <entry align="center"></entry> |
| 817 | + <entry align="center"></entry> |
| 818 | + <entry align="center">X</entry> |
| 819 | + <entry align="center">X</entry> |
| 820 | + <entry align="center"></entry> |
| 821 | + <entry align="center">X</entry> |
| 822 | + <entry align="center">X</entry> |
| 823 | + <entry align="center">X</entry> |
824 | 824 | </row>
|
825 | 825 | <row>
|
826 |
| - <entry>SRE</entry> |
827 |
| - <entry align="center">Y</entry> |
828 |
| - <entry align="center">Y</entry> |
829 |
| - <entry align="center">N</entry> |
830 |
| - <entry align="center">N</entry> |
831 |
| - <entry align="center">N</entry> |
832 |
| - <entry align="center">N</entry> |
833 |
| - <entry align="center">N</entry> |
834 |
| - <entry align="center">N</entry> |
| 826 | + <entry>SHARE ROW EXCLUSIVE</entry> |
| 827 | + <entry align="center"></entry> |
| 828 | + <entry align="center"></entry> |
| 829 | + <entry align="center">X</entry> |
| 830 | + <entry align="center">X</entry> |
| 831 | + <entry align="center">X</entry> |
| 832 | + <entry align="center">X</entry> |
| 833 | + <entry align="center">X</entry> |
| 834 | + <entry align="center">X</entry> |
835 | 835 | </row>
|
836 | 836 | <row>
|
837 |
| - <entry>E</entry> |
838 |
| - <entry align="center">Y</entry> |
839 |
| - <entry align="center">N</entry> |
840 |
| - <entry align="center">N</entry> |
841 |
| - <entry align="center">N</entry> |
842 |
| - <entry align="center">N</entry> |
843 |
| - <entry align="center">N</entry> |
844 |
| - <entry align="center">N</entry> |
845 |
| - <entry align="center">N</entry> |
| 837 | + <entry>EXCLUSIVE</entry> |
| 838 | + <entry align="center"></entry> |
| 839 | + <entry align="center">X</entry> |
| 840 | + <entry align="center">X</entry> |
| 841 | + <entry align="center">X</entry> |
| 842 | + <entry align="center">X</entry> |
| 843 | + <entry align="center">X</entry> |
| 844 | + <entry align="center">X</entry> |
| 845 | + <entry align="center">X</entry> |
846 | 846 | </row>
|
847 | 847 | <row>
|
848 |
| - <entry>AE</entry> |
849 |
| - <entry align="center">N</entry> |
850 |
| - <entry align="center">N</entry> |
851 |
| - <entry align="center">N</entry> |
852 |
| - <entry align="center">N</entry> |
853 |
| - <entry align="center">N</entry> |
854 |
| - <entry align="center">N</entry> |
855 |
| - <entry align="center">N</entry> |
856 |
| - <entry align="center">N</entry> |
| 848 | + <entry>ACCESS EXCLUSIVE</entry> |
| 849 | + <entry align="center">X</entry> |
| 850 | + <entry align="center">X</entry> |
| 851 | + <entry align="center">X</entry> |
| 852 | + <entry align="center">X</entry> |
| 853 | + <entry align="center">X</entry> |
| 854 | + <entry align="center">X</entry> |
| 855 | + <entry align="center">X</entry> |
| 856 | + <entry align="center">X</entry> |
857 | 857 | </row>
|
858 | 858 | </tbody>
|
859 | 859 | </tgroup>
|
|
0 commit comments