|
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