{"id":21561,"date":"2025-10-30T16:24:21","date_gmt":"2025-10-30T16:24:21","guid":{"rendered":"https:\/\/pokecon.jp\/job\/?p=21561"},"modified":"2025-10-30T16:24:21","modified_gmt":"2025-10-30T16:24:21","slug":"mysql-innodb-%e3%81%ae%e3%83%ad%e3%83%83%e3%82%af%e7%af%84%e5%9b%b2%e3%81%ab%e6%b0%97%e3%82%92%e3%81%a4%e3%81%91%e3%82%88%e3%81%86","status":"publish","type":"post","link":"https:\/\/pokecon.jp\/job\/21561\/","title":{"rendered":"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046"},"content":{"rendered":"\n<\/p>\n<div>\n<p data-line=\"0\" class=\"code-line\">\u3053\u3093\u306b\u3061\u306f otsubo \u3067\u3059\u3002MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u306b\u3064\u3044\u3066\u6574\u7406\u3059\u308b\u6a5f\u4f1a\u304c\u3042\u3063\u305f\u306e\u3067\u8a18\u4e8b\u306b\u3057\u307e\u3059\u3002<\/p>\n<h2 id=\"%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB\" data-line=\"2\" class=\"code-line\">\n \u306f\u3058\u3081\u306b<\/h2>\n<p data-line=\"4\" class=\"code-line\">\u5168\u3066\u306e <a target=\"_blank\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-locking.html\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\u30ed\u30c3\u30af\u30bf\u30a4\u30d7<\/a> \u3092\u7db2\u7f85\u3059\u308b\u306e\u306f\u5927\u5909\u306a\u305f\u3081\u3001<\/p>\n<ul data-line=\"6\" class=\"code-line\">\n<li data-line=\"6\" class=\"code-line\">\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af<\/li>\n<li data-line=\"7\" class=\"code-line\">\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af<\/li>\n<li data-line=\"8\" class=\"code-line\">\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af<\/li>\n<\/ul>\n<p data-line=\"10\" class=\"code-line\">\u3092\u4e2d\u5fc3\u306b\u307e\u3068\u3081\u307e\u3059\u3002\u3053\u306e3\u3064\u306f\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5185\u3067 <code>UPDATE<\/code>\u3001<code>DELETE<\/code>\u3001 <code>SELECT ... FOR UPDATE \/ SHARE<\/code> \u3059\u308b\u3068\u304d\u306b\u7372\u5f97\u3055\u308c\u308b\u30ed\u30c3\u30af\u3067\u3059\u3002<code>INSERT<\/code> \u6642\u306e\u30a4\u30f3\u30b5\u30fc\u30c8\u30a4\u30f3\u30c6\u30f3\u30b7\u30e7\u30f3\u30ed\u30c3\u30af\u3082\u3061\u3087\u3063\u3068\u3060\u3051\u6271\u3044\u307e\u3059\u3002\u30c6\u30fc\u30d6\u30eb\u30ed\u30c3\u30af\u3084\u30e1\u30bf\u30c7\u30fc\u30bf\u30ed\u30c3\u30af\u306f\u6271\u3044\u307e\u305b\u3093\u3002<\/p>\n<p data-line=\"12\" class=\"code-line\">InnoDB \u3067\u306f\u30af\u30a8\u30ea\u306b\u3088\u3063\u3066\u7279\u5b9a\u306e\u300c\u7bc4\u56f2\u300d\u304c\u30ed\u30c3\u30af\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u3092\u77e5\u3089\u306a\u3044\u3068\u601d\u308f\u306c\u4e0d\u5177\u5408\u306b\u7e4b\u304c\u308a\u307e\u3059\u3002<\/p>\n<p data-line=\"14\" class=\"code-line\">\u7bc4\u56f2\u3092\u30ed\u30c3\u30af\u3057\u3066 InnoDB \u306f\u4f55\u3092\u5b9f\u73fe\u3057\u305f\u3044\u306e\u304b\u3001\u3069\u306e\u3088\u3046\u306a\u4ed5\u7d44\u307f\u3067\u30ed\u30c3\u30af\u3059\u308b\u306e\u304b\u3092\u77e5\u3063\u3066\u304a\u304f\u3068\u958b\u767a\u306b\u5f79\u7acb\u3061\u307e\u3059\u3002<\/p>\n<p data-line=\"16\" class=\"code-line\">\u8a18\u4e8b\u3092\u901a\u3057\u3066\u4e0b\u8a18\u3092\u524d\u63d0\u3068\u3057\u307e\u3059\u3002<\/p>\n<ul data-line=\"17\" class=\"code-line\">\n<li data-line=\"17\" class=\"code-line\">MySQL 8.0.43 with InnoDB<\/li>\n<li data-line=\"18\" class=\"code-line\">Isolation level: REPEATABLE READ\uff08\u30c7\u30d5\u30a9\u30eb\u30c8\u8a2d\u5b9a\uff09<\/li>\n<\/ul>\n<h2 id=\"%E7%AF%84%E5%9B%B2%E3%81%8C%E3%83%AD%E3%83%83%E3%82%AF%E3%81%95%E3%82%8C%E3%82%8B%E4%BE%8B\" data-line=\"21\" class=\"code-line\">\n \u7bc4\u56f2\u304c\u30ed\u30c3\u30af\u3055\u308c\u308b\u4f8b<\/h2>\n<p data-line=\"23\" class=\"code-line\">\u307e\u305a\u4f8b\u793a\u304b\u3089\u5165\u308a\u307e\u3059\u3002\u4f8b\u3092\u898b\u3066\u9a5a\u304d\u304c\u5927\u304d\u3051\u308c\u3070\u304d\u3063\u3068\u5bfe\u8c61\u8aad\u8005\u3067\u3059\u3002<\/p>\n<h3 id=\"%E8%A1%8C%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AB%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E4%BE%8B\" data-line=\"25\" class=\"code-line\">\n \u884c\u30ed\u30c3\u30af\u306b\u306a\u3089\u306a\u3044\u4f8b<\/h3>\n<p data-line=\"27\" class=\"code-line\">\u30b7\u30f3\u30d7\u30eb\u306a\u30af\u30a8\u30ea\u304b\u3089\u898b\u3066\u3044\u304d\u307e\u3057\u3087\u3046\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"29\"><span class=\"token keyword\">CREATE<\/span> <span class=\"token keyword\">TABLE<\/span> products <span class=\"token punctuation\">(<\/span>\n  id <span class=\"token keyword\">INT<\/span> <span class=\"token keyword\">PRIMARY<\/span> <span class=\"token keyword\">KEY<\/span><span class=\"token punctuation\">,<\/span>\n  name <span class=\"token keyword\">VARCHAR<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">255<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">NOT<\/span> <span class=\"token boolean\">NULL<\/span><span class=\"token punctuation\">,<\/span>\n  price <span class=\"token keyword\">INT<\/span> <span class=\"token operator\">NOT<\/span> <span class=\"token boolean\">NULL<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token keyword\">INDEX<\/span> idx_price <span class=\"token punctuation\">(<\/span>price<span class=\"token punctuation\">)<\/span> \n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> products <span class=\"token punctuation\">(<\/span>id<span class=\"token punctuation\">,<\/span> name<span class=\"token punctuation\">,<\/span> price<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">VALUES<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u5546\u54c11'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u5546\u54c12'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u5546\u54c13'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"43\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/c5c8e1231364-20251030.png\" alt=\"\u30c7\u30fc\u30bf\u6e96\u5099\u6642\u70b9\u3067\u306e\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u3068\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u6570\u76f4\u7dda\u4e0a\u306b\u8868\u73fe\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><br \/><em>\u30c7\u30fc\u30bf\u6e96\u5099\u6642\u70b9\u3067\u306e <code>products<\/code> \u306e\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u3068 <code>idx_price<\/code> \u306e\u30a4\u30e1\u30fc\u30b8<\/em><\/p>\n<p data-line=\"46\" class=\"code-line\">3\u3064\u306e\u5546\u54c1\u304c\u3042\u308b\u30c6\u30fc\u30d6\u30eb\u3067\u3001200\u5186\u306e\u5546\u54c1\u3092\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002\u6b21\u306b\u5225\u306e\u30bb\u30c3\u30b7\u30e7\u30f3\u3067100\u5186\u301c300\u5186\u306e\u65b0\u5546\u54c1\u3092 <code>INSERT<\/code> \u3057\u3066\u30ed\u30c3\u30af\u5f85\u3061\u306b\u306a\u308b\u306e\u306f\u3069\u308c\u3067\u3057\u3087\u3046\u304b\uff1f\u4e0b\u8a18\u4ee5\u5916\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u306f\u5b9f\u884c\u3055\u308c\u3066\u3044\u306a\u3044\u3082\u306e\u3068\u3057\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"48\">\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">BEGIN<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products <span class=\"token keyword\">WHERE<\/span> price <span class=\"token operator\">=<\/span> <span class=\"token number\">200<\/span> <span class=\"token keyword\">FOR<\/span> <span class=\"token keyword\">UPDATE<\/span><span class=\"token punctuation\">;<\/span>\n\n\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> products <span class=\"token keyword\">VALUES<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u65b0\u5546\u54c1A'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">100<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> products <span class=\"token keyword\">VALUES<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">5<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u65b0\u5546\u54c1B'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">150<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> products <span class=\"token keyword\">VALUES<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">6<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u65b0\u5546\u54c1C'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> products <span class=\"token keyword\">VALUES<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">7<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u65b0\u5546\u54c1D'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">250<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> products <span class=\"token keyword\">VALUES<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u65b0\u5546\u54c1E'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"61\" class=\"code-line\">\u7b54\u3048\u306f <strong>\u65b0\u5546\u54c1E\u3092\u9664\u304f\u5168\u3066\u304c\u30ed\u30c3\u30af\u5f85\u3061\u306b\u306a\u308b<\/strong> \u3067\u3059\u3002<\/p>\n<p data-line=\"63\" class=\"code-line\">\u3061\u306a\u307f\u306b\u3001\u65b0\u898f\u8ffd\u52a0\u3059\u308b\u5546\u54c1\u306e id \u304c4\u4ee5\u4e0a\u3067\u3042\u308c\u3070\u3001\u5024\u6bb5\u304c100\u5186\u301c299\u5186\u306e\u5834\u5408\u306b\u30ed\u30c3\u30af\u5f85\u3061\u306b\u306a\u308a\u307e\u3059\u3002\u3057\u304b\u3057\u300c\u30ed\u30c3\u30af\u7bc4\u56f2\u306f100\u5186\u304b\u3089299\u5186\u300d\u3068\u8a00\u3063\u3066\u3057\u307e\u3046\u3068\u305d\u308c\u306f\u8aa4\u308a\u3067\u3059\u3002<\/p>\n<p data-line=\"65\" class=\"code-line\">\u4e8b\u60c5\u3092\u77e5\u3089\u306a\u3044\u3068\u69d8\u3005\u306a\u7591\u554f\u304c\u6d6e\u304b\u3076\u306e\u3067\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u304b\u3002\u884c\u30ed\u30c3\u30af\u3057\u304b\u77e5\u3089\u306a\u304b\u3063\u305f\u904e\u53bb\u306e\u81ea\u5206\u306f\u5927\u6df7\u4e71\u3067\u3057\u305f\u3002<\/p>\n<ol data-line=\"67\" class=\"code-line\">\n<li data-line=\"67\" class=\"code-line\">\u65b0\u5546\u54c1C\u4ee5\u5916\u306e <code>INSERT<\/code> \u306f\u5f85\u3063\u3066\u3082\u3089\u3046\u5fc5\u8981\u3042\u308b\uff1f<\/li>\n<li data-line=\"68\" class=\"code-line\">\u306a\u305c\u5e83\u3044\u7bc4\u56f2\u304c\u30ed\u30c3\u30af\u3055\u308c\u308b\uff1f<\/li>\n<li data-line=\"69\" class=\"code-line\">\u300c\u30ed\u30c3\u30af\u7bc4\u56f2\u306f100\u5186\u304b\u3089299\u5186\u300d\u304c\u8aa4\u308a\u306a\u3089\u3069\u3053\u304b\u3089\u3069\u3053\u307e\u3067\u304c\u30ed\u30c3\u30af\u7bc4\u56f2\uff1f\u65b0\u5546\u54c1A\u3068E\u306b\u5dee\u304c\u51fa\u305f\u306e\u306f\u306a\u305c\uff1f<\/li>\n<\/ol>\n<p data-line=\"71\" class=\"code-line\">\u6025\u304e\u7d50\u8ad6\u3092\u77e5\u308a\u305f\u3044\u4eba\u306e\u305f\u3081\u3001\u591a\u5c11\u306e\u4e0d\u6b63\u78ba\u3055\u3092\u627f\u77e5\u3067\u56de\u7b54\u3092\u307e\u3068\u3081\u307e\u3059\u3002<\/p>\n<ol data-line=\"73\" class=\"code-line\">\n<li data-line=\"73\" class=\"code-line\">\u672c\u6765\u306f\u65b0\u5546\u54c1C\u4ee5\u5916\u306f <code>INSERT<\/code> \u3092\u5f85\u3063\u3066\u3082\u3089\u3046\u5fc5\u8981\u306f\u306a\u3044\n<ul data-line=\"74\" class=\"code-line\">\n<li data-line=\"74\" class=\"code-line\">\u6b63\u78ba\u306b\u306f\u3001200\u5186\u306e\u5546\u54c1\u306e\u8ffd\u52a0\u3055\u3048\u5f85\u3063\u3066\u3082\u3089\u3048\u3070\u826f\u3044<\/li>\n<\/ul>\n<\/li>\n<li data-line=\"75\" class=\"code-line\">\u5225\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u3067200\u5186\u306e\u5546\u54c1\u304c <code>INSERT<\/code> \u3055\u308c\u308b\u306e\u3092\u9632\u3050\u76ee\u7684\u3067\u300c200\u5186\u306e\u5546\u54c1\u304c\u65b0\u898f\u8ffd\u52a0\u3055\u308c\u305d\u3046\u306a\u7bc4\u56f2\u300d\u3092\u30ed\u30c3\u30af\u3057\u305f\u304b\u3089\n<ul data-line=\"76\" class=\"code-line\">\n<li data-line=\"76\" class=\"code-line\">\u305d\u306e\u7d50\u679c\u3001\u672c\u6765\u5f85\u305f\u3055\u308c\u306a\u304f\u3066\u3082\u826f\u3044\u306f\u305a\u306e <code>INSERT<\/code> \u304c\u5f85\u305f\u3055\u308c\u305f<\/li>\n<li data-line=\"77\" class=\"code-line\">InnoDB \u306e\u4ed5\u7d44\u307f\u4e0a <code>INSERT<\/code> \u3092\u5f85\u3063\u3066\u3082\u3089\u3046\u306b\u306f\u7bc4\u56f2\uff08\u30ae\u30e3\u30c3\u30d7\uff09\u3092\u30ed\u30c3\u30af\u3059\u308b\u3057\u304b\u306a\u3044<\/li>\n<\/ul>\n<\/li>\n<li data-line=\"78\" class=\"code-line\">\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 <code>idx_price<\/code> \u306e <code>(price=100, id=1) ~ (price=300, id=3)<\/code> \u304c <code>SELECT ... FOR UPDATE<\/code> \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\n<ul data-line=\"79\" class=\"code-line\">\n<li data-line=\"79\" class=\"code-line\">\u30ed\u30c3\u30af\u3055\u308c\u305f\u306e\u306f\u3053\u3053\u3060\u3051\u3067\u306f\u306a\u3044\u304c\u3001\u65b0\u5546\u54c1\u306e <code>INSERT<\/code> \u3068\u885d\u7a81\u3057\u305f\u306e\u306f\u3053\u306e\u7bc4\u56f2<\/li>\n<li data-line=\"80\" class=\"code-line\">\u65b0\u5546\u54c1A\u306e <code>idx_price<\/code> \u306f <code>(price=100, id=4)<\/code> \u3067\u30ed\u30c3\u30af\u7bc4\u56f2\u3068\u885d\u7a81\u3057\u305f\u3002B, C, D \u3082\u540c\u3058\u304f<\/li>\n<li data-line=\"81\" class=\"code-line\">\u65b0\u5546\u54c1E\u306e <code>idx_price<\/code> \u306f <code>(price=300, id=8)<\/code> \u3067\u30ed\u30c3\u30af\u7bc4\u56f2\u3068\u885d\u7a81\u3057\u306a\u304b\u3063\u305f<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p data-line=\"83\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/4992be220419-20251029.png\" alt=\"\u30ed\u30c3\u30af\u3055\u308c\u305f\u7bc4\u56f2\u3068\u65b0\u5546\u54c1\u306e\u633f\u5165\u4f4d\u7f6e\u3092\u6570\u76f4\u7dda\u4e0a\u306b\u8868\u73fe\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<h3 id=\"%E3%83%87%E3%83%83%E3%83%89%E3%83%AD%E3%83%83%E3%82%AF%E3%81%A7%E5%9B%B0%E3%82%8B%E4%BE%8B\" data-line=\"85\" class=\"code-line\">\n \u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3067\u56f0\u308b\u4f8b<\/h3>\n<p data-line=\"87\" class=\"code-line\">\u4e00\u77ac\u306e\u30ed\u30c3\u30af\u5f85\u3061\u7a0b\u5ea6\u306a\u3089\u56f0\u3089\u306a\u3044\u3067\u3059\u304c\u3001\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u304c\u767a\u751f\u3059\u308b\u3068\u5bfe\u51e6\u3092\u8feb\u3089\u308c\u307e\u3059\u3002\u3082\u3046\u5c11\u3057\u73fe\u5b9f\u7684\u306a\u4f8b\u3092\u6319\u3052\u307e\u3059\u3002<\/p>\n<p data-line=\"89\" class=\"code-line\"><code>BlogPost has many Tags<\/code> \u306e\u95a2\u4fc2\u3067\u3001\u30d6\u30ed\u30b0\u8a18\u4e8b\u306e\u30bf\u30b0\u3092\u66f4\u65b0\u3059\u308b\u51e6\u7406\u3092\u8003\u3048\u307e\u3059\u3002\u884c\u6570\u306e\u90fd\u5408\u3067 <code>BlogPost<\/code> \u3068 <code>Tag<\/code> \u304c 1:N \u3067\u3059\u304c\u3001\u4e2d\u9593\u30c6\u30fc\u30d6\u30eb\u3092\u7528\u3044\u3066 N:N \u306b\u3057\u3066\u3082\u672c\u8cea\u306f\u5909\u308f\u308a\u307e\u305b\u3093\u3002<\/p>\n<p data-line=\"91\" class=\"code-line\">\u203b \u540c\u4e00 <code>BlogPost<\/code> \u306e\u540c\u6642\u7de8\u96c6\u306f\u8003\u3048\u306a\u3044\u3053\u3068\u306b\u3057\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"93\"><span class=\"token keyword\">CREATE<\/span> <span class=\"token keyword\">TABLE<\/span> blog_posts <span class=\"token punctuation\">(<\/span>\n  id <span class=\"token keyword\">INT<\/span> <span class=\"token keyword\">PRIMARY<\/span> <span class=\"token keyword\">KEY<\/span><span class=\"token punctuation\">,<\/span>\n  title <span class=\"token keyword\">VARCHAR<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">255<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">NOT<\/span> <span class=\"token boolean\">NULL<\/span><span class=\"token punctuation\">,<\/span>\n  content <span class=\"token keyword\">TEXT<\/span> <span class=\"token operator\">NOT<\/span> <span class=\"token boolean\">NULL<\/span>\n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token keyword\">CREATE<\/span> <span class=\"token keyword\">TABLE<\/span> tags <span class=\"token punctuation\">(<\/span>\n  blog_id <span class=\"token keyword\">INT<\/span><span class=\"token punctuation\">,<\/span>\n  name <span class=\"token keyword\">VARCHAR<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">255<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token keyword\">PRIMARY<\/span> <span class=\"token keyword\">KEY<\/span> <span class=\"token punctuation\">(<\/span>blog_id<span class=\"token punctuation\">,<\/span> name<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> \n  <span class=\"token keyword\">FOREIGN<\/span> <span class=\"token keyword\">KEY<\/span> <span class=\"token punctuation\">(<\/span>blog_id<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">REFERENCES<\/span> blog_posts<span class=\"token punctuation\">(<\/span>id<span class=\"token punctuation\">)<\/span>\n<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> blog_posts <span class=\"token punctuation\">(<\/span>id<span class=\"token punctuation\">,<\/span> title<span class=\"token punctuation\">,<\/span> content<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">VALUES<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u304a\u6599\u7406\u306e\u8a18\u4e8b'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u304a\u6e6f\u3092\u6ce8\u3050\u3068\u5b8c\u6210\u3057\u307e\u3059'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u6280\u8853\u306e\u8a18\u4e8b'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'Tab \u3092\u9023\u6253\u3059\u308b\u3068\u5b8c\u6210\u3057\u307e\u3059'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u65e5\u5831A'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u7de8\u96c6\u4e2d...'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">4<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u65e5\u5831B'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u7de8\u96c6\u4e2d...'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> tags <span class=\"token punctuation\">(<\/span>blog_id<span class=\"token punctuation\">,<\/span> name<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">VALUES<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'Cooking'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'Copilot'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n  <span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'Programming'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"118\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/d45f055e9750-20251030.png\" alt=\"\u30c7\u30fc\u30bf\u6e96\u5099\u6642\u70b9\u3067\u306e\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u3068\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u6570\u76f4\u7dda\u4e0a\u306b\u8868\u73fe\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><br \/><em>\u30c7\u30fc\u30bf\u6e96\u5099\u6642\u70b9\u3067\u306e <code>tags<\/code> \u306e\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u306e\u30a4\u30e1\u30fc\u30b8\uff08<code>blog_posts<\/code> \u306f\u5909\u66f4\u3057\u306a\u3044\u305f\u3081\u5272\u611b\uff09<\/em><\/p>\n<h4 id=\"%E6%94%B9%E5%96%84%E5%89%8D%EF%BC%88%E7%A9%BA%E6%8C%AF%E3%82%8A%EF%BC%89\" data-line=\"121\" class=\"code-line\">\n \u6539\u5584\u524d\uff08\u7a7a\u632f\u308a\uff09<\/h4>\n<p data-line=\"123\" class=\"code-line\">\u4e0b\u8a18\u306f\u5358\u4f53\u3067\u306f\u554f\u984c\u306a\u304f\u52d5\u304d\u307e\u3059\u304c\u3001\u30a2\u30d7\u30ea\u304c\u4e26\u5217\u306b\u52d5\u304f\u5834\u5408\u3001\u5229\u7528\u8005\u304c\u5897\u3048\u308b\u3068\u9ad8\u78ba\u7387\u3067\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u304c\u767a\u751f\u3057\u307e\u3059\u3002Rails \u3092\u4f7f\u3063\u3066\u3044\u307e\u3059\u304c\u3001\u7279\u5b9a ORM \u306b\u56fa\u6709\u306e\u554f\u984c\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-ruby\"><code class=\"language-ruby code-line\" data-line=\"125\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">BlogPost<\/span> <span class=\"token operator\"> ApplicationRecord\n  has_many <span class=\"token symbol\">:tags<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token symbol\">foreign_key<\/span><span class=\"token operator\">:<\/span> <span class=\"token symbol\">:blog_id<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token symbol\">dependent<\/span><span class=\"token operator\">:<\/span> <span class=\"token symbol\">:destroy<\/span>\n\n  <span class=\"token keyword\">def<\/span> <span class=\"token method-definition\"><span class=\"token function\">update_tags<\/span><\/span><span class=\"token punctuation\">(<\/span>tag_names<span class=\"token punctuation\">)<\/span> \n    transaction <span class=\"token keyword\">do<\/span>\n      \n      tags<span class=\"token punctuation\">.<\/span>delete_all \n      \n      \n      tags<span class=\"token punctuation\">.<\/span>insert_all<span class=\"token punctuation\">(<\/span>tag_names<span class=\"token punctuation\">.<\/span>map <span class=\"token punctuation\">{<\/span> <span class=\"token operator\">|<\/span>tag_name<span class=\"token operator\">|<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token symbol\">name<\/span><span class=\"token operator\">:<\/span> tag_name <span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span> \n    <span class=\"token keyword\">end<\/span>\n  <span class=\"token keyword\">end<\/span>\n<span class=\"token keyword\">end<\/span>\n<\/span><\/code><\/pre>\n<\/div>\n<details>\n<summary>Tag \u30e2\u30c7\u30eb\u3082\u4e00\u5fdc<\/summary>\n<div class=\"details-content\">\n<div class=\"code-block-container\">\n<pre class=\"language-ruby\"><code class=\"language-ruby code-line\" data-line=\"143\"><span class=\"token keyword\">class<\/span> <span class=\"token class-name\">Tag<\/span> <span class=\"token operator\"> ApplicationRecord\n  <span class=\"token keyword\">self<\/span><span class=\"token punctuation\">.<\/span>primary_key <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span> <span class=\"token symbol\">:blog_id<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token symbol\">:name<\/span> <span class=\"token punctuation\">]<\/span>\n  belongs_to <span class=\"token symbol\">:blog<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token symbol\">class_name<\/span><span class=\"token operator\">:<\/span> <span class=\"token string-literal\"><span class=\"token string\">\"BlogPost\"<\/span><\/span><span class=\"token punctuation\">,<\/span> <span class=\"token symbol\">foreign_key<\/span><span class=\"token operator\">:<\/span> <span class=\"token symbol\">:blog_id<\/span>\n<span class=\"token keyword\">end<\/span>\n<\/span><\/code><\/pre>\n<\/div>\n<\/div>\n<\/details>\n<p data-line=\"152\" class=\"code-line\">\u540c\u6642\u64cd\u4f5c\u3092\u518d\u73fe\u3059\u308b\u305f\u3081 <code>sleep 10<\/code> \u306e\u30b3\u30e1\u30f3\u30c8\u3092\u5916\u3057\u3001rails console \u30922\u3064\u8d77\u52d5\u3057\u3066\u4ee5\u4e0b\u3092\u5b9f\u884c\u3059\u308b\u3068\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u304c\u767a\u751f\u3057\u307e\u3059\uff1a<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-ruby\"><code class=\"language-ruby code-line\" data-line=\"153\">BlogPost<span class=\"token punctuation\">.<\/span>find<span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>update_tags<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string-literal\"><span class=\"token string\">'Tag1'<\/span><\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> \nBlogPost<span class=\"token punctuation\">.<\/span>find<span class=\"token punctuation\">(<\/span><span class=\"token number\">4<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>update_tags<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string-literal\"><span class=\"token string\">'Tag2'<\/span><\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> \n<\/code><\/pre>\n<\/div>\n<p data-line=\"158\" class=\"code-line\">\u554f\u984c\u306f\u3001\u524a\u9664\u3059\u3079\u304d\u30bf\u30b0\u306e\u6709\u7121\u306b\u95a2\u308f\u3089\u305a <code>DELETE FROM tags WHERE blog_id = ?<\/code> \u3092\u5b9f\u884c\u3057\u3066\u3044\u308b\u3053\u3068\u3067\u3059\u3002\u300c<code>WHERE<\/code> \u306e\u6761\u4ef6\u304c\u7a7a\u632f\u308a\u3059\u308b\u3068\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u304c\u767a\u751f\u3059\u308b\u300d\u307f\u305f\u3044\u306a\u6ce8\u610f\u3092\u805e\u3044\u305f\u3053\u3068\u306f\u306a\u3044\u3067\u3057\u3087\u3046\u304b\u3002\u4eca\u56de\u306f\u305d\u306e\u30d1\u30bf\u30fc\u30f3\u3067\u3059\u3002<\/p>\n<p data-line=\"160\" class=\"code-line\">\u3053\u306e <code>DELETE<\/code> \u306f\u3001tags \u306e\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u306e\u8d85\u5e83\u7bc4\u56f2\u3092\u30ed\u30c3\u30af\u3057\u5408\u3044\u307e\u3059\u3002<\/p>\n<ul data-line=\"162\" class=\"code-line\">\n<li data-line=\"162\" class=\"code-line\">session 1 \u304c <code>(blog_id=2, name=\"Programming\") ~ <\/code> \u3092\u30ed\u30c3\u30af\n<ul data-line=\"163\" class=\"code-line\">\n<li data-line=\"163\" class=\"code-line\">blog_id \u304c2\u3088\u308a\u5927\u304d\u3044\u7bc4\u56f2\u3092\u307b\u307c\u5168\u90e8\u30ed\u30c3\u30af<\/li>\n<\/ul>\n<\/li>\n<li data-line=\"164\" class=\"code-line\">session 2 \u3082 <code>(blog_id=2, name=\"Programming\") ~ <\/code> \u3092\u30ed\u30c3\u30af\n<ul data-line=\"165\" class=\"code-line\">\n<li data-line=\"165\" class=\"code-line\">\u203b \u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u540c\u58eb\u306f\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u3057\u306a\u3044\u306e\u3067\u3053\u3053\u307e\u3067\u306f\u6210\u529f\u3057\u307e\u3059<\/li>\n<\/ul>\n<\/li>\n<li data-line=\"166\" class=\"code-line\">session 1\u300csession 2 \u541b\u304c\u30ed\u30c3\u30af\u3057\u3066\u3044\u308b\u306e\u3067 <code>(blog_id=3, name=\"Tag1\")<\/code> \u3092\u8ffd\u52a0\u3067\u304d\u306a\u3044\u3063\u3059\u300d<\/li>\n<li data-line=\"167\" class=\"code-line\">session 2\u300csession 1 \u541b\u304c\u30ed\u30c3\u30af\u3057\u3066\u3044\u308b\u306e\u3067 <code>(blog_id=4, name=\"Tag2\")<\/code> \u3092\u8ffd\u52a0\u3067\u304d\u306a\u3044\u3063\u3059\u300d<\/li>\n<\/ul>\n<p data-line=\"169\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/b879669d87e6-20251029.png\" alt=\"\u30ed\u30c3\u30af\u3055\u308c\u305f\u7bc4\u56f2\u3068\u65b0\u5546\u54c1\u306e\u633f\u5165\u4f4d\u7f6e\u3092\u6570\u76f4\u7dda\u4e0a\u306b\u8868\u73fe\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"171\" class=\"code-line\"><code>DELETE ... WHERE blog_id = 3 or 4<\/code> \u3092\u5b9f\u884c\u3057\u305f\u3060\u3051\u3067\u5e83\u3044\u7bc4\u56f2\u304c\u30ed\u30c3\u30af\u3055\u308c\u307e\u3057\u305f\u3002\u3053\u308c\u3082\u300c<code>blog_id=3 or 4<\/code> \u306a\u30ec\u30b3\u30fc\u30c9\u304c <code>INSERT<\/code> \u3055\u308c\u3046\u308b\u7bc4\u56f2\u306e\u30ed\u30c3\u30af\u300d\u304c\u767a\u751f\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h4 id=\"%E7%A9%BA%E6%8C%AF%E3%82%8A%E3%82%92%E5%9B%9E%E9%81%BF%EF%BC%88%E3%81%97%E3%81%A6%E3%82%82%E4%B8%8D%E5%AE%8C%E5%85%A8%EF%BC%89\" data-line=\"173\" class=\"code-line\">\n \u7a7a\u632f\u308a\u3092\u56de\u907f\uff08\u3057\u3066\u3082\u4e0d\u5b8c\u5168\uff09<\/h4>\n<p data-line=\"175\" class=\"code-line\"><code>WHERE<\/code> \u306e\u7a7a\u632f\u308a\u3092\u9632\u3052\u3070\u304a\u304a\u3080\u306d\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u3092\u56de\u907f\u3067\u304d\u307e\u3059\u304c\u5b8c\u5168\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002<br \/><code>.presence<\/code> \u3067\u7a7a\u632f\u308a\u3092\u56de\u907f\u3057\u3066\u307f\u307e\u3057\u305f\uff1a<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-ruby\"><code class=\"language-ruby code-line\" data-line=\"178\">transaction <span class=\"token keyword\">do<\/span>\n  \n  tags<span class=\"token punctuation\">.<\/span>presence<span class=\"token operator\">&amp;.<\/span>delete_all\n  tags<span class=\"token punctuation\">.<\/span>insert_all<span class=\"token punctuation\">(<\/span>tag_names<span class=\"token punctuation\">.<\/span>map <span class=\"token punctuation\">{<\/span> <span class=\"token operator\">|<\/span>tag_name<span class=\"token operator\">|<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token symbol\">name<\/span><span class=\"token operator\">:<\/span> tag_name <span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">end<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"186\" class=\"code-line\">\u4e0b\u8a18\u3067\u306f\u524a\u9664\u3059\u3079\u304d tags \u304c\u3042\u308b\u305f\u3081\u7a7a\u632f\u308a\u3057\u307e\u305b\u3093\u304c\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u304c\u767a\u751f\u3057\u307e\u3059\uff1a<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-ruby\"><code class=\"language-ruby code-line\" data-line=\"187\">BlogPost<span class=\"token punctuation\">.<\/span>find<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>update_tags<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string-literal\"><span class=\"token string\">'Noodle'<\/span><\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> \nBlogPost<span class=\"token punctuation\">.<\/span>find<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>update_tags<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string-literal\"><span class=\"token string\">'AI'<\/span><\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> \n<\/code><\/pre>\n<\/div>\n<p data-line=\"192\" class=\"code-line\">\u554f\u984c\u306f <code>DELETE FROM tags WHERE blog_id = ?<\/code> \u306e\u691c\u7d22\u6761\u4ef6\u304c unique search condition \u3067\u306f\u306a\u3044\u3053\u3068\u3067\u3059\u3002\u691c\u7d22\u306b\u4f7f\u308f\u308c\u308b\u306e\u306f\u78ba\u304b\u306b tags \u306e\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\uff08\u30e6\u30cb\u30fc\u30af\u306a\u30ad\u30fc\uff09\u306a\u306e\u3067\u3059\u304c\u3001\u691c\u7d22\u6761\u4ef6\u304c <code>blog_id<\/code> \u306e\u307f\u306a\u306e\u3067\u884c\u30ed\u30c3\u30af\u3067\u306f\u306a\u304f\u7bc4\u56f2\u306b\u30ed\u30c3\u30af\u304c\u304b\u304b\u308a\u307e\u3059\u3002<a target=\"_blank\" href=\"#%E3%83%AD%E3%83%83%E3%82%AF%E7%A8%AE%E5%88%A5%E3%81%AE%E6%B1%BA%E5%AE%9A%E6%96%B9%E6%B3%95\">\u30ed\u30c3\u30af\u7a2e\u5225\u306e\u6c7a\u5b9a\u65b9\u6cd5<\/a> \u3067\u8a73\u3057\u304f\u8aac\u660e\u3057\u307e\u3059\u3002<\/p>\n<p data-line=\"194\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/ce08ed225717-20251029.png\" alt=\"\u30ed\u30c3\u30af\u3055\u308c\u305f\u7bc4\u56f2\u3068\u65b0\u5546\u54c1\u306e\u633f\u5165\u4f4d\u7f6e\u3092\u6570\u76f4\u7dda\u4e0a\u306b\u8868\u73fe\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<h4 id=\"%E8%A1%8C%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AE%E4%BD%BF%E7%94%A8\" data-line=\"196\" class=\"code-line\">\n \u884c\u30ed\u30c3\u30af\u306e\u4f7f\u7528<\/h4>\n<p data-line=\"198\" class=\"code-line\">\u4e0a\u306e\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u307e\u3067\u3057\u3063\u304b\u308a\u56de\u907f\u3057\u305f\u3044\u5834\u5408\u306f\u3001\u30e6\u30cb\u30fc\u30af\u30ad\u30fc\u306e\u5168\u3066\u306e\u30ab\u30e9\u30e0\u3092\u691c\u7d22\u6761\u4ef6\u306b\u6307\u5b9a\u3057\u307e\u3059\u3002\u53ef\u8aad\u6027\u306f\u843d\u3061\u307e\u3059\u304c\u3001\u3053\u3046\u3059\u308b\u3068 <code>(blog_id=2, name=\"Copilot\")<\/code> \u3068 <code>(blog_id=2, name=\"Programming\")<\/code> \u306a\u3069\u306e\u884c\u30ed\u30c3\u30af\u306e\u307f\u304c\u304b\u304b\u308a\u307e\u3059\u3002\u7bc4\u56f2\u306f\u30ed\u30c3\u30af\u3055\u308c\u306a\u3044\u305f\u3081\u3001\u7570\u306a\u308b blog_id \u3068\u306e\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u304c\u56de\u907f\u3067\u304d\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-ruby\"><code class=\"language-ruby code-line\" data-line=\"200\">transaction <span class=\"token keyword\">do<\/span>\n  \n  tags<span class=\"token punctuation\">.<\/span>where<span class=\"token punctuation\">(<\/span><span class=\"token symbol\">name<\/span><span class=\"token operator\">:<\/span> tags<span class=\"token punctuation\">.<\/span>map<span class=\"token punctuation\">(<\/span><span class=\"token operator\">&amp;<\/span><span class=\"token symbol\">:name<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>presence<span class=\"token operator\">&amp;.<\/span>delete_all\n  tags<span class=\"token punctuation\">.<\/span>insert_all<span class=\"token punctuation\">(<\/span>tag_names<span class=\"token punctuation\">.<\/span>map <span class=\"token punctuation\">{<\/span> <span class=\"token operator\">|<\/span>tag_name<span class=\"token operator\">|<\/span> <span class=\"token punctuation\">{<\/span> <span class=\"token symbol\">name<\/span><span class=\"token operator\">:<\/span> tag_name <span class=\"token punctuation\">}<\/span> <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">end<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"208\" class=\"code-line\">Rails \u306a\u3089 <code>destroy_all<\/code> \u3092\u4f7f\u3063\u30661\u4ef6\u305a\u3064\u30bf\u30b0\u3092\u524a\u9664\u3059\u308b\u3053\u3068\u3067\u3082\u30c7\u30c3\u30c9\u30ed\u30c3\u30af\u306f\u56de\u907f\u3067\u304d\u307e\u3059\u3002\u3069\u3046\u3059\u308b\u304b\u306f\u53ef\u8aad\u6027\u3084\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u3068\u306e\u517c\u306d\u5408\u3044\u306b\u306a\u308b\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p data-line=\"210\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/aadfe85d1dd8-20251029.png\" alt=\"\u30ed\u30c3\u30af\u3055\u308c\u305f\u7bc4\u56f2\u3068\u65b0\u5546\u54c1\u306e\u633f\u5165\u4f4d\u7f6e\u3092\u6570\u76f4\u7dda\u4e0a\u306b\u8868\u73fe\u3002\u3053\u3053\u3067\u30ed\u30c3\u30af\u3055\u308c\u305f\u306e\u306f\u884c\u306e\u307f\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"212\" class=\"code-line\">\u306a\u305c\u300c\u7bc4\u56f2\u300d\u304c\u30ed\u30c3\u30af\u3055\u308c\u308b\u306e\u304b\u3001\u306a\u305c\u884c\u30ed\u30c3\u30af\u306e\u307f\u3067\u6e08\u3080\u5834\u5408\u304c\u3042\u308b\u306e\u304b\u3001\u4ee5\u964d\u3067\u30ed\u30c3\u30af\u306e\u76ee\u7684\u3068 InnoDB \u304c\u30ed\u30c3\u30af\u3092\u5b9f\u73fe\u3059\u308b\u4ed5\u7d44\u307f\u3092\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<h2 id=\"%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AE%E7%9B%AE%E7%9A%84\" data-line=\"215\" class=\"code-line\">\n \u30ed\u30c3\u30af\u306e\u76ee\u7684<\/h2>\n<p data-line=\"217\" class=\"code-line\">\u305d\u3082\u305d\u3082\u30ed\u30c3\u30af\u306b\u3088\u3063\u3066\u5b9f\u73fe\u3057\u305f\u3044\u3053\u3068\u306f\u4f55\u3067\u3057\u3087\u3046\u304b\u3002\u7279\u306b\u3001\u3059\u3067\u306b\u3042\u308b\u30ec\u30b3\u30fc\u30c9\u3060\u3051\u3067\u306f\u306a\u304f\u300c\u7bc4\u56f2\u300d\u306b\u30ed\u30c3\u30af\u304c\u5fc5\u8981\u306b\u306a\u308b\u306e\u306f\u306a\u305c\u3067\u3057\u3087\u3046\u304b\u3002<\/p>\n<h3 id=\"%E3%82%A2%E3%83%8E%E3%83%9E%E3%83%AA%E3%83%BC\" data-line=\"219\" class=\"code-line\">\n \u30a2\u30ce\u30de\u30ea\u30fc<\/h3>\n<p data-line=\"221\" class=\"code-line\">\u8907\u6570\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c\u540c\u6642\u306b\u5b9f\u884c\u3055\u308c\u3066\u8d77\u3053\u308b\u4e0d\u6574\u5408\u306e\u7dcf\u79f0\u3092\u30a2\u30ce\u30de\u30ea\u30fc\u3068\u8a00\u3044\u307e\u3059\u3002<\/p>\n<p data-line=\"223\" class=\"code-line\">\u30ed\u30c3\u30af\u306b\u3088\u3063\u3066\u5b9f\u73fe\u3057\u305f\u3044\u306e\u306f\u3001\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c\u4e00\u5ea6\u691c\u7d22\u3057\u305f\u7bc4\u56f2\uff08\u5546\u54c1\u306e\u4f8b\u3060\u3068 <code>price=200<\/code> \u306b\u30d2\u30c3\u30c8\u3059\u308b\u7bc4\u56f2\uff09\u306b\u5bfe\u3057\u3066\u5225\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c\u4f55\u304b\u3057\u3089\u306e\u5909\u66f4\u3092\u52a0\u3048\u3066\u3057\u307e\u3046\u30a2\u30ce\u30de\u30ea\u30fc\u3092\u9632\u6b62\u3059\u308b\u3053\u3068\u3067\u3059\u3002\u7279\u306b\u3001InnoDB \u306e REPEATABLE READ \u5206\u96e2\u30ec\u30d9\u30eb\u3067\u306f\u300c\u30d5\u30a1\u30f3\u30c8\u30e0\u884c\u300d\u306b\u95a2\u3059\u308b\u30a2\u30ce\u30de\u30ea\u30fc\u3092\u9632\u6b62\u3057\u307e\u3059\u3002<\/p>\n<p data-line=\"225\" class=\"code-line\">\u300c\u30d5\u30a1\u30f3\u30c8\u30e0\u884c\u300d\u3068\u306f\u3001\u3042\u308b\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c\u691c\u7d22\u3057\u305f\uff08\u3042\u308b\u3044\u306f\u5909\u66f4\u3092\u52a0\u3048\u305f\uff09\u7bc4\u56f2\u5185\u306b\u3001\u5225\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c <code>INSERT<\/code> \u3059\u308b\u884c\u306e\u3053\u3068\u3067\u3059\u3002\u300c\u30d5\u30a1\u30f3\u30c8\u30e0\u884c\u300d\u306b\u5bfe\u3057\u3066 <code>UPDATE<\/code> \u3084 <code>DELETE<\/code> \u3092\u9069\u7528\u3057\u3066\u3057\u307e\u3046\u3068\u3001\u4ee5\u4e0b\u306e\u3088\u3046\u306a\u4e0d\u6574\u5408\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"229\">\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">BEGIN<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products <span class=\"token keyword\">WHERE<\/span> price <span class=\"token operator\">=<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">;<\/span>\n\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> id <span class=\"token operator\">|<\/span> name         <span class=\"token operator\">|<\/span> price <span class=\"token operator\">|<\/span> discount <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span>  <span class=\"token number\">1<\/span> <span class=\"token operator\">|<\/span> \u58f2\u308c\u6b8b\u308a     <span class=\"token operator\">|<\/span>   <span class=\"token number\">200<\/span> <span class=\"token operator\">|<\/span>        <span class=\"token number\">0<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span>  <span class=\"token number\">2<\/span> <span class=\"token operator\">|<\/span> \u8a33\u3042\u308a       <span class=\"token operator\">|<\/span>   <span class=\"token number\">200<\/span> <span class=\"token operator\">|<\/span>        <span class=\"token number\">0<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n\n\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> products <span class=\"token keyword\">VALUES<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u65b0\u5546\u54c1'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\n\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">UPDATE<\/span> products <span class=\"token keyword\">SET<\/span> discount <span class=\"token operator\">=<\/span> <span class=\"token number\">100<\/span> <span class=\"token keyword\">WHERE<\/span> price <span class=\"token operator\">=<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">COMMIT<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products <span class=\"token keyword\">WHERE<\/span> price <span class=\"token operator\">=<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> id <span class=\"token operator\">|<\/span> name         <span class=\"token operator\">|<\/span> price <span class=\"token operator\">|<\/span> discount <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span>  <span class=\"token number\">1<\/span> <span class=\"token operator\">|<\/span> \u58f2\u308c\u6b8b\u308a     <span class=\"token operator\">|<\/span>   <span class=\"token number\">200<\/span> <span class=\"token operator\">|<\/span>      <span class=\"token number\">100<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span>  <span class=\"token number\">2<\/span> <span class=\"token operator\">|<\/span> \u8a33\u3042\u308a       <span class=\"token operator\">|<\/span>   <span class=\"token number\">200<\/span> <span class=\"token operator\">|<\/span>      <span class=\"token number\">100<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span>  <span class=\"token number\">3<\/span> <span class=\"token operator\">|<\/span> \u65b0\u5546\u54c1       <span class=\"token operator\">|<\/span>   <span class=\"token number\">200<\/span> <span class=\"token operator\">|<\/span>      <span class=\"token number\">100<\/span> <span class=\"token operator\">|<\/span> \n<span class=\"token operator\">+<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"257\" class=\"code-line\">\u65b0\u5546\u54c1\u307e\u3067\u534a\u984d\u306b\u306a\u3063\u3066\u3057\u307e\u3044\u307e\u3057\u305f\u3002session 1 \u8996\u70b9\u3067\u306f\u3001200\u5186\u306e\u5546\u54c1\u306f\u58f2\u308c\u6b8b\u308a\u3068\u8a33\u3042\u308a\u5546\u54c1\u306e\u307f\u3060\u3063\u305f\u306e\u306b\u3002\u3053\u308c\u304c\u65b0\u5546\u54c1 (id=3) \u3068\u3044\u3046\u300c\u30d5\u30a1\u30f3\u30c8\u30e0\u884c\u300d\u306b <code>UPDATE<\/code> \u304c\u9069\u7528\u3055\u308c\u305f\u72b6\u6cc1\u3067\u3059\u3002<\/p>\n<p data-line=\"259\" class=\"code-line\"><code>SELECT ... FOR UPDATE<\/code> \u3067\u30ed\u30c3\u30af\u3057\u3066\u3044\u308c\u3070\u3001<a target=\"_blank\" href=\"#%E8%A1%8C%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AB%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E4%BE%8B\">\u6700\u521d\u306e\u4f8b<\/a>\u3067\u898b\u305f\u3088\u3046\u306b <code>price=200<\/code> \u3092\u542b\u3080\u7bc4\u56f2\u3078\u306e <code>INSERT<\/code> \u306f\u30ed\u30c3\u30af\u5f85\u3061\u306b\u306a\u308b\u305f\u3081\u610f\u56f3\u305b\u306c\u5909\u66f4\u3092\u9632\u6b62\u3067\u304d\u307e\u3057\u305f\u3002<\/p>\n<p data-line=\"261\" class=\"code-line\">\u300c\u30d5\u30a1\u30f3\u30c8\u30e0\u884c\u300d\u304c\u5384\u4ecb\u306a\u306e\u306f\u3001\u65e2\u5b58\u306e\u30ec\u30b3\u30fc\u30c9 id=1, id=2 \u3092\u884c\u30ed\u30c3\u30af\u3057\u3066\u3082\u767a\u751f\u3092\u9632\u3050\u3053\u3068\u304c\u3067\u304d\u306a\u3044\u70b9\u3067\u3059\u3002\u7279\u5b9a\u7bc4\u56f2\u3078\u306e <code>INSERT<\/code> \u3092\u4f55\u304b\u3057\u3089\u306e\u65b9\u6cd5\u3067\u5f85\u3063\u3066\u3082\u3089\u308f\u306a\u3051\u308c\u3070\u9632\u6b62\u3067\u304d\u307e\u305b\u3093\uff08\u65e2\u5b58\u306e\u30ec\u30b3\u30fc\u30c9\u304c <code>UPDATE<\/code>\u3001 <code>DELETE<\/code> \u3055\u308c\u308b\u306e\u3092\u9632\u304e\u305f\u3044\u3060\u3051\u306a\u3089\u884c\u30ed\u30c3\u30af\u306e\u307f\u3067\u5341\u5206\u3067\u3059\uff09\u3002<\/p>\n<p data-line=\"263\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__c2409e5ac7d4c\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__c2409e5ac7d4c\" data-content=\"https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F8.0%2Fen%2Finnodb-next-key-locking.html\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-next-key-locking.html\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-next-key-locking.html<\/a><\/p>\n<p data-line=\"265\" class=\"code-line\">\u300c\u30d5\u30a1\u30f3\u30c8\u30e0\u884c\u300d\u4ee5\u5916\u306e\u30a2\u30ce\u30de\u30ea\u30fc\u306e\u89e3\u8aac\u306f\u3001\u4ed6\u306e\u65b9\u304c\u307e\u3068\u3081\u3066\u304f\u3060\u3055\u3063\u3066\u3044\u308b\u8a18\u4e8b\u306b\u8b72\u308a\u307e\u3059\u3002\u307e\u305f\u3001\u5404\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u5206\u96e2\u30ec\u30d9\u30eb\u306b\u3088\u3063\u3066\u8a31\u5bb9\u3059\u308b\u30a2\u30ce\u30de\u30ea\u30fc\u304c\u7570\u306a\u308a\u307e\u3059\u3002<\/p>\n<p data-line=\"267\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__111abcd75a58b\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__111abcd75a58b\" data-content=\"https%3A%2F%2Fzenn.dev%2Fteam_soda%2Farticles%2F24ea9290ea4c13\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/zenn.dev\/team_soda\/articles\/24ea9290ea4c13\" style=\"display:none\" target=\"_blank\">https:\/\/zenn.dev\/team_soda\/articles\/24ea9290ea4c13<\/a><\/p>\n<p data-line=\"269\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__0fb493b9ddb13\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__0fb493b9ddb13\" data-content=\"https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F8.0%2Fen%2Finnodb-transaction-isolation-levels.html\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-transaction-isolation-levels.html\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-transaction-isolation-levels.html<\/a><\/p>\n<h2 id=\"%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF\" data-line=\"271\" class=\"code-line\">\n \u30ed\u30c3\u30af\u306e\u4ed5\u7d44\u307f<\/h2>\n<p data-line=\"273\" class=\"code-line\">InnoDB \u306f\u3001\u30a2\u30ce\u30de\u30ea\u30fc\u3092\u9632\u3050\u305f\u3081\u306b\u3001\u30a2\u30ce\u30de\u30ea\u30fc\u304c\u767a\u751f\u3057\u3046\u308b\u300c\u7bc4\u56f2\u300d\u3092\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002\u305d\u3057\u3066\u3001\u30ed\u30c3\u30af\u540c\u58eb\u306e\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u306b\u3088\u3063\u3066\u9806\u756a\u5f85\u3061\u3092\u5b9f\u73fe\u3057\u3066\u3044\u307e\u3059\u3002\u30ed\u30c3\u30af\u304c\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u3059\u308b\u3068\u3001\u5f8c\u304b\u3089\u30ed\u30c3\u30af\u3092\u7372\u5f97\u3057\u3088\u3046\u3068\u3057\u305f\u65b9\u304c\u5f85\u305f\u3055\u308c\u307e\u3059\u3002<\/p>\n<h3 id=\"%E3%83%AD%E3%83%83%E3%82%AF%E7%A8%AE%E5%88%A5\" data-line=\"275\" class=\"code-line\">\n \u30ed\u30c3\u30af\u7a2e\u5225<\/h3>\n<p data-line=\"277\" class=\"code-line\">\u30ed\u30c3\u30af\u306b\u306f\u7a2e\u5225\u304c\u3042\u308a\u3001\u3069\u308c\u3068\u3069\u308c\u304c\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u3059\u308b\u304b\u6c7a\u307e\u3063\u3066\u3044\u307e\u3059\u3002\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u3092\u898b\u3066\u3044\u305f\u3060\u304f\u65b9\u304c\u65e9\u3044\u6c17\u3082\u3057\u307e\u3059\u304c\u3053\u306e\u8a18\u4e8b\u3068\u95a2\u9023\u304c\u5f37\u3044\u90e8\u5206\u3092\u30d4\u30c3\u30af\u30a2\u30c3\u30d7\u3057\u307e\u3059\u3002<\/p>\n<p data-line=\"279\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__17a7c81213d05\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__17a7c81213d05\" data-content=\"https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F8.0%2Fen%2Finnodb-locking.html\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-locking.html\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-locking.html<\/a><\/p>\n<p data-line=\"281\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/f97bb1bfd2f7-20251029.png\" alt=\"\u30ed\u30c3\u30af\u7a2e\u5225\u3092\u6570\u76f4\u7dda\u4e0a\u306e\u7bc4\u56f2\u3067\u8868\u73fe\u3002\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af\u306f\u884c\u306e\u307f\u3001\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u306f\u884c\u306e\u624b\u524d\u306e\u30b9\u30ad\u30de\u306e\u307f\u3001\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u306f\u884c\u3068\u624b\u524d\u306e\u9699\u9593\u4e21\u65b9\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><br \/><em><code>(hoge=30, id=2)<\/code> \u306b\u5bfe\u3059\u308b\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af\u3001\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u3001\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af<\/em><\/p>\n<h4 id=\"%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E3%83%AD%E3%83%83%E3%82%AF\" data-line=\"285\" class=\"code-line\">\n \u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af<\/h4>\n<p data-line=\"287\" class=\"code-line\">\u3044\u308f\u3086\u308b\u884c\u30ed\u30c3\u30af\u3067\u3059\u3002\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\uff08 <code>idx_foo<\/code> \u3084 <code>PRIMARY<\/code> \u306e\u30ce\u30fc\u30c91\u3064\uff09\u3092\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002\u30ae\u30e3\u30c3\u30d7\u306f\u30ed\u30c3\u30af\u3057\u307e\u305b\u3093\u3002\u65e2\u5b58\u306e\u30ec\u30b3\u30fc\u30c9\u304c <code>DELETE<\/code> \u3084 <code>UPDATE<\/code> \u3055\u308c\u308b\u306e\u3092\u9632\u6b62\u3059\u308b\u5f79\u5272\u3092\u6301\u3061\u307e\u3059\u3002\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af\u3060\u3051\u3067\u306f\u30d5\u30a1\u30f3\u30c8\u30e0\u884c\u306e <code>INSERT<\/code> \u306f\u9632\u3052\u307e\u305b\u3093\u3002<\/p>\n<h4 id=\"%E3%82%AE%E3%83%A3%E3%83%83%E3%83%97%E3%83%AD%E3%83%83%E3%82%AF\" data-line=\"289\" class=\"code-line\">\n \u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af<\/h4>\n<p data-line=\"291\" class=\"code-line\">\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u540c\u58eb\u306e\u9699\u9593\uff08\u30ae\u30e3\u30c3\u30d7\uff09\u3092\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002\u300c\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u540c\u58eb\u306e\u300d\u3068\u3044\u3046\u90e8\u5206\u304c\u30dd\u30a4\u30f3\u30c8\u3067\u3001\u4efb\u610f\u306e\u7bc4\u56f2\u3092\u30ed\u30c3\u30af\u3067\u304d\u308b\u308f\u3051\u3067\u306f\u3042\u308a\u307e\u305b\u3093\u3002\u30a4\u30f3\u30b5\u30fc\u30c8\u30a4\u30f3\u30c6\u30f3\u30b7\u30e7\u30f3\u30ed\u30c3\u30af\u3068\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u3059\u308b\u306e\u3067 <code>INSERT<\/code> \u3092\u9632\u3050\u5f79\u5272\u3092\u6301\u3061\u307e\u3059\u3002<\/p>\n<h4 id=\"%E3%83%8D%E3%82%AF%E3%82%B9%E3%83%88%E3%82%AD%E3%83%BC%E3%83%AD%E3%83%83%E3%82%AF\" data-line=\"293\" class=\"code-line\">\n \u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af<\/h4>\n<p data-line=\"295\" class=\"code-line\">\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af\u3068\u3001\u5f53\u8a72\u30ec\u30b3\u30fc\u30c9\u306e\u524d\u306e\u30ae\u30e3\u30c3\u30d7\u306e\u30ed\u30c3\u30af\u3067\u3059\u3002\u300c\u30cd\u30af\u30b9\u30c8\u300d\u3068\u540d\u524d\u306b\u5165\u3063\u3066\u3044\u307e\u3059\u304c\u300c\u524d\u306e\u300d\u30ae\u30e3\u30c3\u30d7\u3067\u3059\u3002InnoDB \u306f\u3001\u7279\u5b9a\u7bc4\u56f2\u3092\u30ed\u30c3\u30af\u3059\u308b\u305f\u3081\u306b\u3001\u305d\u306e\u7bc4\u56f2\u3092\u8986\u3046\u3088\u3046\u306a\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u306b\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u3092\u304b\u3051\u3066\u3044\u304f\u3068\u3044\u3046\u57fa\u672c\u52d5\u4f5c\u3092\u3057\u307e\u3059\u3002<\/p>\n<h4 id=\"%E3%82%A4%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%88%E3%82%A4%E3%83%B3%E3%83%86%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%AD%E3%83%83%E3%82%AF\" data-line=\"297\" class=\"code-line\">\n \u30a4\u30f3\u30b5\u30fc\u30c8\u30a4\u30f3\u30c6\u30f3\u30b7\u30e7\u30f3\u30ed\u30c3\u30af<\/h4>\n<p data-line=\"299\" class=\"code-line\"><code>INSERT<\/code> \u3057\u3088\u3046\u3068\u3059\u308b\u30ae\u30e3\u30c3\u30d7\u306b\u5bfe\u3059\u308b\u30ed\u30c3\u30af\u3067\u3059\u3002\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u3068\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u3057\u307e\u3059\u3002\u7279\u5b9a\u7bc4\u56f2\u3078\u306e <code>INSERT<\/code> \u3092\u5f85\u3063\u3066\u3082\u3089\u3046\u3068\u3044\u3046\u76ee\u7684\u3092\u9054\u6210\u3059\u308b\u305f\u3081\u306e\u624b\u6bb5\u304c\u300c\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u3068\u30a4\u30f3\u30b5\u30fc\u30c8\u30a4\u30f3\u30c6\u30f3\u30b7\u30e7\u30f3\u30ed\u30c3\u30af\u306e\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u300d\u3067\u3057\u305f\u3002\u7bc4\u56f2\u306f\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u3068\u540c\u3058\u306a\u306e\u3067\u56f3\u304b\u3089\u306f\u7701\u7565\u3057\u307e\u3057\u305f\u3002<\/p>\n<p data-line=\"301\" class=\"code-line\">\u300c\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u8981\u3089\u306a\u304f\u306a\u3044\uff1f\u300d\u3068\u601d\u3044\u307e\u305b\u3093\u3067\u3057\u305f\u304b\u3002\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af + \u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u3067\u5b9f\u73fe\u3067\u304d\u307e\u3059\u3088\u306d\u3002\u3057\u304b\u3057\u3001InnoDB \u3067\u300c\u666e\u901a\u306e\u30ed\u30c3\u30af\u300d\u3068\u3044\u3048\u3070\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u3092\u6307\u3057\u307e\u3059\u3002\u6df1\u304f\u306f\u7acb\u3061\u5165\u308a\u307e\u305b\u3093\u304c\u3001\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u306e\u7279\u6b8a\u7cfb\uff08\u30ec\u30b3\u30fc\u30c9\u306e\u307f ver.\u30fb\u30ae\u30e3\u30c3\u30d7\u306e\u307f ver.\uff09\u3068\u3057\u3066\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af\u30fb\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u304c\u3042\u308b\u30a4\u30e1\u30fc\u30b8\u3067\u3059\u3002InnoDB \u306f\u30ed\u30c3\u30af\u3092\u7372\u5f97\u3059\u308b\u969b\u3001\u57fa\u672c\u306f\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u3092\u304b\u3051\u3001\u7279\u5b9a\u6761\u4ef6\u3092\u6e80\u305f\u3057\u305f\u3068\u304d\uff08\u30ec\u30b3\u30fc\u30c9\u306e\u307f\u30fb\u30ae\u30e3\u30c3\u30d7\u306e\u307f\u3067\u5341\u5206\u3068\u78ba\u4fe1\u3067\u304d\u308b\u3068\u304d\uff09\u306e\u307f\u7279\u6b8a\u7cfb\u306e\u30ed\u30c3\u30af\u3092\u4f7f\u3044\u307e\u3059\u3002<a target=\"_blank\" href=\"https:\/\/github.com\/mysql\/mysql-server\/blob\/153abc27b7dda30b455c0d99e657dac4e39e3505\/storage\/innobase\/include\/lock0lock.h#L964-L983\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\u5b9a\u7fa9\u90e8\u5206\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9<\/a> \u306b\u4e01\u5be7\u306a\u30b3\u30e1\u30f3\u30c8\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<h3 id=\"%E3%83%AD%E3%83%83%E3%82%AF%E7%A8%AE%E5%88%A5%E3%81%AE%E6%B1%BA%E5%AE%9A%E6%96%B9%E6%B3%95\" data-line=\"304\" class=\"code-line\">\n \u30ed\u30c3\u30af\u7a2e\u5225\u306e\u6c7a\u5b9a\u65b9\u6cd5<\/h3>\n<p data-line=\"306\" class=\"code-line\">\u30a2\u30ce\u30de\u30ea\u30fc\u3092\u9632\u6b62\u3059\u308b\u305f\u3081\u306b\u30ed\u30c3\u30af\u3059\u3079\u304d\u7bc4\u56f2\u306f\u3069\u3053\u3067\u3057\u3087\u3046\u304b\u3002\u8eab\u3082\u84cb\u3082\u306a\u3044\u3053\u3068\u3092\u8a00\u3048\u3070\u3001\u771f\u306e\u610f\u5473\u3067\u30ed\u30c3\u30af\u3059\u3079\u304d\u7bc4\u56f2\u306f <code>WHERE<\/code> \u3067\u6307\u5b9a\u3057\u305f\u7bc4\u56f2\u30d4\u30c3\u30bf\u30ea\u306e\u306f\u305a\u3067\u3059\u3002<\/p>\n<p data-line=\"308\" class=\"code-line\">\u3057\u304b\u3057\u3001InnoDB \u306f\u5668\u7528\u306b\u4efb\u610f\u306e\u7bc4\u56f2\u3092\u30ed\u30c3\u30af\u3067\u304d\u307e\u305b\u3093\u3002\u30ed\u30c3\u30af\u3067\u304d\u308b\u306e\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u3068\u305d\u306e\u9699\u9593\u306e\u307f\u3067\u3059\u3002\u305d\u306e\u305f\u3081\u4e0a\u8a18\u306e\u30ed\u30c3\u30af\u7a2e\u5225\u3092\u4f7f\u3044\u5206\u3051\u3066\u3001\u771f\u306b\u30ed\u30c3\u30af\u3059\u3079\u304d\u7bc4\u56f2\u3092\u30ab\u30d0\u30fc\u3059\u308b\u3068\u3044\u3046\u624b\u6cd5\u3092\u3068\u308a\u307e\u3059\u3002<\/p>\n<p data-line=\"310\" class=\"code-line\">\u4f7f\u308f\u308c\u308b\u30ed\u30c3\u30af\u7a2e\u5225\u304c\u3069\u308c\u306b\u306a\u308b\u306e\u304b\u306f\u3001\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e <code>REPEATABLE READ<\/code> \u5206\u96e2\u30ec\u30d9\u30eb\u3067\u8aac\u660e\u3055\u308c\u3066\u3044\u308b\u5185\u5bb9\u304c\u3068\u3066\u3082\u5927\u4e8b\u3067\u3059\u3002<\/p>\n<blockquote data-line=\"312\" class=\"code-line\">\n<p data-line=\"312\" class=\"code-line\">For locking reads (<code>SELECT<\/code> with <code>FOR UPDATE<\/code> or <code>FOR SHARE<\/code>), <code>UPDATE<\/code>, and <code>DELETE<\/code> statements, locking depends on whether the statement uses a unique index with a unique search condition, or a range-type search condition.<\/p>\n<ul data-line=\"313\" class=\"code-line\">\n<li data-line=\"313\" class=\"code-line\">For a unique index with a unique search condition, InnoDB locks only the index record found, not the gap before it.<\/li>\n<li data-line=\"314\" class=\"code-line\">For other search conditions, InnoDB locks the index range scanned, using gap locks or next-key locks to block insertions by other sessions into the gaps covered by the range. For information about gap locks and next-key locks, see Section 17.7.1, \u201cInnoDB Locking\u201d.<\/li>\n<\/ul>\n<\/blockquote>\n<p data-line=\"316\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__e1d977f39440a\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__e1d977f39440a\" data-content=\"https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F8.0%2Fen%2Finnodb-transaction-isolation-levels.html\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-transaction-isolation-levels.html\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-transaction-isolation-levels.html<\/a><\/p>\n<p data-line=\"318\" class=\"code-line\">\u30e6\u30cb\u30fc\u30af\u306a\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f7f\u3044\u3001\u30e6\u30cb\u30fc\u30af\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4e00\u610f\u306b\u7279\u5b9a\u3067\u304d\u308b\u691c\u7d22\u6761\u4ef6\u306e\u5834\u5408\u306e\u307f\u884c\u30ed\u30c3\u30af\u3001\u305d\u308c\u4ee5\u5916\u306f\u5168\u3066\u30ae\u30e3\u30c3\u30d7\u307e\u305f\u306f\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u3067\u3059\u3002\u30e6\u30cb\u30fc\u30af\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4e00\u610f\u306b\u7279\u5b9a\u3067\u304d\u308b\u691c\u7d22\u6761\u4ef6\u3068\u306f\u3001\u8907\u5408\u30e6\u30cb\u30fc\u30af\u30ad\u30fc\u306e\u5834\u5408\u306f\u5168\u3066\u306e\u30ab\u30e9\u30e0\u3092\u6307\u5b9a\u3057\u305f\u691c\u7d22\u3068\u3044\u3046\u3053\u3068\u3067\u3059\u3002<a target=\"_blank\" href=\"https:\/\/github.com\/mysql\/mysql-server\/blob\/153abc27b7dda30b455c0d99e657dac4e39e3505\/storage\/innobase\/row\/row0sel.cc#L4609-L4618\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">\u8a72\u5f53\u90e8\u5206\u306e\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9<\/a> \u306b\u540c\u69d8\u306e\u30b3\u30e1\u30f3\u30c8\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<h3 id=\"%E3%83%AD%E3%83%83%E3%82%AF%E7%AF%84%E5%9B%B2%E3%81%AE%E7%A2%BA%E8%AA%8D%E6%96%B9%E6%B3%95\" data-line=\"320\" class=\"code-line\">\n \u30ed\u30c3\u30af\u7bc4\u56f2\u306e\u78ba\u8a8d\u65b9\u6cd5<\/h3>\n<p data-line=\"322\" class=\"code-line\">\u3042\u308b\u30af\u30a8\u30ea\u3092\u5b9f\u884c\u3057\u305f\u6642\u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u3092\u78ba\u8a8d\u3057\u3066\u307f\u307e\u3057\u3087\u3046\u3002<code>performance_schema.data_locks<\/code> \u30c6\u30fc\u30d6\u30eb\u3092\u691c\u7d22\u3059\u308b\u3068\u3001\u7372\u5f97\u6e08\u307f\u306e\u30ed\u30c3\u30af\u3068\u5f85\u3061\u72b6\u614b\u306e\u30ed\u30c3\u30af\u3092\u8868\u793a\u3067\u304d\u307e\u3059\u3002<\/p>\n<p data-line=\"324\" class=\"code-line\">\u6271\u3046\u30c6\u30fc\u30d6\u30eb\u306f\u3001<a target=\"_blank\" href=\"#%E8%A1%8C%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AB%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E4%BE%8B\">\u6700\u521d\u306e\u5177\u4f53\u4f8b<\/a> \u306e\u5546\u54c1\u30c6\u30fc\u30d6\u30eb\u3067\u3059\u3002<\/p>\n<p data-line=\"326\" class=\"code-line\">\u307e\u305a\u3001\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u3067\u306e\u691c\u7d22\u3067\u3059\u3002\u30dd\u30a4\u30f3\u30c8\u306f <code>INDEX_NAME=PRIMARY, LOCK_MODE=X,REC_NOT_GAP, LOCK_DATA=3<\/code> \u3042\u305f\u308a\u3067\u3059\u3002<code>REC_NOT_GAP<\/code> \u306f\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af\uff08\u884c\u30ed\u30c3\u30af\uff09\u3092\u8868\u3057\u307e\u3059\u3002<code>PRIMARY<\/code> \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e id=3 \u306e\u30ec\u30b3\u30fc\u30c9\u306b\u6392\u4ed6\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af\u304c\u304b\u304b\u3063\u3066\u3044\u308b\u306e\u304c\u308f\u304b\u308a\u307e\u3059\u3002<\/p>\n<p data-line=\"328\" class=\"code-line\">id \u306f\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u306a\u306e\u3067 id=3 \u306e\u5546\u54c1\u306f\u4ed6\u306b\u5b58\u5728\u3067\u304d\u307e\u305b\u3093\u3002id=3 \u3078\u306e\u5909\u66f4\u3055\u3048\u4fdd\u8b77\u3067\u304d\u308c\u3070\u826f\u3044\u306e\u3067\u3001\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af\u306e\u307f\u3067\u30a2\u30ce\u30de\u30ea\u30fc\u304c\u9632\u6b62\u3067\u304d\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"330\">mysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">BEGIN<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products <span class=\"token keyword\">WHERE<\/span> id <span class=\"token operator\">=<\/span> <span class=\"token number\">3<\/span> <span class=\"token keyword\">FOR<\/span> <span class=\"token keyword\">UPDATE<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">SELECT<\/span> OBJECT_NAME<span class=\"token punctuation\">,<\/span> INDEX_NAME<span class=\"token punctuation\">,<\/span> LOCK_TYPE<span class=\"token punctuation\">,<\/span> LOCK_MODE<span class=\"token punctuation\">,<\/span> LOCK_DATA<span class=\"token punctuation\">,<\/span> LOCK_STATUS<span class=\"token punctuation\">,<\/span> ENGINE_TRANSACTION_ID <span class=\"token keyword\">AS<\/span> TX_ID <span class=\"token keyword\">FROM<\/span> performance_schema<span class=\"token punctuation\">.<\/span>data_locks <span class=\"token keyword\">WHERE<\/span> LOCK_TYPE <span class=\"token operator\">=<\/span> <span class=\"token string\">'RECORD'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> OBJECT_NAME <span class=\"token operator\">|<\/span> INDEX_NAME <span class=\"token operator\">|<\/span> LOCK_TYPE <span class=\"token operator\">|<\/span> LOCK_MODE     <span class=\"token operator\">|<\/span> LOCK_DATA <span class=\"token operator\">|<\/span> LOCK_STATUS <span class=\"token operator\">|<\/span> TX_ID <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> <span class=\"token keyword\">PRIMARY<\/span>    <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X<span class=\"token punctuation\">,<\/span>REC_NOT_GAP <span class=\"token operator\">|<\/span> <span class=\"token number\">3<\/span>         <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22065<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"340\" class=\"code-line\">\u7d9a\u3044\u3066\u975e\u30e6\u30cb\u30fc\u30af\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u306e\u691c\u7d22\u3067\u3059\u3002\u6700\u521d\u306e\u5177\u4f53\u4f8b\u3067\u6271\u3063\u305f\u30af\u30a8\u30ea\u3067\u3059\u3002<\/p>\n<p data-line=\"342\" class=\"code-line\">1\u884c\u76ee\u30682\u884c\u76ee\u306f <code>idx_price<\/code> \u3078\u306e\u30ed\u30c3\u30af\u3001\u6700\u7d42\u884c\u306f <code>PRIMARY<\/code> \u3078\u306e\u30ed\u30c3\u30af\u3067\u3059\u3002<br \/>1\u884c\u76ee <code>X,GAP<\/code> \u306f <code>(price=300, id=3)<\/code> \u306e\u524d\u306e\u30ae\u30e3\u30c3\u30d7\u3078\u306e\u30ed\u30c3\u30af\u3092\u8868\u3057\u307e\u3059\u3002<br \/>2\u884c\u76ee <code>X<\/code> \u306f <code>(price=200, id=2)<\/code> \u3078\u306e\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u3092\u8868\u3057\u307e\u3059\u3002\uff08 <code>GAP<\/code> \u3084 <code>REC_NOT_GAP<\/code> \u306a\u3069\u304c\u3064\u3044\u3066\u3044\u306a\u3051\u308c\u3070\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u3067\u3059\u3002\uff09<br \/>\u6700\u7d42\u884c\u306f id=2 \u306e\u30ec\u30b3\u30fc\u30c9\u306e\u884c\u30ed\u30c3\u30af\u3067\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"347\">mysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">BEGIN<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products <span class=\"token keyword\">WHERE<\/span> price <span class=\"token operator\">=<\/span> <span class=\"token number\">200<\/span> <span class=\"token keyword\">FOR<\/span> <span class=\"token keyword\">UPDATE<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">SELECT<\/span> OBJECT_NAME<span class=\"token punctuation\">,<\/span> INDEX_NAME<span class=\"token punctuation\">,<\/span> LOCK_TYPE<span class=\"token punctuation\">,<\/span> LOCK_MODE<span class=\"token punctuation\">,<\/span> LOCK_DATA<span class=\"token punctuation\">,<\/span> LOCK_STATUS<span class=\"token punctuation\">,<\/span> ENGINE_TRANSACTION_ID <span class=\"token keyword\">AS<\/span> TX_ID <span class=\"token keyword\">FROM<\/span> performance_schema<span class=\"token punctuation\">.<\/span>data_locks <span class=\"token keyword\">WHERE<\/span> LOCK_TYPE <span class=\"token operator\">=<\/span> <span class=\"token string\">'RECORD'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> OBJECT_NAME <span class=\"token operator\">|<\/span> INDEX_NAME <span class=\"token operator\">|<\/span> LOCK_TYPE <span class=\"token operator\">|<\/span> LOCK_MODE     <span class=\"token operator\">|<\/span> LOCK_DATA <span class=\"token operator\">|<\/span> LOCK_STATUS <span class=\"token operator\">|<\/span> TX_ID <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> idx_price  <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X<span class=\"token punctuation\">,<\/span>GAP         <span class=\"token operator\">|<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span>    <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22066<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> idx_price  <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X             <span class=\"token operator\">|<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span>    <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22066<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> <span class=\"token keyword\">PRIMARY<\/span>    <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X<span class=\"token punctuation\">,<\/span>REC_NOT_GAP <span class=\"token operator\">|<\/span> <span class=\"token number\">2<\/span>         <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22066<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"359\" class=\"code-line\">\u30ed\u30c3\u30af\u7bc4\u56f2\u3092\u56f3\u306b\u793a\u3057\u307e\u3059\u3002\u60f3\u50cf\u3088\u308a\u5e83\u3044\u7bc4\u56f2\u304c\u30ed\u30c3\u30af\u3055\u308c\u305f\u3068\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002\u3053\u306e\u7bc4\u56f2\u304c\u59a5\u5f53\u306a\u306e\u304b\u3092\u8003\u3048\u3066\u307f\u307e\u3059\u3002<\/p>\n<p data-line=\"361\" class=\"code-line\">\u691c\u7d22\u6761\u4ef6\u306f <code>price=200<\/code> \u3067\u3057\u305f\u3002<code>price<\/code> \u306f\u30e6\u30cb\u30fc\u30af\u3067\u306f\u306a\u3044\u305f\u3081\u3001\u4f55\u3082\u5bfe\u7b56\u3057\u306a\u3051\u308c\u3070\u4ed6\u306e\u30c8\u30e9\u30f3\u30b6\u30af\u30b7\u30e7\u30f3\u304c200\u5186\u306e\u5546\u54c1\u3092 <code>INSERT<\/code> \u3067\u304d\u307e\u3059\u3002\u3053\u308c\u3092\u9632\u3050\u306b\u306f\u300c200\u5186\u306e\u5546\u54c1\u304c <code>INSERT<\/code> \u3055\u308c\u5f97\u308b\u30ae\u30e3\u30c3\u30d7\u300d\u3092\u30ed\u30c3\u30af\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<p data-line=\"363\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/3c3a50a745eb-20251029.png\" alt=\"200\u5186\u306e\u5546\u54c1\u304c\u633f\u5165\u3055\u308c\u3046\u308b\u30ae\u30e3\u30c3\u30d7\u3092\u6570\u76f4\u7dda\u4e0a\u3067\u8868\u73fe\u3002(200,2)\u306e\u524d\u5f8c\u306e\u9699\u9593\u306b\u633f\u5165\u3055\u308c\u5f97\u308b\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"365\" class=\"code-line\">\u300c <code>(price=200, id=2)<\/code> \u306e\u524d\u306b\u3082\u5165\u308b\u306e\uff1f \u300d\u3068\u601d\u3046\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u304c\u3001\u305f\u3068\u3048\u3070 <code>INSERT INTO products (id, name, price) VALUES (-1, '\u65b0\u5546\u54c1', 200);<\/code> \u307f\u305f\u3044\u306b <code>idx_price<\/code> \u306e\u30bd\u30fc\u30c8\u9806\u3067 <code>(price=200, id=2)<\/code> \u3088\u308a\u524d\u306b\u306a\u308b\u5834\u5408\u306f\u524d\u306e\u30ae\u30e3\u30c3\u30d7\u306b\u5165\u308a\u307e\u3059\u3002\uff08id \u306f <code>INT<\/code> \u306a\u306e\u3067\u8ca0\u306e\u5024\u3082\u3042\u308a\u5f97\u307e\u3059\u3002\uff09<\/p>\n<p data-line=\"367\" class=\"code-line\">\u305d\u306e\u305f\u3081\u56f3\u306e\u7bc4\u56f2\u306f\u3001<code>idx_price<\/code> \u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u30ed\u30c3\u30af\u3092\u304b\u3051\u3066\u30d5\u30a1\u30f3\u30c8\u30e0\u884c\u3092\u9632\u3050\u305f\u3081\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u9650\u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u3068\u3044\u3046\u3053\u3068\u306b\u306a\u308a\u307e\u3059\u3002\uff08\u53b3\u5bc6\u306b\u306f <code>INSERT<\/code> \u3060\u3051\u9632\u304e\u305f\u3051\u308c\u3070\u884c\u30ed\u30c3\u30af\u306f\u4e0d\u8981\u3067\u3059\u304c\u3001 <code>UPDATE<\/code> \u3084 <code>DELETE<\/code> \u3082\u3082\u3061\u308d\u3093\u9632\u304e\u305f\u3044\u305f\u3081\u884c\u30ed\u30c3\u30af\u304c\u304b\u304b\u308b\u306e\u3082\u59a5\u5f53\u3067\u3059\u3002\uff09\u30ed\u30c3\u30af\u7bc4\u56f2\u304c\u3069\u308c\u304b\u4e00\u3064\u3067\u3082\u6b20\u3051\u308b\u3068\u4f55\u304b\u3057\u3089\u306e\u30a2\u30ce\u30de\u30ea\u30fc\u304c\u767a\u751f\u3057\u307e\u3059\u3002<\/p>\n<p data-line=\"369\" class=\"code-line\">\u30ed\u30c3\u30af\u5f85\u3061\u306b\u306a\u3063\u305f\u72b6\u614b\u3082\u78ba\u8a8d\u3057\u307e\u3059\u3002200\u5186\u306e\u65b0\u5546\u54c1\u3092 <code>(price=200, id=2) ~ (price=300, id=3)<\/code> \u306e\u30ae\u30e3\u30c3\u30d7\u306b\u8ffd\u52a0\u3057\u3088\u3046\u3068\u3057\u3066\u3001\u30a4\u30f3\u30b5\u30fc\u30c8\u30a4\u30f3\u30c6\u30f3\u30b7\u30e7\u30f3\u30ed\u30c3\u30af\u304c\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u3068\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u3057\u3066\u3044\u307e\u3059\u3002\u30b3\u30f3\u30d5\u30ea\u30af\u30c8\u3057\u305f\u305f\u3081 <code>LOCK_STATUS=WAITING<\/code> \u306b\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"371\">\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">BEGIN<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products <span class=\"token keyword\">WHERE<\/span> price <span class=\"token operator\">=<\/span> <span class=\"token number\">200<\/span> <span class=\"token keyword\">FOR<\/span> <span class=\"token keyword\">UPDATE<\/span><span class=\"token punctuation\">;<\/span>\n\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">INSERT<\/span> <span class=\"token keyword\">INTO<\/span> products <span class=\"token punctuation\">(<\/span>id<span class=\"token punctuation\">,<\/span> name<span class=\"token punctuation\">,<\/span> price<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">VALUES<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">999<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">'\u65b0\u5546\u54c1'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">;<\/span>\n\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">SELECT<\/span> OBJECT_NAME<span class=\"token punctuation\">,<\/span> INDEX_NAME<span class=\"token punctuation\">,<\/span> LOCK_TYPE<span class=\"token punctuation\">,<\/span> LOCK_MODE<span class=\"token punctuation\">,<\/span> LOCK_DATA<span class=\"token punctuation\">,<\/span> LOCK_STATUS<span class=\"token punctuation\">,<\/span> ENGINE_TRANSACTION_ID <span class=\"token keyword\">AS<\/span> TX_ID <span class=\"token keyword\">FROM<\/span> performance_schema<span class=\"token punctuation\">.<\/span>data_locks <span class=\"token keyword\">WHERE<\/span> LOCK_TYPE <span class=\"token operator\">=<\/span> <span class=\"token string\">'RECORD'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> OBJECT_NAME <span class=\"token operator\">|<\/span> INDEX_NAME <span class=\"token operator\">|<\/span> LOCK_TYPE <span class=\"token operator\">|<\/span> LOCK_MODE              <span class=\"token operator\">|<\/span> LOCK_DATA <span class=\"token operator\">|<\/span> LOCK_STATUS <span class=\"token operator\">|<\/span> TX_ID <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> idx_price  <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X<span class=\"token punctuation\">,<\/span>GAP                  <span class=\"token operator\">|<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span>    <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22067<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> idx_price  <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X                      <span class=\"token operator\">|<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span>    <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22067<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> idx_price  <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X<span class=\"token punctuation\">,<\/span>GAP<span class=\"token punctuation\">,<\/span>INSERT_INTENTION <span class=\"token operator\">|<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">3<\/span>    <span class=\"token operator\">|<\/span> WAITING     <span class=\"token operator\">|<\/span> <span class=\"token number\">22068<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> <span class=\"token keyword\">PRIMARY<\/span>    <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X<span class=\"token punctuation\">,<\/span>REC_NOT_GAP          <span class=\"token operator\">|<\/span> <span class=\"token number\">2<\/span>         <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22067<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<\/code><\/pre>\n<\/div>\n<h3 id=\"%E3%83%AD%E3%83%83%E3%82%AF%E7%AF%84%E5%9B%B2%E3%81%AE%E4%B8%80%E8%A6%A7\" data-line=\"388\" class=\"code-line\">\n \u30ed\u30c3\u30af\u7bc4\u56f2\u306e\u4e00\u89a7<\/h3>\n<p data-line=\"390\" class=\"code-line\">\u30ed\u30c3\u30af\u7bc4\u56f2\u3092\u3044\u304f\u3064\u304b\u307e\u3068\u3081\u3066\u307f\u307e\u3059\u3002\u899a\u3048\u308b\u3068\u3044\u3046\u3088\u308a\u3001\u30a2\u30ce\u30de\u30ea\u30fc\u3092\u9632\u3050\u305f\u3081\u306b\u5fc5\u8981\u306a\u6700\u5c0f\u9650\u306e\u7bc4\u56f2\u3092\u8003\u3048\u3001\u305d\u308c\u3092 InnoDB \u304c\u30ab\u30d0\u30fc\u3057\u3066\u304f\u308c\u3066\u3044\u308b\u3093\u3060\u306a\u3068\u8003\u3048\u308b\u3068\u7d0d\u5f97\u3057\u3084\u3059\u3044\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<p data-line=\"392\" class=\"code-line\">\u5bfe\u8c61\u30c7\u30fc\u30bf\u306f <a target=\"_blank\" href=\"#%E8%A1%8C%E3%83%AD%E3%83%83%E3%82%AF%E3%81%AB%E3%81%AA%E3%82%89%E3%81%AA%E3%81%84%E4%BE%8B\">\u6700\u521d\u306e\u5546\u54c1\u30c6\u30fc\u30d6\u30eb<\/a> \u3067\u3059\u3002\u8aac\u660e\u306e\u90fd\u5408\u3067\u30d7\u30e9\u30a4\u30de\u30ea\u30fc\u30ad\u30fc\u306e id \u309210\u523b\u307f\u306b\u3057\u307e\u3057\u305f\u304c\u3001\u6df1\u3044\u610f\u5473\u306f\u306a\u304f\u30ae\u30e3\u30c3\u30d7\u3092\u4f5c\u308a\u305f\u304b\u3063\u305f\u3060\u3051\u3067\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"394\">mysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products<span class=\"token punctuation\">;<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> id <span class=\"token operator\">|<\/span> name    <span class=\"token operator\">|<\/span> price <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> <span class=\"token number\">10<\/span> <span class=\"token operator\">|<\/span> \u5546\u54c1<span class=\"token number\">1<\/span>   <span class=\"token operator\">|<\/span>   <span class=\"token number\">100<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> <span class=\"token number\">20<\/span> <span class=\"token operator\">|<\/span> \u5546\u54c1<span class=\"token number\">2<\/span>   <span class=\"token operator\">|<\/span>   <span class=\"token number\">200<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> <span class=\"token number\">30<\/span> <span class=\"token operator\">|<\/span> \u5546\u54c1<span class=\"token number\">3<\/span>   <span class=\"token operator\">|<\/span>   <span class=\"token number\">300<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"405\" class=\"code-line\">\u30b9\u30da\u30fc\u30b9\u306e\u90fd\u5408\u3067 <code>BEGIN; SELECT * FROM products WHERE ... FOR UPDATE;<\/code> \u306e <code>WHERE ...<\/code> \u90e8\u5206\u3060\u3051\u3092\u63b2\u8f09\u3057\u307e\u3059\u3002\u307e\u305f\u3001<code>idx_price<\/code> \u3067\u691c\u7d22\u3059\u308b\u3068\u7bc4\u56f2\u5185\u306e <code>PRIMAY<\/code> \u306b\u3082\u884c\u30ed\u30c3\u30af\u304c\u304b\u304b\u308a\u307e\u3059\u304c\u56f3\u306f\u7701\u7565\u3057\u3066\u3044\u307e\u3059\u3002<\/p>\n<h4 id=\"primary-%E3%81%A7%E3%81%AE%E6%A4%9C%E7%B4%A2\" data-line=\"407\" class=\"code-line\">\n <code>PRIMARY<\/code> \u3067\u306e\u691c\u7d22<\/h4>\n<p data-line=\"409\" class=\"code-line\">\u53f3\u7aef\u306e <code>supremum<\/code> \u306f\u300c\u3053\u308c\u3088\u308a\u5927\u304d\u3044\u5024\u306f\u7121\u3044\u300d\u3088\u3046\u306a\u5024\u3092\u8868\u3057\u305f\u64ec\u4f3c\u7684\u306a\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u3067\u3001\u3053\u306e\u30ec\u30b3\u30fc\u30c9\u306b\u30ed\u30c3\u30af\u3092\u304b\u3051\u308b\u3053\u3068\u3067\u7279\u5b9a\u884c\u3088\u308a\u53f3\u3092\u5168\u3066\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002<br \/>\u307e\u305f\u3001\u7dd1\u8272\u306e\u6570\u76f4\u7dda\u3089\u3057\u304d\u3082\u306e\u306f\u3001\u30a2\u30ce\u30de\u30ea\u30fc\u3092\u767a\u751f\u3055\u305b\u306a\u3044\u305f\u3081\u306b\u5fc5\u8981\u3067\u3042\u308b\uff08\u3068\u81ea\u5206\u304c\u8003\u3048\u308b\uff09\u6700\u5c0f\u9650\u306e\u7bc4\u56f2\u3067\u3059\u3002<\/p>\n<div class=\"s_table\"><table data-line=\"412\" class=\"code-line\">\n<thead data-line=\"412\" class=\"code-line\">\n<tr data-line=\"412\" class=\"code-line\">\n<th>\u30af\u30a8\u30ea<\/th>\n<th>\u30ed\u30c3\u30af\u7bc4\u56f2<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"414\" class=\"code-line\">\n<tr data-line=\"414\" class=\"code-line\">\n<td><code>WHERE id = 20<\/code><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/db3e642a98c7-20251029.png\" alt=\"id=20\u306e\u30ec\u30b3\u30fc\u30c9\u306e\u307f\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/td>\n<\/tr>\n<tr data-line=\"415\" class=\"code-line\">\n<td><code>WHERE id = 25<\/code><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/101afe0dca5e-20251029.png\" alt=\"20 &lt; id &lt; 30\u306e\u30ae\u30e3\u30c3\u30d7\u306e\u307f\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/td>\n<\/tr>\n<tr data-line=\"416\" class=\"code-line\">\n<td><code>WHERE id BETWEEN 15 AND 25<\/code><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/8ed36cb904ea-20251029.png\" alt=\"10 &lt; id &lt; 30\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/td>\n<\/tr>\n<tr data-line=\"417\" class=\"code-line\">\n<td><code>WHERE id &gt; 25<\/code><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/9f26d672253d-20251029.png\" alt=\"20 &lt; id\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<h4 id=\"idx_price-%E3%81%A7%E3%81%AE%E6%A4%9C%E7%B4%A2\" data-line=\"419\" class=\"code-line\">\n <code>idx_price<\/code> \u3067\u306e\u691c\u7d22<\/h4>\n<div class=\"s_table\"><table data-line=\"421\" class=\"code-line\">\n<thead data-line=\"421\" class=\"code-line\">\n<tr data-line=\"421\" class=\"code-line\">\n<th>\u30af\u30a8\u30ea<\/th>\n<th>\u30ed\u30c3\u30af\u7bc4\u56f2<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"423\" class=\"code-line\">\n<tr data-line=\"423\" class=\"code-line\">\n<td><code>WHERE price = 200<\/code><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/6ac2c0049f83-20251029.png\" alt=\"100 &lt; price &lt; 300\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/td>\n<\/tr>\n<tr data-line=\"424\" class=\"code-line\">\n<td><code>WHERE price = 250<\/code><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/c74f072d87c1-20251029.png\" alt=\"200 &lt; price &lt; 300\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/td>\n<\/tr>\n<tr data-line=\"425\" class=\"code-line\">\n<td><code>WHERE price BETWEEN 150 AND 250<\/code><\/td>\n<td><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/32e0b152763d-20251029.png\" alt=\"100 &lt; price &lt;= 300\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"427\" class=\"code-line\">\u6982\u306d\u5fc5\u8981\u3068\u8003\u3048\u3089\u308c\u308b\u6700\u5c0f\u9650\u306e\u7bc4\u56f2\u304c\u30ed\u30c3\u30af\u3055\u308c\u307e\u3057\u305f\u3002\u4e00\u756a\u6700\u5f8c\u306e\u4f8b <code>WHERE price BETWEEN 150 AND 250<\/code> \u306b\u3064\u3044\u3066\u3001\u53f3\u7aef\u306e <code>(price=300, id=30)<\/code> \u306f\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u3067\u306f\u306a\u304f\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u3067\u3082\u826f\u3044\u3088\u3046\u306a\u6c17\u304c\u3057\u307e\u3059\u304c\u3001\u306a\u305c\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u306b\u306a\u3089\u306a\u3044\uff08\u3042\u308b\u3044\u306f\u3067\u304d\u306a\u3044\uff09\u306e\u304b\u306f\u5206\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002\u8a73\u3057\u3044\u65b9\u304c\u3044\u305f\u3089\u6559\u3048\u3066\u3044\u305f\u3060\u304d\u305f\u3044\u3067\u3059\u3002<\/p>\n<h3 id=\"%E3%83%AD%E3%83%83%E3%82%AF%E7%8D%B2%E5%BE%97%E3%81%AE%E4%BB%95%E7%B5%84%E3%81%BF\" data-line=\"429\" class=\"code-line\">\n \u30ed\u30c3\u30af\u7372\u5f97\u306e\u4ed5\u7d44\u307f<\/h3>\n<p data-line=\"431\" class=\"code-line\">InnoDB \u306f\u691c\u7d22\u6642\u306b\u8a2a\u554f\u3057\u305f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u306b\u30ed\u30c3\u30af\u3092\u304b\u3051\u308b\u3053\u3068\u3067\u3001\u771f\u306b\u5fc5\u8981\u306a\u30ed\u30c3\u30af\u7bc4\u56f2\u3092\u30ab\u30d0\u30fc\u3057\u307e\u3059\u3002\u300c\u691c\u7d22\u306b\u30d2\u30c3\u30c8\u3057\u305f\u300d\u3067\u306f\u306a\u304f\u300c\u8a2a\u554f\u3057\u305f\u300d\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u3044\u3046\u306e\u304c\u30dd\u30a4\u30f3\u30c8\u3067\u3059\u3002\u691c\u7d22\u306e\u52d5\u4f5c\uff08\u5b9f\u884c\u8a08\u753b\uff09\u304c\u610f\u56f3\u3069\u304a\u308a\u3067\u306a\u3044\u3068\u601d\u308f\u306c\u7bc4\u56f2\u304c\u30ed\u30c3\u30af\u3055\u308c\u307e\u3059\u3002<\/p>\n<h4 id=\"%E3%82%AF%E3%83%A9%E3%82%B9%E3%82%BF%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A8%E3%82%BB%E3%82%AB%E3%83%B3%E3%83%80%E3%83%AA%E3%82%A4%E3%83%B3%E3%83%87%E3%83%83%E3%82%AF%E3%82%B9\" data-line=\"433\" class=\"code-line\">\n \u30af\u30e9\u30b9\u30bf\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u30bb\u30ab\u30f3\u30c0\u30ea\u30a4\u30f3\u30c7\u30c3\u30af\u30b9<\/h4>\n<p data-line=\"435\" class=\"code-line\">\u691c\u7d22\u306e\u52d5\u4f5c\u3092\u77e5\u308b\u305f\u3081\u306b\u306f\u30c7\u30fc\u30bf\u69cb\u9020\u3092\u77e5\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002\u3053\u308c\u307e\u3067\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u3068\u3044\u3046\u8a00\u8449\u3067\u307e\u3068\u3081\u3066\u8aac\u660e\u3057\u3066\u304d\u307e\u3057\u305f\u304c\u3001InnoDB \u306b\u306f2\u7a2e\u985e\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u3042\u308a\u307e\u3059\u3002<\/p>\n<ul data-line=\"437\" class=\"code-line\">\n<li data-line=\"437\" class=\"code-line\">\u30af\u30e9\u30b9\u30bf\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff1a\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u3068\u305d\u308c\u306b\u7d10\u3065\u304f\u5b9f\u30c7\u30fc\u30bf\u3092\u683c\u7d0d\u3059\u308b\u6728\u69cb\u9020<\/li>\n<li data-line=\"438\" class=\"code-line\">\u30bb\u30ab\u30f3\u30c0\u30ea\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\uff1a\u305d\u308c\u4ee5\u5916\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3068\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u306e\u30bb\u30c3\u30c8\u3092\u683c\u7d0d\u3059\u308b\u6728\u69cb\u9020<\/li>\n<\/ul>\n<p data-line=\"440\" class=\"code-line\">\u300c\u691c\u7d22\u304c\u9045\u3044\u306e\u3067\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u4f5c\u6210\u3057\u3088\u3046\u300d\u3068\u8a00\u3063\u305f\u6642\u306b\u6307\u3057\u3066\u3044\u308b\u306e\u306f\u30bb\u30ab\u30f3\u30c0\u30ea\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3067\u3059\u3002\u3069\u3061\u3089\u3082 B+Tree \u3068\u3044\u3046\u6728\u69cb\u9020\u3067\u3001\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u3092\u5897\u3084\u3059\u305f\u3073\u306b\u65b0\u305f\u306a B+Tree \u304c\u4f5c\u6210\u3055\u308c\u307e\u3059\u3002\u30ec\u30b3\u30fc\u30c9\u306e\u5b9f\u30c7\u30fc\u30bf\u3084\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u5185\u5bb9\u306f\u3001\u6728\u69cb\u9020\u306e\u672b\u7aef\u3067\u3042\u308b\u30ea\u30fc\u30d5\u30ce\u30fc\u30c9\u306b\u683c\u7d0d\u3055\u308c\u307e\u3059\u3002<\/p>\n<p data-line=\"442\" class=\"code-line\">\u30bb\u30ab\u30f3\u30c0\u30ea\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 <code>idx_price<\/code> \u3067\u691c\u7d22\u3057\u305f\u6642\u306e\u52d5\u4f5c\u3092\u3001\u30af\u30e9\u30b9\u30bf\u30a4\u30f3\u30c7\u30c3\u30af\u30b9 <code>PRIMARY<\/code> \u3082\u5408\u308f\u305b\u3066\u56f3\u306b\u8868\u3057\u3066\u307f\u307e\u3059\u3002\u8a73\u7d30\u306a\u4ed5\u7d44\u307f\u306b\u306f\u7acb\u3061\u5165\u308a\u307e\u305b\u3093\u304c\u3001\u5b9f\u969b\u306e\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u306e\u8a2a\u554f\u9806\u306f\u4e0b\u8a18\u3067\u3059\u3002<\/p>\n<ol data-line=\"444\" class=\"code-line\">\n<li data-line=\"444\" class=\"code-line\"><code>(price=200, id=20)<\/code><\/li>\n<li data-line=\"445\" class=\"code-line\"><code>(id=20)<\/code><\/li>\n<li data-line=\"446\" class=\"code-line\">\n<code>(price=300, id=30)<\/code> \uff08\u3053\u3053\u3067\u691c\u7d22\u7bc4\u56f2\u5916\u306b\u51fa\u305f\u3068\u5206\u304b\u3063\u3066\u691c\u7d22\u3092\u7d42\u4e86\uff09<\/li>\n<\/ol>\n<p data-line=\"448\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/776876596327-20251029.png\" alt=\"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u3092\u8fbf\u3063\u3066\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u307e\u3067\u691c\u7d22\u3057\u306b\u884c\u304f\u69d8\u5b50\u3092\u3001\u6a21\u64ec\u7684\u306a\u6728\u69cb\u9020\u3067\u8868\u73fe\" width=\"600\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"450\" class=\"code-line\">\u4e0b\u8a18\u306e <code>data_locks<\/code> \u3068\u9806\u756a\u304c\u7570\u306a\u308a\u307e\u3059\u304c\u5185\u5bb9\u306f\u4e00\u81f4\u3057\u3066\u3044\u307e\u3059\u3002<br \/><code>idx_price<\/code> \u306f\u8a2a\u554f\u6642\u306b\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u3092\u304b\u3051\u3001 <code>PRIMARY<\/code> \u306f\u8a2a\u554f\u6642\u306b\u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af\u3092\u304b\u3051\u307e\u3059\u3002\u691c\u7d22\u7bc4\u56f2 <code>BETWEEN 150 AND 250<\/code> \u306e\u7bc4\u56f2\u5916\u307e\u3067\u8a2a\u308c\u306a\u3044\u3068\u7bc4\u56f2\u5916\u306b\u51fa\u305f\u3053\u3068\u304c\u308f\u304b\u3089\u306a\u3044\u3001\u304b\u3064\u3001\u691c\u7d22\u7bc4\u56f2\u3092\u30ab\u30d0\u30fc\u3059\u308b\u306b\u306f <code>(300, 30)<\/code> \u306e\u624b\u524d\u306e\u30ae\u30e3\u30c3\u30d7\u3092\u30ed\u30c3\u30af\u3057\u305f\u3044\u3068\u3044\u3046\u4e8b\u60c5\u3092\u3046\u307e\u304f\u7d44\u307f\u5408\u308f\u305b\u3066\u5fc5\u8981\u7bc4\u56f2\u306e\u30ed\u30c3\u30af\u304c\u5b9f\u73fe\u3055\u308c\u3066\u3044\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"453\">mysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">BEGIN<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products <span class=\"token keyword\">WHERE<\/span> price <span class=\"token operator\">BETWEEN<\/span> <span class=\"token number\">150<\/span> <span class=\"token operator\">AND<\/span> <span class=\"token number\">250<\/span> <span class=\"token keyword\">FOR<\/span> <span class=\"token keyword\">UPDATE<\/span><span class=\"token punctuation\">;<\/span>\nmysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">SELECT<\/span> OBJECT_NAME<span class=\"token punctuation\">,<\/span> INDEX_NAME<span class=\"token punctuation\">,<\/span> LOCK_TYPE<span class=\"token punctuation\">,<\/span> LOCK_MODE<span class=\"token punctuation\">,<\/span> LOCK_DATA<span class=\"token punctuation\">,<\/span> LOCK_STATUS<span class=\"token punctuation\">,<\/span> ENGINE_TRANSACTION_ID <span class=\"token keyword\">AS<\/span> TX_ID <span class=\"token keyword\">FROM<\/span> performance_schema<span class=\"token punctuation\">.<\/span>data_locks <span class=\"token keyword\">WHERE<\/span> LOCK_TYPE <span class=\"token operator\">=<\/span> <span class=\"token string\">'RECORD'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> OBJECT_NAME <span class=\"token operator\">|<\/span> INDEX_NAME <span class=\"token operator\">|<\/span> LOCK_TYPE <span class=\"token operator\">|<\/span> LOCK_MODE     <span class=\"token operator\">|<\/span> LOCK_DATA <span class=\"token operator\">|<\/span> LOCK_STATUS <span class=\"token operator\">|<\/span> TX_ID <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> idx_price  <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X             <span class=\"token operator\">|<\/span> <span class=\"token number\">200<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">20<\/span>   <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22599<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> idx_price  <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X             <span class=\"token operator\">|<\/span> <span class=\"token number\">300<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">30<\/span>   <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22599<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> <span class=\"token keyword\">PRIMARY<\/span>    <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X<span class=\"token punctuation\">,<\/span>REC_NOT_GAP <span class=\"token operator\">|<\/span> <span class=\"token number\">20<\/span>        <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22599<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"465\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__16411bc07fbe4\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__16411bc07fbe4\" data-content=\"https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F8.0%2Fen%2Finnodb-index-types.html\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-index-types.html\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-index-types.html<\/a><\/p>\n<p data-line=\"467\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__41d5756c9ac52\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__41d5756c9ac52\" data-content=\"https%3A%2F%2Fdev.mysql.com%2Fdoc%2Frefman%2F8.0%2Fen%2Finnodb-physical-structure.html\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-physical-structure.html\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-physical-structure.html<\/a><\/p>\n<h4 id=\"%E5%AE%9F%E8%A1%8C%E8%A8%88%E7%94%BB%E3%81%AB%E5%BF%9C%E3%81%98%E3%81%9F%E3%83%AD%E3%83%83%E3%82%AF\" data-line=\"469\" class=\"code-line\">\n \u5b9f\u884c\u8a08\u753b\u306b\u5fdc\u3058\u305f\u30ed\u30c3\u30af<\/h4>\n<p data-line=\"471\" class=\"code-line\">\u300c\u8a2a\u554f\u3057\u305f\u300d\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u304c\u30ed\u30c3\u30af\u3055\u308c\u308b\u3053\u3068\u3092\u78ba\u8a8d\u3059\u308b\u305f\u3081\u4e0b\u8a182\u3064\u3092\u8a66\u3057\u3066\u307f\u307e\u3059\u3002<\/p>\n<p data-line=\"473\" class=\"code-line\"><code>FORCE INDEX<\/code> \u306b\u3088\u3063\u3066 <code>idx_price<\/code> \u3092\u4f7f\u308f\u305a\u306b\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u3067\u691c\u7d22\uff1a<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"474\">mysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">BEGIN<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products <span class=\"token keyword\">FORCE<\/span> <span class=\"token keyword\">INDEX<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token keyword\">PRIMARY<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">WHERE<\/span> price <span class=\"token operator\">=<\/span> <span class=\"token number\">200<\/span> <span class=\"token keyword\">FOR<\/span> <span class=\"token keyword\">UPDATE<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"478\" class=\"code-line\">\u30bb\u30ab\u30f3\u30c0\u30ea\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7121\u3044\u30ab\u30e9\u30e0\u3067\u691c\u7d22\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"479\">mysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">BEGIN<\/span><span class=\"token punctuation\">;<\/span> <span class=\"token keyword\">SELECT<\/span> <span class=\"token operator\">*<\/span> <span class=\"token keyword\">FROM<\/span> products <span class=\"token keyword\">WHERE<\/span> name <span class=\"token operator\">=<\/span> <span class=\"token string\">'\u5546\u54c12'<\/span> <span class=\"token keyword\">FOR<\/span> <span class=\"token keyword\">UPDATE<\/span><span class=\"token punctuation\">;<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"483\" class=\"code-line\">\u4e0a\u8a18\u306f\u4e21\u65b9\u3068\u3082 <code>PRIMARY<\/code> \u306e\u5168\u7bc4\u56f2\u3092\u30ed\u30c3\u30af\u3057\u307e\u3059\u3002\u5546\u54c1\u30c6\u30fc\u30d6\u30eb\u306b\u5bfe\u3059\u308b\u5909\u66f4\u306f\u5168\u3066\u30d6\u30ed\u30c3\u30af\u3055\u308c\u308b\u305f\u3081\u3001\u672c\u756a\u74b0\u5883\u3067\u3084\u3063\u305f\u3089\u5927\u60e8\u4e8b\u3067\u3059\u3002\u4f7f\u3048\u308b\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u304c\u7121\u3044\u3001\u3082\u3057\u304f\u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30d2\u30f3\u30c8\u306a\u3069\u306b\u3088\u3063\u3066\u4f7f\u3048\u306a\u3044\u5834\u5408\u306f\u30af\u30e9\u30b9\u30bf\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306e\u5168\u7bc4\u56f2\u3092\u8a2a\u554f\u3057\u3066\u6761\u4ef6\u306b\u5408\u3046\u30ec\u30b3\u30fc\u30c9\u3092\u63a2\u3057\u307e\u3059\u3002\u5168\u7bc4\u56f2\u3092\u8a2a\u554f\u3059\u308b\u904e\u7a0b\u3067\u5168\u3066\u306e\u30ec\u30b3\u30fc\u30c9\u306b\u30cd\u30af\u30b9\u30c8\u30ad\u30fc\u30ed\u30c3\u30af\u3092\u304b\u3051\u307e\u3059\u3002<\/p>\n<div class=\"code-block-container\">\n<pre class=\"language-sql\"><code class=\"language-sql code-line\" data-line=\"485\">mysql<span class=\"token operator\">&gt;<\/span> <span class=\"token keyword\">SELECT<\/span> OBJECT_NAME<span class=\"token punctuation\">,<\/span> INDEX_NAME<span class=\"token punctuation\">,<\/span> LOCK_TYPE<span class=\"token punctuation\">,<\/span> LOCK_MODE<span class=\"token punctuation\">,<\/span> LOCK_DATA<span class=\"token punctuation\">,<\/span> LOCK_STATUS<span class=\"token punctuation\">,<\/span> ENGINE_TRANSACTION_ID <span class=\"token keyword\">AS<\/span> TX_ID <span class=\"token keyword\">FROM<\/span> performance_schema<span class=\"token punctuation\">.<\/span>data_locks <span class=\"token keyword\">WHERE<\/span> LOCK_TYPE <span class=\"token operator\">=<\/span> <span class=\"token string\">'RECORD'<\/span><span class=\"token punctuation\">;<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> OBJECT_NAME <span class=\"token operator\">|<\/span> INDEX_NAME <span class=\"token operator\">|<\/span> LOCK_TYPE <span class=\"token operator\">|<\/span> LOCK_MODE <span class=\"token operator\">|<\/span> LOCK_DATA              <span class=\"token operator\">|<\/span> LOCK_STATUS <span class=\"token operator\">|<\/span> TX_ID <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> <span class=\"token keyword\">PRIMARY<\/span>    <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X         <span class=\"token operator\">|<\/span> supremum pseudo<span class=\"token operator\">-<\/span>record <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22611<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> <span class=\"token keyword\">PRIMARY<\/span>    <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X         <span class=\"token operator\">|<\/span> <span class=\"token number\">10<\/span>                     <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22611<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> <span class=\"token keyword\">PRIMARY<\/span>    <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X         <span class=\"token operator\">|<\/span> <span class=\"token number\">20<\/span>                     <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22611<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">|<\/span> products    <span class=\"token operator\">|<\/span> <span class=\"token keyword\">PRIMARY<\/span>    <span class=\"token operator\">|<\/span> RECORD    <span class=\"token operator\">|<\/span> X         <span class=\"token operator\">|<\/span> <span class=\"token number\">30<\/span>                     <span class=\"token operator\">|<\/span> GRANTED     <span class=\"token operator\">|<\/span> <span class=\"token number\">22611<\/span> <span class=\"token operator\">|<\/span>\n<span class=\"token operator\">+<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"497\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/211f4bd9f8f3-20251029.png\" alt=\"products\u306e\u30d7\u30e9\u30a4\u30de\u30ea\u30ad\u30fc\u306e\u5168\u7bc4\u56f2\u304c\u30ed\u30c3\u30af\u3055\u308c\u308b\u3053\u3068\u3092\u6570\u76f4\u7dda\u4e0a\u306b\u8868\u73fe\" width=\"400\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<h2 id=\"%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"499\" class=\"code-line\">\n \u307e\u3068\u3081<\/h2>\n<ul data-line=\"501\" class=\"code-line\">\n<li data-line=\"501\" class=\"code-line\">\u300c\u30d5\u30a1\u30f3\u30c8\u30e0\u884c\u300d\u3092\u306f\u3058\u3081\u3068\u3059\u308b\u30a2\u30ce\u30de\u30ea\u30fc\u3092\u9632\u3050\u306e\u304c\u30ed\u30c3\u30af\u306e\u76ee\u7684\u3067\u3059<\/li>\n<li data-line=\"502\" class=\"code-line\">\u76ee\u7684\u9054\u6210\u306e\u305f\u3081\u306b\u3001InnoDB \u306f\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u3084\u30ae\u30e3\u30c3\u30d7\u3092\u30ed\u30c3\u30af\u3057\u307e\u3059<\/li>\n<li data-line=\"503\" class=\"code-line\">\u30ed\u30c3\u30af\u306e\u4ed5\u7d44\u307f\u4e0a\u3001\u771f\u306b\u5fc5\u8981\u306a\u30ed\u30c3\u30af\u7bc4\u56f2\u3088\u308a\u5e83\u3044\u7bc4\u56f2\u304c\u30ed\u30c3\u30af\u3055\u308c\u308b\u3053\u3068\u304c\u3042\u308a\u307e\u3059<\/li>\n<li data-line=\"504\" class=\"code-line\">\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u30ec\u30b3\u30fc\u30c9\u3092\u30ed\u30c3\u30af\u3059\u308b\u6319\u52d5\u3092\u6b63\u3057\u304f\u7406\u89e3\u3057\u3066\u3001\u5fc5\u8981\u6700\u5c0f\u9650\u306e\u7bc4\u56f2\u3092\u30ed\u30c3\u30af\u3059\u308b\u3088\u3046\u306b\u5fc3\u304c\u3051\u307e\u3057\u3087\u3046<\/li>\n<\/ul>\n<h2 id=\"%E5%8F%82%E8%80%83%E8%B3%87%E6%96%99\" data-line=\"506\" class=\"code-line\">\n \u53c2\u8003\u8cc7\u6599<\/h2>\n<p data-line=\"508\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__b4544bc7801d6\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__b4544bc7801d6\" data-content=\"https%3A%2F%2Fsh2.hatenablog.jp%2Fentry%2F20140914\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/sh2.hatenablog.jp\/entry\/20140914\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/sh2.hatenablog.jp\/entry\/20140914<\/a><\/p>\n<p data-line=\"510\" class=\"code-line\">\u591a\u304f\u306e\u90e8\u5206\u3092\u53c2\u8003\u306b\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u307e\u3057\u305f\u3002\u672c\u8a18\u4e8b\u306e MySQL \u3068\u30d0\u30fc\u30b8\u30e7\u30f3\u304c\u7570\u306a\u308b\u305f\u3081\u30ed\u30c3\u30af\u7bc4\u56f2\u306e\u4f8b\u306f\u5c11\u3057\u7570\u306a\u308a\u307e\u3059\u3002<\/p>\n<p data-line=\"512\" class=\"code-line\"><span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__acfeb0b2ffe9e\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__acfeb0b2ffe9e\" data-content=\"https%3A%2F%2Fwww.linkedin.com%2Fpulse%2Fdeep-dive-mysql-transaction-locks-innodb-part-1-zhao-song-i8x4c\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/www.linkedin.com\/pulse\/deep-dive-mysql-transaction-locks-innodb-part-1-zhao-song-i8x4c\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/www.linkedin.com\/pulse\/deep-dive-mysql-transaction-locks-innodb-part-1-zhao-song-i8x4c<\/a><br style=\"display:none\"\/><br \/>\n<span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__d4ce45b974108\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__d4ce45b974108\" data-content=\"https%3A%2F%2Fwww.linkedin.com%2Fpulse%2Fdeep-dive-mysql-transaction-locks-part-2-zhao-song-2cvgf\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/www.linkedin.com\/pulse\/deep-dive-mysql-transaction-locks-part-2-zhao-song-2cvgf\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/www.linkedin.com\/pulse\/deep-dive-mysql-transaction-locks-part-2-zhao-song-2cvgf<\/a><\/p>\n<p data-line=\"515\" class=\"code-line\">\u3055\u3089\u306b InnoDB \u306e\u5185\u90e8\u52d5\u4f5c\u3092\u8a73\u3057\u304f\u77e5\u308a\u305f\u3044\u4eba\u5411\u3051\u3002\u672c\u8a18\u4e8b\u3067\u306f <code>INSERT<\/code> \u6642\u306e\u8a73\u7d30\u306b\u7acb\u3061\u5165\u3089\u305a\u3001\u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af\u3068\u30a4\u30f3\u30b5\u30fc\u30c8\u30a4\u30f3\u30c6\u30f3\u30b7\u30e7\u30f3\u30ed\u30c3\u30af\u304c\u3076\u3064\u304b\u308b\u7a0b\u5ea6\u306e\u8aac\u660e\u3057\u304b\u3057\u307e\u305b\u3093\u3067\u3057\u305f\u304c\u672c\u5f53\u306f\u3082\u3063\u3068\u8907\u96d1\u3067\u3059\u3002\u7279\u306b <code>INSERT<\/code> \u6642\u306e\u30ed\u30c3\u30af\u306f Implicit lock\uff08\u6697\u9ed9\u306e\u30ed\u30c3\u30af\uff09\u3068\u3044\u3046\u6319\u52d5\u3092\u3059\u308b\u305f\u3081\u89b3\u5bdf\u3057\u3065\u3089\u304f\u3001\u5225\u306e\u64cd\u4f5c\u306b\u8d77\u56e0\u3057\u3066 <code>performance_schema.data_locks<\/code> \u4e0a\u306b\u7a81\u7136\u73fe\u308c\u305f\u308a\u3057\u307e\u3059\u3002 <code>INSERT<\/code> \u306f\u8907\u96d1\u3068\u77e5\u3063\u3066\u304a\u304f\u3060\u3051\u3067\u3082\u8abf\u67fb\u306b\u5f79\u7acb\u3064\u3068\u601d\u3044\u307e\u3059\u3002<\/p>\n<h2 id=\"%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB\" data-line=\"517\" class=\"code-line\">\n \u304a\u308f\u308a\u306b<\/h2>\n<p data-line=\"519\" class=\"code-line\">\u7bc4\u56f2\u306e\u30ed\u30c3\u30af\u306b\u3064\u3044\u3066\u6574\u7406\u3057\u307e\u3057\u305f\u3002\u8abf\u67fb\u3092\u901a\u3057\u3066\u3001\u30ed\u30c3\u30af\u7bc4\u56f2\u304c\u610f\u56f3\u3057\u305f\u3082\u306e\u304b\u3069\u3046\u304b\u3001\u610f\u56f3\u3057\u306a\u3044\u5834\u5408\u306b\u5185\u90e8\u3067\u4f55\u304c\u8d77\u3053\u3063\u3066\u3044\u305d\u3046\u304b\u5c11\u3057\u305a\u3064\u898b\u901a\u305b\u308b\u3088\u3046\u306b\u306a\u3063\u305f\u6c17\u304c\u3057\u307e\u3059\u3002<\/p>\n<\/div>\n\n<br \/><a href=\"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c\">\u5143\u306e\u8a18\u4e8b\u3092\u78ba\u8a8d\u3059\u308b <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\u3053\u3093\u306b\u3061\u306f otsubo \u3067\u3059\u3002MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u306b\u3064\u3044\u3066\u6574\u7406\u3059\u308b\u6a5f\u4f1a\u304c\u3042\u3063\u305f\u306e\u3067\u8a18\u4e8b\u306b\u3057\u307e\u3059\u3002 \u306f\u3058\u3081\u306b \u5168\u3066\u306e \u30ed\u30c3\u30af\u30bf\u30a4\u30d7 \u3092\u7db2\u7f85\u3059\u308b\u306e\u306f\u5927\u5909\u306a\u305f\u3081\u3001 \u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af \u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af \u30cd\u30af\u30b9\u30c8\u30ad [&hellip;]","protected":false},"author":1,"featured_media":21562,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-21561","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-company-tec"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046 - \u30dd\u30b1\u30b3\u30f3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046 - \u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"og:description\" content=\"\u3053\u3093\u306b\u3061\u306f otsubo \u3067\u3059\u3002MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u306b\u3064\u3044\u3066\u6574\u7406\u3059\u308b\u6a5f\u4f1a\u304c\u3042\u3063\u305f\u306e\u3067\u8a18\u4e8b\u306b\u3057\u307e\u3059\u3002 \u306f\u3058\u3081\u306b \u5168\u3066\u306e \u30ed\u30c3\u30af\u30bf\u30a4\u30d7 \u3092\u7db2\u7f85\u3059\u308b\u306e\u306f\u5927\u5909\u306a\u305f\u3081\u3001 \u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af \u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af \u30cd\u30af\u30b9\u30c8\u30ad [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c\" \/>\n<meta property=\"og:site_name\" content=\"\u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-30T16:24:21+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761841460_og-base-w1200-v2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"info@pokecon.jp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"info@pokecon.jp\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"6\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/socialplus\\\/articles\\\/2e16da32f39a0c#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/21561\\\/\"},\"author\":{\"name\":\"info@pokecon.jp\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"headline\":\"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046\",\"datePublished\":\"2025-10-30T16:24:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/21561\\\/\"},\"wordCount\":261,\"image\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/socialplus\\\/articles\\\/2e16da32f39a0c#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1761841460_og-base-w1200-v2.png\",\"articleSection\":[\"\u4f01\u696d\u30c6\u30c3\u30af\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/21561\\\/\",\"url\":\"https:\\\/\\\/zenn.dev\\\/socialplus\\\/articles\\\/2e16da32f39a0c\",\"name\":\"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046 - \u30dd\u30b1\u30b3\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/socialplus\\\/articles\\\/2e16da32f39a0c#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/socialplus\\\/articles\\\/2e16da32f39a0c#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1761841460_og-base-w1200-v2.png\",\"datePublished\":\"2025-10-30T16:24:21+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/socialplus\\\/articles\\\/2e16da32f39a0c#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zenn.dev\\\/socialplus\\\/articles\\\/2e16da32f39a0c\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/socialplus\\\/articles\\\/2e16da32f39a0c#primaryimage\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1761841460_og-base-w1200-v2.png\",\"contentUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1761841460_og-base-w1200-v2.png\",\"width\":1200,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/socialplus\\\/articles\\\/2e16da32f39a0c#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\",\"name\":\"\u30dd\u30b1\u30b3\u30f3\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\",\"name\":\"info@pokecon.jp\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"caption\":\"info@pokecon.jp\"},\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/author\\\/infopokecon-jp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046 - \u30dd\u30b1\u30b3\u30f3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c","og_locale":"ja_JP","og_type":"article","og_title":"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046 - \u30dd\u30b1\u30b3\u30f3","og_description":"\u3053\u3093\u306b\u3061\u306f otsubo \u3067\u3059\u3002MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u306b\u3064\u3044\u3066\u6574\u7406\u3059\u308b\u6a5f\u4f1a\u304c\u3042\u3063\u305f\u306e\u3067\u8a18\u4e8b\u306b\u3057\u307e\u3059\u3002 \u306f\u3058\u3081\u306b \u5168\u3066\u306e \u30ed\u30c3\u30af\u30bf\u30a4\u30d7 \u3092\u7db2\u7f85\u3059\u308b\u306e\u306f\u5927\u5909\u306a\u305f\u3081\u3001 \u30ec\u30b3\u30fc\u30c9\u30ed\u30c3\u30af \u30ae\u30e3\u30c3\u30d7\u30ed\u30c3\u30af \u30cd\u30af\u30b9\u30c8\u30ad [&hellip;]","og_url":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c","og_site_name":"\u30dd\u30b1\u30b3\u30f3","article_published_time":"2025-10-30T16:24:21+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761841460_og-base-w1200-v2.png","type":"image\/png"}],"author":"info@pokecon.jp","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"info@pokecon.jp","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"6\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c#article","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/21561\/"},"author":{"name":"info@pokecon.jp","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"headline":"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046","datePublished":"2025-10-30T16:24:21+00:00","mainEntityOfPage":{"@id":"https:\/\/pokecon.jp\/job\/21561\/"},"wordCount":261,"image":{"@id":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761841460_og-base-w1200-v2.png","articleSection":["\u4f01\u696d\u30c6\u30c3\u30af"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/pokecon.jp\/job\/21561\/","url":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c","name":"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046 - \u30dd\u30b1\u30b3\u30f3","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c#primaryimage"},"image":{"@id":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761841460_og-base-w1200-v2.png","datePublished":"2025-10-30T16:24:21+00:00","author":{"@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"breadcrumb":{"@id":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c#primaryimage","url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761841460_og-base-w1200-v2.png","contentUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761841460_og-base-w1200-v2.png","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/zenn.dev\/socialplus\/articles\/2e16da32f39a0c#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/pokecon.jp\/job\/"},{"@type":"ListItem","position":2,"name":"MySQL (InnoDB) \u306e\u30ed\u30c3\u30af\u7bc4\u56f2\u306b\u6c17\u3092\u3064\u3051\u3088\u3046"}]},{"@type":"WebSite","@id":"https:\/\/pokecon.jp\/job\/#website","url":"https:\/\/pokecon.jp\/job\/","name":"\u30dd\u30b1\u30b3\u30f3","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pokecon.jp\/job\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997","name":"info@pokecon.jp","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","caption":"info@pokecon.jp"},"url":"https:\/\/pokecon.jp\/job\/author\/infopokecon-jp\/"}]}},"_links":{"self":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/21561","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/comments?post=21561"}],"version-history":[{"count":1,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/21561\/revisions"}],"predecessor-version":[{"id":21563,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/21561\/revisions\/21563"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media\/21562"}],"wp:attachment":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media?parent=21561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/categories?post=21561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/tags?post=21561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}