{"id":60,"date":"2023-02-21T08:45:33","date_gmt":"2023-02-21T08:45:33","guid":{"rendered":"https:\/\/blessingcr.com\/?p=60"},"modified":"2023-02-21T08:45:34","modified_gmt":"2023-02-21T08:45:34","slug":"%e9%97%b4%e9%9a%99%e9%94%81gap-lock","status":"publish","type":"post","link":"https:\/\/blessingcr.com\/?p=60","title":{"rendered":"\u95f4\u9699\u9501Gap Lock"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">CREATE TABLE z (<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp; id INT PRIMARY KEY AUTO_INCREMENT,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp; b &nbsp;INT,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;KEY b(b)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">) ENGINE = InnoDB DEFAULT CHARSET = utf8;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO z&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;(id, b)<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">VALUES&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;(1, 2),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;(3, 4),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;(5, 6),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;(7, 8),<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">&nbsp;&nbsp;(9, 10);<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">session A\uff1a<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">BEGIN;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SELECT * FROM z WHERE b = 6 FOR UPDATE;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">session B:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO z VALUES (2, 4);\/*success*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO z VALUES (2, 8);\/*blocked*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO z VALUES (4, 4);\/*blocked*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO z VALUES (4, 8);\/*blocked*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO z VALUES (8, 4);\/*blocked*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO z VALUES (8, 8);\/*success*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO z VALUES (0, 4);\/*blocked*\/<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">INSERT INTO z VALUES (-1, 4);\/*success*\/<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"_Le4e4GcG\">\u52a0\u9501\u8fc7\u7a0b<\/h3>\n\n\n\n<ol class=\"wp-block-list\" start=\"1\">\n<li>\u5728\u7d22\u5f15 b \u4e0a\u7684\u7b49\u503c\u67e5\u8be2\uff0c\u7ed9\u7d22\u5f15 b \u52a0\u4e0a\u4e86 next-key lock (4, 6]\uff1b\u7d22\u5f15\u5411\u53f3\u904d\u5386\uff0c\u4e14\u6700\u540e\u4e00\u4e2a\u503c\u4e0d\u6ee1\u8db3\u6761\u4ef6\u65f6\u9000\u5316\u4e3a\u95f4\u9699\u9501\uff1b\u6240\u4ee5\u4f1a\u518d\u52a0\u4e0a\u95f4\u9699\u9501 (6,8)\uff1b\u6240\u4ee5\u7d22\u5f15 b \u4e0a\u7684 next-key lock \u7684\u8303\u56f4\u662f(b=4,id=3)\u5230(b=6,id=5)\u8fd9\u4e2a\u5de6\u5f00\u53f3\u95ed\u533a\u95f4\u548c(b=6,id=5)\u5230(b=8,id=7)\u8fd9\u4e2a\u5f00\u533a\u95f4\u3002\uff08\u8bfb\u8d77\u6765\u6709\u70b9\u7ed5\u53e3\uff0c\u770b\u4e0d\u61c2\u7684\u53ef\u4ee5\u770b\u4e0b\u6587\u4e2d\u7684\u56fe\uff09<\/li>\n<\/ol>\n\n\n\n<ol class=\"wp-block-list\" start=\"2\">\n<li>for update \u4f1a\u7ed9 b = 6 \u8fd9\u4e00\u884c\u52a0\u4e0a\u884c\u9501\uff1b\u56e0\u6b64 (b=6,id=5) \u8fd9\u4e00\u884c\u4e0a\u6709\u884c\u9501<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>CREATE TABLE z ( &nbsp; id INT PRIMARY KEY AUTO_INCREME [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[29,32],"class_list":["post-60","post","type-post","status-publish","format-standard","hentry","category-mysql","tag-mysql","tag-32"],"_links":{"self":[{"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/posts\/60","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blessingcr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=60"}],"version-history":[{"count":1,"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/posts\/60\/revisions"}],"predecessor-version":[{"id":61,"href":"https:\/\/blessingcr.com\/index.php?rest_route=\/wp\/v2\/posts\/60\/revisions\/61"}],"wp:attachment":[{"href":"https:\/\/blessingcr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=60"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blessingcr.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=60"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blessingcr.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=60"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}