{"id":1679,"date":"2026-04-27T20:34:17","date_gmt":"2026-04-27T20:34:17","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1679"},"modified":"2026-08-31T07:32:41","modified_gmt":"2026-08-31T07:32:41","slug":"mysql-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1679","title":{"rendered":"MySQL \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">MySQL\uc740 \ub300\ud45c\uc801\uc778 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad00\ub9ac \uc2dc\uc2a4\ud15c(RDBMS)\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc815\ubcf4, \uc8fc\ubb38, \uacb0\uc81c, \uac8c\uc784 \ub370\uc774\ud130\ucc98\ub7fc <strong>\ub370\uc774\ud130 \uc0ac\uc774\uc758 \uad00\uacc4\uc640 \uc815\ud569\uc131\uc774 \uc911\uc694\ud55c \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\uace0 \uc870\ud68c\ud558\ub294 \ub370<\/strong> \ub9ce\uc774 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc744 \uc774\ud574\ud558\ub824\uba74 SQL \ubb38\ubc95\ub9cc \uc678\uc6b0\ub294 \uac83\ubcf4\ub2e4 \ud14c\uc774\ube14, \uad00\uacc4, Index, Transaction, Lock\uc774 \uc2e4\uc81c\ub85c \uc5b4\ub5bb\uac8c \uc5f0\uacb0\ub418\ub294\uc9c0\ub97c \uc774\ud574\ud558\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc778 \uc11c\ubc84 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; HTTP Request -&gt; Application Server -&gt; MySQL Driver -&gt; MySQL -&gt; Storage\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc9c1\uc811 \ub370\uc774\ud130 \ud30c\uc77c\uc744 \uc218\uc815\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub77c SQL\uc744 \ud1b5\ud574 MySQL\uc5d0 \uc791\uc5c5\uc744 \uc694\uccad\ud558\uace0, MySQL\uc774 \ub370\uc774\ud130\ub97c \uad00\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub294 \ub370\uc774\ud130\ub97c Table \ud615\ud0dc\ub85c \uad00\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc0ac\uc6a9\uc790 \uc815\ubcf4\ub97c \uc800\uc7a5\ud55c\ub2e4\uba74:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"280\" height=\"166\" src=\"https:\/\/wayhope.kro.kr\/wp-content\/uploads\/2026\/08\/image-122.png\" alt=\"\" class=\"wp-image-2024\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">\uac01 Row\ub294 \ud558\ub098\uc758 \ub370\uc774\ud130\ub97c \uc758\ubbf8\ud558\uace0 Column\uc740 \ub370\uc774\ud130\uc758 \uc18d\uc131\uc744 \ub098\ud0c0\ub0b8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Table -&gt; Row -&gt; Column\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc758 \ud2b9\uc9d5\uc740 \uc5ec\ub7ec Table \uc0ac\uc774\uc758 \uad00\uacc4\ub97c \uba85\ud655\ud558\uac8c \ud45c\ud604\ud560 \uc218 \uc788\ub2e4\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc0ac\uc6a9\uc790\uc640 \uc8fc\ubb38\uc744 \ubd84\ub9ac\ud558\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>users -&gt; id -&gt; 1:N -&gt; orders -&gt; user_id\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>orders.user_id<\/code>\ub97c \ud1b5\ud574 \uc5b4\ub5a4 \uc0ac\uc6a9\uc790\uc758 \uc8fc\ubb38\uc778\uc9c0 \uc5f0\uacb0\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Database\uc640 Table<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc5d0\uc11c\ub294 \ud558\ub098\uc758 \uc11c\ubc84 \uc548\uc5d0 \uc5ec\ub7ec Database\ub97c \ub9cc\ub4e4 \uc218 \uc788\uace0 Database \uc548\uc5d0 \uc5ec\ub7ec Table\uc744 \ub9cc\ub4e4 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MySQL Server -&gt; game -&gt; users \/ characters \/ items\nMySQL Server -&gt; analytics -&gt; events \/ statistics\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Table\uc740 \uc2e4\uc81c \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\ub294 \uae30\ubcf8\uc801\uc778 \uad6c\uc870\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE users (\n    id BIGINT PRIMARY KEY AUTO_INCREMENT,\n    name VARCHAR(100) NOT NULL,\n    email VARCHAR(255) NOT NULL\n);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c Table\uc758 Column\uacfc \ub370\uc774\ud130 \ud0c0\uc785, \uc81c\uc57d \uc870\uac74\uc744 \uc815\uc758\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Primary Key<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Primary Key\ub294 Table\uc5d0\uc11c \uac01 Row\ub97c \uace0\uc720\ud558\uac8c \uc2dd\ubcc4\ud558\uae30 \uc704\ud55c Key\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE users (\n    id BIGINT PRIMARY KEY,\n    name VARCHAR(100)\n);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uacfc \uac19\uc740 \ub370\uc774\ud130\uac00 \uc788\ub2e4\uba74:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"329\" height=\"204\" src=\"https:\/\/wayhope.kro.kr\/wp-content\/uploads\/2026\/08\/image-123.png\" alt=\"\" class=\"wp-image-2026\" srcset=\"https:\/\/wayhope.kro.kr\/wp-content\/uploads\/2026\/08\/image-123.png 329w, https:\/\/wayhope.kro.kr\/wp-content\/uploads\/2026\/08\/image-123-300x186.png 300w\" sizes=\"auto, (max-width: 329px) 100vw, 329px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><code>id<\/code>\uac00 \uac01 \uc0ac\uc6a9\uc790\ub97c \uad6c\ubd84\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Primary Key\ub294 \uc911\ubcf5\ub420 \uc218 \uc5c6\uace0 NULL\uc744 \uac00\uc9c8 \uc218 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ubb34\uc5d0\uc11c\ub294 \uc22b\uc790\ud615 ID\ub098 UUID \ub4f1\uc744 Primary Key\ub85c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Foreign Key<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Foreign Key\ub294 \ub2e4\ub978 Table\uacfc\uc758 \uad00\uacc4\ub97c \ud45c\ud604\ud558\ub294 \ub370 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>users -&gt; id -&gt; 1 \/ 2 \/ 3\norders -&gt; id \/ user_id -&gt; 10 \/ 1, 11 \/ 1, 12 \/ 2\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>orders.user_id<\/code>\uac00 <code>users.id<\/code>\ub97c \ucc38\uc870\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">SQL\ub85c \ud45c\ud604\ud558\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE orders (\n    id BIGINT PRIMARY KEY,\n    user_id BIGINT NOT NULL,\n\n    FOREIGN KEY (user_id)\n        REFERENCES users(id)\n);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \ud558\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 Table \uc0ac\uc774\uc758 \ucc38\uc870 \uad00\uacc4\ub97c \uad00\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uc2e4\uc81c \uc11c\ube44\uc2a4\uc5d0\uc11c\ub294 \uc131\ub2a5\uc774\ub098 \uc6b4\uc601 \ubc29\uc2dd \ub54c\ubb38\uc5d0 Foreign Key\ub97c \ubc18\ub4dc\uc2dc \uc0ac\uc6a9\ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc911\uc694\ud55c \uac83\uc740 <strong>\ub370\uc774\ud130 \uad00\uacc4\uc640 \ubb34\uacb0\uc131\uc744 \uc5b4\ub5bb\uac8c \ubcf4\uc7a5\ud560 \uac83\uc778\uc9c0<\/strong>\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">SQL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc740 SQL\uc744 \uc0ac\uc6a9\ud574\uc11c \ub370\uc774\ud130\ub97c \uc870\ud68c\ud558\uace0 \ubcc0\uacbd\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\ub97c \uc870\ud68c\ud558\ub824\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM users;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc870\uac74\uc744 \uac78 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM users\nWHERE id = 10;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\ub97c \ucd94\uac00\ud558\ub824\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>INSERT INTO users (name, email)\nVALUES ('Joo', 'joo@example.com');\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc218\uc815:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>UPDATE users\nSET name = 'Kim'\nWHERE id = 10;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ad\uc81c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DELETE FROM users\nWHERE id = 10;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \ub124 \uac00\uc9c0\uac00 \uae30\ubcf8\uc801\uc778 CRUD\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JOIN<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c \uc911\uc694\ud55c \uae30\ub2a5\uc774 JOIN\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790\uc640 \uc8fc\ubb38\uc774 \uc11c\ub85c \ub2e4\ub978 Table\uc5d0 \uc788\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>users -&gt; id \/ name\norders -&gt; id \/ user_id \/ price\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790 \uc774\ub984\uacfc \uc8fc\ubb38 \uae08\uc561\uc744 \uac19\uc774 \uc870\ud68c\ud558\ub824\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n    users.name,\n    orders.price\nFROM users\nJOIN orders\n    ON users.id = orders.user_id;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uacfc\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \ub098\uc628\ub2e4.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"358\" height=\"228\" src=\"https:\/\/wayhope.kro.kr\/wp-content\/uploads\/2026\/08\/image-124.png\" alt=\"\" class=\"wp-image-2027\" style=\"width:315px;height:auto\" srcset=\"https:\/\/wayhope.kro.kr\/wp-content\/uploads\/2026\/08\/image-124.png 358w, https:\/\/wayhope.kro.kr\/wp-content\/uploads\/2026\/08\/image-124-300x191.png 300w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Table\uc744 \ubd84\ub9ac\ud574\uc11c \uad00\ub9ac\ud558\uba74\uc11c Query\uc5d0\uc11c \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \uc5f0\uacb0\ud560 \uc218 \uc788\ub2e4\ub294 \uac83\uc774 \uad00\uacc4\ud615 DB\uc758 \uc911\uc694\ud55c \ud2b9\uc9d5\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\uaddc\ud654<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0\uc11c\ub294 \ub370\uc774\ud130\ub97c \uc5ec\ub7ec Table\ub85c \ubd84\ub9ac\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc8fc\ubb38 \ub370\uc774\ud130\uc5d0 \uc0ac\uc6a9\uc790 \uc774\ub984\uc744 \uadf8\ub300\ub85c \uc800\uc7a5\ud55c\ub2e4\uace0 \ud558\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>orders -&gt; order_id \/ user_name -&gt; 1 \/ Joo, 2 \/ Joo, 3 \/ Joo\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc0ac\uc6a9\uc790 \uc774\ub984\uc774 \ubcc0\uacbd\ub418\uba74 \uc5ec\ub7ec Row\ub97c \uc218\uc815\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\uc2e0 \uc0ac\uc6a9\uc790\uc640 \uc8fc\ubb38\uc744 \ubd84\ub9ac\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>users -&gt; id \/ name -&gt; 1 \/ Joo\norders -&gt; id \/ user_id -&gt; 1 \/ 1, 2 \/ 1, 3 \/ 1\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud544\uc694\ud560 \ub54c JOIN\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ucc98\ub7fc \uc911\ubcf5 \ub370\uc774\ud130\ub97c \uc904\uc774\uace0 \ub370\uc774\ud130\uc758 \uad00\uacc4\ub97c \uba85\ud655\ud558\uac8c \ub9cc\ub4dc\ub294 \uac83\uc774 \uc815\uaddc\ud654\uc758 \uae30\ubcf8\uc801\uc778 \ubaa9\uc801\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc \uc815\uaddc\ud654\uac00 \ubb34\uc870\uac74 \ub9ce\uc774 \ub420\uc218\ub85d \uc88b\uc740 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc870\ud68c \uc131\ub2a5\uc774\ub098 \ub370\uc774\ud130 \uc811\uadfc \ud328\ud134 \ub54c\ubb38\uc5d0 \uc77c\ubd80 \ub370\uc774\ud130\ub97c \uc911\ubcf5 \uc800\uc7a5\ud558\ub294 \ube44\uc815\uaddc\ud654\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Index<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\uac00 \ub9ce\uc544\uc9c0\uba74 Query \uc131\ub2a5\uc5d0\uc11c Index\uac00 \uc911\uc694\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc0ac\uc6a9\uc790 1,000\ub9cc \uba85\uc774 \uc788\ub294 Table\uc5d0\uc11c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM users\nWHERE email = 'joo@example.com';\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc744 \uc2e4\ud589\ud55c\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>email<\/code>\uc5d0 \uc801\uc808\ud55c Index\uac00 \uc5c6\ub2e4\uba74 \ub9ce\uc740 Row\ub97c \ud655\uc778\ud574\uc57c \ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Index\ub97c \ub9cc\ub4e4\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE INDEX idx_users_email\nON users(email);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc774 \ud574\ub2f9 \uc870\uac74\uc744 \ucc3e\ub294 \ub370 Index\ub97c \ud65c\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1c\ub150\uc801\uc73c\ub85c\ub294:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Table -&gt; 10,000,000 Rows -&gt; Index -&gt; \ud544\uc694\ud55c Row\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Index\ub294 \uac80\uc0c9 \uc131\ub2a5\uc744 \ub192\uc774\ub294 \ub300\uc2e0 \uc800\uc7a5 \uacf5\uac04\uc744 \uc0ac\uc6a9\ud558\uace0 INSERT, UPDATE, DELETE \uc2dc Index\ub3c4 \uac31\uc2e0\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c \ubaa8\ub4e0 Column\uc5d0 Index\ub97c \ub9cc\ub4dc\ub294 \uac83\uc740 \uc88b\uc740 \uc124\uacc4\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c\ub85c \uc790\uc8fc \uc0ac\uc6a9\ud558\ub294 WHERE, JOIN, ORDER BY \ub4f1\uc758 Query \ud328\ud134\uc744 \ubcf4\uace0 \uc124\uacc4\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Composite Index<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\ub7ec Column\uc744 \ud568\uaed8 \uc0ac\uc6a9\ud558\ub294 Query\ub77c\uba74 Composite Index\ub97c \uace0\ub824\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE INDEX idx_users_class_level\nON users(class, level);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uacfc \uac19\uc740 Query\uac00 \uc788\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT *\nFROM users\nWHERE class = 'Knight'\n  AND level &gt;= 30;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub7f0 Query \ud328\ud134\uc5d0\uc11c\ub294 Composite Index\uac00 \ub3c4\uc6c0\uc774 \ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\ub9cc Composite Index\uc5d0\ub294 <strong>Column \uc21c\uc11c<\/strong>\uac00 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>(class, level) != (level, class)\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc740 \ub3d9\uc77c\ud55c Index\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c Index\ub97c \ub9cc\ub4e4 \ub54c\ub294 \uc2e4\uc81c Query\uc5d0\uc11c \uc5b4\ub5a4 \uc870\uac74\uacfc \uc815\ub82c\uc744 \uc0ac\uc6a9\ud558\ub294\uc9c0\ubd80\ud130 \ud655\uc778\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Transaction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Transaction\uc740 \uc5ec\ub7ec \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc791\uc5c5\uc744 \ud558\ub098\uc758 \uc791\uc5c5 \ub2e8\uc704\ub85c \ubb36\ub294 \uae30\ub2a5\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c \ub2e4\uc74c \ub124 \uac00\uc9c0 \ud2b9\uc131\uc744 ACID\ub77c\uace0 \ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Atomicity -&gt; Consistency -&gt; Isolation -&gt; Durability\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uac8c\uc784\uc5d0\uc11c \uc544\uc774\ud15c\uc744 \uac70\ub798\ud55c\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Player A -&gt; \uc544\uc774\ud15c \ucc28\uac10\nPlayer B -&gt; \uc544\uc774\ud15c \uc9c0\uae09\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A\uc758 \uc544\uc774\ud15c\ub9cc \ucc28\uac10\ub418\uace0 B\uc5d0\uac8c \uc9c0\uae09\ub418\uc9c0 \uc54a\uc73c\uba74 \ub370\uc774\ud130\uac00 \uc798\ubabb\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub450 \uc791\uc5c5\uc744 \ud558\ub098\uc758 Transaction\uc73c\ub85c \ubb36\uc744 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>START TRANSACTION;\n\nUPDATE inventories\nSET item_count = item_count - 1\nWHERE user_id = 100;\n\nUPDATE inventories\nSET item_count = item_count + 1\nWHERE user_id = 200;\n\nCOMMIT;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc911\uac04\uc5d0 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud558\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ROLLBACK;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc744 \ud1b5\ud574 Transaction\uc744 \ucde8\uc18c\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Transaction -&gt; \uc791\uc5c5 A -&gt; \uc791\uc5c5 B -&gt; \uc131\uacf5 -&gt; COMMIT\nTransaction -&gt; \uc791\uc5c5 A -&gt; \uc791\uc5c5 B -&gt; \uc2e4\ud328 -&gt; ROLLBACK\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc740\ud589 \uc1a1\uae08, \uacb0\uc81c, \uc544\uc774\ud15c \uac70\ub798\ucc98\ub7fc \uc5ec\ub7ec \ub370\uc774\ud130\ub97c \ud568\uaed8 \ubcc0\uacbd\ud574\uc57c \ud558\ub294 \uc791\uc5c5\uc5d0\uc11c \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Isolation\uacfc Lock<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Transaction\uc744 \uc774\ud574\ud558\uba74 \uc790\uc5f0\uc2a4\ub7fd\uac8c Isolation\uacfc Lock\uc744 \ub9cc\ub098\uac8c \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc5ec\ub7ec \uc0ac\uc6a9\uc790\uac00 \ub3d9\uc2dc\uc5d0 \uac19\uc740 \ub370\uc774\ud130\ub97c \uc218\uc815\ud560 \uc218 \uc788\uae30 \ub54c\ubb38\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>User A -&gt; \uc0c1\ud488 \uad6c\ub9e4\nUser B -&gt; \uac19\uc740 \uc0c1\ud488 \uad6c\ub9e4\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc7ac\uace0\uac00 1\uac1c\uc778\ub370 \ub450 \uc694\uccad\uc774 \ub3d9\uc2dc\uc5d0 \ucc98\ub9ac\ub418\uba74 \ubb38\uc81c\uac00 \ubc1c\uc0dd\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc758 InnoDB\ub294 Lock\uacfc Transaction Isolation\uc744 \uc774\uc6a9\ud574 \uc774\ub7f0 \ub3d9\uc2dc\uc131 \ubb38\uc81c\ub97c \uc81c\uc5b4\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 Isolation Level\uc740:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>READ UNCOMMITTED -&gt; READ COMMITTED -&gt; REPEATABLE READ -&gt; SERIALIZABLE\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL InnoDB\uc758 \uae30\ubcf8 Isolation Level\uc740 \uc77c\ubc18\uc801\uc73c\ub85c <code>REPEATABLE READ<\/code>\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Isolation Level\uc5d0 \ub530\ub77c \ub2e4\ub978 Transaction\uc758 \ubcc0\uacbd \ub0b4\uc6a9\uc744 \uc5b4\ub290 \uc2dc\uc810\uc5d0 \ubcfc \uc218 \uc788\ub294\uc9c0\uc640 \ub3d9\uc2dc\uc131 \uc81c\uc5b4 \ubc29\uc2dd\uc774 \ub2ec\ub77c\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ubb34\uc5d0\uc11c\ub294 \ub2e8\uc21c\ud788 &#8220;Lock\uc744 \uac78\uba74 \uc548\uc804\ud558\ub2e4&#8221;\ub77c\uace0 \uc0dd\uac01\ud558\uae30\ubcf4\ub2e4 <strong>\uc5b4\ub5a4 Transaction\uc774 \uc5b4\ub5a4 \uc21c\uc11c\ub85c \ub370\uc774\ud130\ub97c \uc77d\uace0 \uc218\uc815\ud558\ub294\uc9c0<\/strong>\ub97c \ubcf4\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">InnoDB<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc5d0\uc11c\ub294 Storage Engine\uc774\ub77c\ub294 \uac1c\ub150\uc774 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc778 Storage Engine\uc774 InnoDB\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">InnoDB\ub294 Transaction, Row-level Locking, Foreign Key \ub4f1\uc744 \uc9c0\uc6d0\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c\ub294 InnoDB\ub97c \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MySQL -&gt; InnoDB -&gt; Data \/ Index \/ Lock \/ Transaction\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL \uc790\uccb4\uc640 Storage Engine\uc744 \uad6c\ubd84\ud574\uc11c \uc774\ud574\ud558\uba74 MySQL\uc758 \ub0b4\ubd80 \uad6c\uc870\ub97c \ubcfc \ub54c \ub3c4\uc6c0\uc774 \ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Connection\uacfc Connection Pool<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uc11c\ubc84\uac00 MySQL\uc5d0 Query\ub97c \ubcf4\ub0b4\ub824\uba74 DB Connection\uc774 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e8\uc21c\ud558\uac8c \ubcf4\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application -&gt; Connection -&gt; MySQL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub9e4 \uc694\uccad\ub9c8\ub2e4 Connection\uc744 \uc0c8\ub85c \ub9cc\ub4e4\uace0 \ub2eb\ub294\ub2e4\uba74 \ube44\uc6a9\uc774 \ucee4\uc9c8 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc77c\ubc18\uc801\uc73c\ub85c Connection Pool\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application -&gt; Connection Pool -&gt; C1 \/ C2 \/ C3 \/ C4 -&gt; MySQL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc694\uccad\uc774 \ub4e4\uc5b4\uc624\uba74 Pool\uc5d0\uc11c Connection\uc744 \ube4c\ub9ac\uace0 Query\ub97c \uc2e4\ud589\ud55c \ub4a4 Connection\uc744 \ub2e4\uc2dc Pool\uc5d0 \ubc18\ud658\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Spring Boot\uc5d0\uc11c\ub294 HikariCP \uac19\uc740 Connection Pool\uc774 \ub9ce\uc774 \uc0ac\uc6a9\ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">MySQL\uacfc \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc11c\ubc84\uc5d0\uc11c\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 MySQL\uc5d0 \uc9c1\uc811 SQL\uc744 \ub0a0\ub9ac\ub294 \uad6c\uc870\ubcf4\ub2e4 \ub370\uc774\ud130 \uc811\uadfc \uacc4\uce35\uc744 \ubd84\ub9ac\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; HTTP -&gt; Controller -&gt; Service -&gt; Repository \/ DAO -&gt; MySQL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc0ac\uc6a9\uc790\ub97c \uc870\ud68c\ud55c\ub2e4\uace0 \ud558\uba74:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/users\/100 -&gt; Controller -&gt; UserService -&gt; UserRepository -&gt; MySQL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Repository\uc5d0\uc11c Query\ub97c \uc2e4\ud589\ud558\uace0 \uacb0\uacfc\ub97c \uc560\ud50c\ub9ac\ucf00\uc774\uc158 \uac1d\uccb4\ub85c \ubcc0\ud658\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \uc5ed\ud560\uc744 \ubd84\ub9ac\ud558\uba74 HTTP \ucc98\ub9ac \ucf54\ub4dc\uc640 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc811\uadfc \ucf54\ub4dc\uac00 \uc11e\uc774\uc9c0 \uc54a\ub294\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">ORM\uacfc MySQL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84 \uac1c\ubc1c\uc5d0\uc11c\ub294 MySQL\uc744 \uc9c1\uc811 SQL\ub85c \ub2e4\ub8e8\ub294 \ubc29\uc2dd \uc678\uc5d0 ORM\uc744 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\ub3c4 \ub9ce\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub300\ud45c\uc801\uc73c\ub85c Java\uc5d0\uc11c\ub294 JPA\/Hibernate\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uac1d\uccb4\ub97c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>class User -&gt; Long id -&gt; String name\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub7fc \uc815\uc758\ud558\uace0 ORM\uc774 \uac1d\uccb4\uc640 \ub370\uc774\ud130\ubca0\uc774\uc2a4 Table \uc0ac\uc774\uc758 \ub9e4\ud551\uc744 \uad00\ub9ac\ud558\ub3c4\ub85d \ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application Object -&gt; ORM -&gt; SQL -&gt; MySQL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc ORM\uc744 \uc0ac\uc6a9\ud55c\ub2e4\uace0 SQL\uc774 \uc0ac\ub77c\uc9c0\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d MySQL\uc740 SQL\uc744 \uc2e4\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ubcf5\uc7a1\ud55c Query\ub098 \uc131\ub2a5 \ubb38\uc81c\ub97c \ub2e4\ub8e8\ub824\uba74 JOIN, Index, Execution Plan \uac19\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc790\uccb4\uc758 \uac1c\ub150\uc744 \uc54c\uc544\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">EXPLAIN<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Query \uc131\ub2a5\uc744 \ubd84\uc11d\ud560 \ub54c <code>EXPLAIN<\/code>\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EXPLAIN\nSELECT *\nFROM users\nWHERE email = 'joo@example.com';\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\ud589 \uacc4\ud68d\uc744 \ud655\uc778\ud558\uba74 MySQL\uc774 \ud574\ub2f9 Query\ub97c \uc5b4\ub5bb\uac8c \ucc98\ub9ac\ud558\ub824\uace0 \ud558\ub294\uc9c0 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 Index\ub97c \uc0ac\uc6a9\ud558\ub294\uc9c0, \uc5b4\ub5a4 \uc21c\uc11c\ub85c Table\uc744 \uc811\uadfc\ud558\ub294\uc9c0 \ub4f1\uc744 \ud655\uc778\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SQL -&gt; EXPLAIN -&gt; Execution Plan -&gt; Index \uc0ac\uc6a9 \uc5ec\ubd80 \/ \uc811\uadfc \ubc29\uc2dd \/ \uc608\uc0c1 Row \uc218 \/ JOIN \uc21c\uc11c\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Query\uac00 \ub290\ub9ac\ub2e4\uace0 \ud574\uc11c \ubb34\uc870\uac74 \uc11c\ubc84 \ucf54\ub4dc\ub97c \uc218\uc815\ud560 \uac83\uc774 \uc544\ub2c8\ub77c \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ud574\ub2f9 Query\ub97c \uc5b4\ub5bb\uac8c \uc2e4\ud589\ud558\ub294\uc9c0\ubd80\ud130 \ud655\uc778\ud560 \ud544\uc694\uac00 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">MySQL\uc758 \ub3d9\uc2dc\uc131<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\uc5d0\ub294 \ub3d9\uc2dc\uc5d0 \uc5ec\ub7ec \uc694\uccad\uc774 \ub4e4\uc5b4\uc628\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request A \/ Request B \/ Request C \/ Request D -&gt; MySQL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc740 \uc5ec\ub7ec Connection\uc758 Query\ub97c \ub3d9\uc2dc\uc5d0 \ucc98\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uacfc\uc815\uc5d0\uc11c Transaction, Lock, Index, Isolation Level\uc774 \uc11c\ub85c \uc5f0\uacb0\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uac19\uc740 Row\ub97c \ub3d9\uc2dc\uc5d0 \uc218\uc815\ud558\ub294 \uacbd\uc6b0 Lock\uc774 \ud544\uc694\ud560 \uc218 \uc788\uace0, Transaction\uc774 \ub108\ubb34 \uc624\ub798 \uc720\uc9c0\ub418\uba74 \ub2e4\ub978 \uc694\uccad\uc758 \ucc98\ub9ac\uae4c\uc9c0 \uc9c0\uc5f0\ub420 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c \uc11c\ubc84 \uc131\ub2a5\uc744 \ubcfc \ub54c \ub2e8\uc21c\ud788 Query \ud558\ub098\uc758 \uc2e4\ud589 \uc2dc\uac04\ub9cc \ubcf4\ub294 \uac83\uc774 \uc544\ub2c8\ub77c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Connection Pool -&gt; Concurrency -&gt; Transaction -&gt; Lock -&gt; Query -&gt; Index\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc804\uccb4 \ud750\ub984\uc744 \uac19\uc774 \ubd10\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">MySQL\uacfc Redis\uc758 \uc5ed\ud560<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uacfc Redis\ub294 \uc11c\ubc84\uc5d0\uc11c \ud568\uaed8 \uc0ac\uc6a9\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc740 \ub370\uc774\ud130\ub97c \uc601\uad6c\uc801\uc73c\ub85c \uad00\ub9ac\ud558\ub294 \uc8fc \uc800\uc7a5\uc18c\ub85c \uc0ac\uc6a9\ud558\uace0, Redis\ub294 \uc790\uc8fc \uc0ac\uc6a9\ud558\ub294 \ub370\uc774\ud130\ub97c \ube60\ub974\uac8c \uac00\uc838\uc624\uae30 \uc704\ud55c Cache\ub098 Session \ub4f1\uc5d0 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Application -&gt; Redis -&gt; Cache\nApplication -&gt; MySQL -&gt; Source of Data\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc0c1\ud488 \uc815\ubcf4\ub97c \uc870\ud68c\ud560 \ub54c:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Request -&gt; Redis -&gt; Cache Hit -&gt; Return\nRequest -&gt; Redis -&gt; Cache Miss -&gt; MySQL -&gt; Redis\uc5d0 \uc800\uc7a5 -&gt; Return\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Redis\uac00 MySQL\uc744 \uc644\uc804\ud788 \ub300\uccb4\ud558\ub294 \uad6c\uc870\ub77c\uae30\ubcf4\ub2e4\ub294 \uac01\uac01\uc758 \ubaa9\uc801\uc5d0 \ub9de\uac8c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">MySQL\uc758 \uc804\uccb4 \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c MySQL\uc744 \uc0ac\uc6a9\ud558\ub294 \uc804\uccb4 \ud750\ub984\uc744 \ubb36\uc5b4\ubcf4\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; HTTP -&gt; Application Server -&gt; Connection Pool -&gt; MySQL -&gt; InnoDB -&gt; Data \/ Index\nMySQL -&gt; InnoDB -&gt; Transaction -&gt; Lock\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130 \ubaa8\ub378\uc740:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Database -&gt; Table -&gt; Row \/ Column -&gt; Primary Key \/ Foreign Key\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Query\ub294:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT \/ INSERT \/ UPDATE \/ DELETE -&gt; JOIN -&gt; Index \/ EXPLAIN\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub3d9\uc2dc\uc131 \ucc98\ub9ac\ub294:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Transaction -&gt; Isolation -&gt; Lock\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \uc5f0\uacb0\ud574\uc11c \ubcf4\uba74 MySQL\uc758 \uc8fc\uc694 \uac1c\ub150\uc774 \ud558\ub098\uc758 \uad6c\uc870\ub85c \uc815\ub9ac\ub41c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc5d0\uc11c \uc790\uc8fc \uc0ac\uc6a9\ud558\ub294 \ud575\uc2ec \uac1c\ub150\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>RDBMS -&gt; Database -&gt; Table -&gt; Row \/ Column -&gt; Primary Key \/ Foreign Key\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Query\uc640 \uc131\ub2a5 \uce21\uba74\uc5d0\uc11c\ub294:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SQL -&gt; SELECT \/ INSERT \/ UPDATE \/ DELETE -&gt; JOIN -&gt; Index -&gt; Composite Index \/ EXPLAIN\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub370\uc774\ud130\uc758 \uc815\ud569\uc131\uacfc \ub3d9\uc2dc\uc131\uc5d0\uc11c\ub294:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Transaction -&gt; ACID \/ Isolation \/ Lock\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c\ub294:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; Application Server -&gt; Connection Pool -&gt; Repository \/ DAO -&gt; MySQL\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc815\ub3c4\ub85c \uc5f0\uacb0\ud558\uba74 \ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">MySQL\uc744 \uacf5\ubd80\ud560 \ub54c SQL \ubb38\ubc95\ub9cc \uc775\ud788\uba74 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc0ac\uc6a9\ud558\ub294 \uc218\uc900\uc5d0 \uba38\ubb3c\uac8c \ub41c\ub2e4. \uc2e4\uc81c \uc11c\ubc84 \uac1c\ubc1c\uc5d0\uc11c\ub294 <strong>\ub370\uc774\ud130\ub97c \uc5b4\ub5bb\uac8c \ubaa8\ub378\ub9c1\ud560\uc9c0, \uc5b4\ub5a4 Query\uac00 \uc2e4\ud589\ub418\ub294\uc9c0, Index\uac00 \uc5b4\ub5bb\uac8c \uc0ac\uc6a9\ub418\ub294\uc9c0, \uc5ec\ub7ec \uc694\uccad\uc774 \ub3d9\uc2dc\uc5d0 \ub4e4\uc5b4\uc654\uc744 \ub54c \ub370\uc774\ud130\uac00 \uc5b4\ub5bb\uac8c \ubcf4\ud638\ub418\ub294\uc9c0<\/strong>\uae4c\uc9c0 \ubd10\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uacb0\uad6d MySQL\uc758 \ud575\uc2ec\uc740 Table\uacfc SQL \ubb38\ubc95 \uc790\uccb4\ubcf4\ub2e4 <strong>\ub370\uc774\ud130\uc758 \uad00\uacc4, \uc815\ud569\uc131, \ub3d9\uc2dc\uc131, \uadf8\ub9ac\uace0 Query \uc131\ub2a5\uc744 \uad00\ub9ac\ud558\ub294 \uac83<\/strong>\uc5d0 \uc788\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>MySQL\uc740 \ub300\ud45c\uc801\uc778 \uad00\uacc4\ud615 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uad00\ub9ac \uc2dc\uc2a4\ud15c(RDBMS)\uc774\ub2e4. \uc11c\ubc84 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c \uc0ac\uc6a9\uc790 \uc815\ubcf4, \uc8fc\ubb38, \uacb0\uc81c, \uac8c\uc784 \ub370\uc774\ud130\ucc98\ub7fc \ub370\uc774\ud130 \uc0ac\uc774\uc758 \uad00\uacc4\uc640 \uc815\ud569\uc131\uc774 \uc911\uc694\ud55c \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\uace0 \uc870\ud68c\ud558\ub294 \ub370 \ub9ce\uc774 \uc0ac\uc6a9\ud55c\ub2e4. MySQL\uc744 \uc774\ud574\ud558\ub824\uba74 SQL \ubb38\ubc95\ub9cc \uc678\uc6b0\ub294 \uac83\ubcf4\ub2e4 \ud14c\uc774\ube14, \uad00\uacc4, Index, Transaction, Lock\uc774 \uc2e4\uc81c\ub85c \uc5b4\ub5bb\uac8c \uc5f0\uacb0\ub418\ub294\uc9c0\ub97c \uc774\ud574\ud558\ub294 \uac83\uc774 \uc911\uc694\ud558\ub2e4. \uae30\ubcf8\uc801\uc778 \uc11c\ubc84 \uad6c\uc870\ub294 \ub2e4\uc74c\uacfc \uac19\ub2e4. \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc9c1\uc811 \ub370\uc774\ud130 \ud30c\uc77c\uc744 \uc218\uc815\ud558\ub294 \uac83\uc774 \uc544\ub2c8\ub77c SQL\uc744 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[],"class_list":["post-1679","post","type-post","status-publish","format-standard","hentry","category-server"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1679","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1679"}],"version-history":[{"count":4,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1679\/revisions"}],"predecessor-version":[{"id":2028,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1679\/revisions\/2028"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1679"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1679"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1679"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}