<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Lock on Gukin Han</title>
    <link>https://gukin.dev/tags/lock/</link>
    <description>Recent content in Lock on Gukin Han</description>
    <generator>Hugo</generator>
    <language>ko-kr</language>
    <lastBuildDate>Fri, 08 Aug 2025 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://gukin.dev/tags/lock/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>MySQL InnoDB에서 읽기·쓰기 충돌부터 deadlock 로그 분석까지</title>
      <link>https://gukin.dev/posts/innodb-lock-conflict-deadlock-analysis/</link>
      <pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://gukin.dev/posts/innodb-lock-conflict-deadlock-analysis/</guid>
      <description>&lt;h2 id=&#34;요약&#34;&gt;요약&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;MVVC는 트랜잭션 시작점을 기준으로 &lt;strong&gt;데이터 버저닝&lt;/strong&gt;을 한다&lt;/li&gt;
&lt;li&gt;락 종류에 따라 &lt;strong&gt;충돌 상황을 테스트&lt;/strong&gt;
&lt;ul&gt;
&lt;li&gt;공유락은 말그대로 트랜잭션끼리 공유할 수 있다&lt;/li&gt;
&lt;li&gt;베타락은 말그대로 하나의 트랜잭션만 가진다&lt;/li&gt;
&lt;li&gt;공유락을 가진 상태로 업데이트, 삭제 등을 하면 베타락을 획득하려는 시도를 한다&lt;/li&gt;
&lt;li&gt;락 획득 대기 사이클이 생기면 데드락이 발생한다&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;데드락을 최소화&lt;/strong&gt;하기 위한 락 설계 방법:
&lt;ul&gt;
&lt;li&gt;락을 잡는 순서를 트랜잭션 마다 동일하게 유지&lt;/li&gt;
&lt;li&gt;락 범위를 축소&lt;/li&gt;
&lt;li&gt;첫 쿼리 부터 for update로 가져오는 방법&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;배경&#34;&gt;배경&lt;/h2&gt;
&lt;p&gt;이번 주차는 낙관적 락과 비관적 락을 학습하게 되었다. 비관적 락은 흔히 느리지만 정합성이 중요할때 사용하며, 낙관적 락은 충돌 가능성이 낮을 때 상대적으로 빠른 상황을 요구할때 사용한다고 한다.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
