Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
6
Help us understand the problem. What is going on with this article?
@a-nishimura

MySQLのLOCK TABLESとは?何をしているのか

More than 1 year has passed since last update.

SQLクライアントツールなどでdumpを取得した場合、
テーブルに対してlock tableという指定がされます。
ロックが何をしているかの調査結果メモです。

LOCK TABLESとは

MySQLのクライアントセッションは、他のセッションと連携してテーブルアクセスする際に、
排他的制御をする場合、他のセッションにテーブルを更新されないように明示的にロックをかけることができます。
これがlock tablesの指定になります。
select for updateの指定と類似ですね。
dump時は他のセッションとデータの不整合を発生させないために明示的にロックを指定されているようです。

コマンドはこちらです。

LOCK TABLES {tbl_name}
    READ | WRITE

ロックの種類は

READロック

  • このロックを保持しているセッションは、テーブルを読み取ることができます
    (書き込みはできません)

  • 複数のセッションが同時にテーブルに対する READ ロックを取得できます

  • ほかのセッションは、READ ロックを明示的に取得することなく、テーブルを読み取ることができます

ちなみにロックが必要なセッションは1つのステートメントで全て指定することが必要です。
なので、例えば

1). > LOCK TABLES test1 READ;
2). > SELECT * FROM test1;
3). > SELECT * FROM test2;

2はロックを指定しているのでtest1にアクセスできますが
3はtest2へのロックを取得していないのでアクセスできません。
この場合、test2へのロックを指定するか一度unlockする必要があります。

※他のセッションからはアクセスできます。
※INFORMATION_SCHEMAへのアクセスは例外です。ロック関係なくアクセス可能です。

WRITEロック

  • このロックを保持しているセッションは、テーブルの読み取りおよび書き込みが可能です

  • このロックを保持しているセッションだけがテーブルにアクセスできます。ロックが解放されるまで、ほかのどのセッションもアクセスできません

  • WRITE ロックが保持されている間、テーブルに対するほかのセッションからのロック要求はブロックされます

セッション解放

ロックのセッションを解放する場合は

UNLOCK TABLES

を使用します。テーブル名指定不要。

参照:https://dev.mysql.com/doc/refman/5.6/ja/lock-tables.html

6
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
a-nishimura
フリーランスプログラマ。主にweb系のソフトウェアエンジニアです。日々の学びや気づきなどブログ書いてます。フットサル、筋トレ、日向坂46、YouTubeが好きです。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
6
Help us understand the problem. What is going on with this article?