My Photo

« 座間味島に行ってきた(1) #okinawa | Main | 座間味島に行ってきた(2) #okinawa »

May 02, 2012

MySQLメモ009:便利なSQL文 その3(ロック、フラッシュ、クエリキャッシュ)

テーブルのロック

LOCK TABLES <テーブル名> {READ [LOCAL] | WRITE} [,...]

READロックはすべてのスレッドから読み取りはできるが書き込みはできない。
READ LOCALロックはすべてのスレッドから読み取りはできる。ロックしているスレッドのみ書き込みができる。
WRITEロックはロックしているスレッドのみ読み書きができる。他のスレッドは読み書きができない。
ロックを解除は UNLOCK TABLES で行う。LOCK TABLES文を実行するとそれまでのロックは解除されるので、複数のテーブルをロックする場合はカンマで区切ってテーブル名とロックの種類を続けて書く。下記の実行例ではt1にREADロック、t2にWRITEロックをかけている。

mysql> LOCK TABLES t1 READ, t2 WRITE;
Query OK, 0 rows affected (0.06 sec)

mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

テーブルのフラッシュ

FLUSH TABLES文はメモリにキャッシュされた情報をディスクに書き出す。RELOAD権限が必要。

FLUSH TABLES [<テーブル名> [,...]] [WITH READ LOCK]

WITH READ LOCK を付けた場合は、フラッシュしてから読み取りロックをかける。バックアップや修復の時に使われる。

mysql> FLUSH TABLES t1, t2 WITH READ LOCK;
Query OK, 0 rows affected (0.06 sec)

mysql> UNLOCK TABLES;
Query OK, 0 rows affected (0.00 sec)

クエリキャッシュ使用/不使用の指定

MySQLにはSELECT文の結果をキャッシュしておき同じSELECT文が次に来たときに結果をキャッシュから返すクエリキャッシュという機能がある。
SELECT文でSELECTの後に SQL_CACHE、SQL_NO_CACHE を付けることで結果をクエリキャッシュに入れる/入れないを指定できる。

  • SQL_CACHE:SELECT文と結果をクエリキャッシュに入れる。
  • SQL_NO_CACHE:SELECT文と結果をクエリキャッシュに入れない。

mysql> SELECT SQL_CACHE * FROM t1;
+------+
| col1 |
+------+
| a    |
| b    |
+------+
2 rows in set (0.00 sec)

mysql>
mysql> SELECT SQL_NO_CACHE * FROM t2;
+------+
| col1 |
+------+
| b    |
| c    |
+------+
2 rows in set (0.00 sec)

« 座間味島に行ってきた(1) #okinawa | Main | 座間味島に行ってきた(2) #okinawa »

MySQL」カテゴリの記事

Comments

Post a comment

(Not displayed with comment.)

TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/26461/54614968

Listed below are links to weblogs that reference MySQLメモ009:便利なSQL文 その3(ロック、フラッシュ、クエリキャッシュ):

« 座間味島に行ってきた(1) #okinawa | Main | 座間味島に行ってきた(2) #okinawa »

March 2017
Sun Mon Tue Wed Thu Fri Sat
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31  
無料ブログはココログ

日本blog村

  • にほんブログ村 IT技術ブログへ
  • にほんブログ村 アニメブログへ
  • にほんブログ村 サッカーブログ アルビレックス新潟へ

好きな音楽家

メモ

XI-Prof