@kyanny's blog

My life. Opinions are my own.

MySQL

MySQLのインデックスを学ぶ (2)

Linux-DBシステム構築運用入門をさらに読んでいる。前回は主に Chapter 8 を読んだ内容をメモったが今回は Chapter 9 の内容。 INSERT とインデックス インデックスが多いと INSERT の性能が落ちる、という話題はなんとなく見聞きしていたが、何故性能が落ち…

MySQLのインデックスを学ぶ (1)

実践ハイパフォーマンスMySQL 第2版とLinux-DBシステム構築運用入門を読んで、 MySQL のインデックスについて勉強しなおしている。理解が曖昧だった部分の知識を深められたり、自分の間違いに気づけたりして、とても収穫が多い。 フルテーブルスキャンとフル…

Maatkit の mk-query-profiler を少し使ってみた

Maatkit というMySQL 用のユーティリティプログラムがあります。詳しくは インフラ系エンジニア勉強会 "hbstudy"でMaatKitについて発表してきました - marqs blog とか maatkitを一通り使ってみたメモ - ククラフト とかをどうぞ。mk-query-profiler という…

MySQL の MEMORY(HEAP) ストレージエンジンを使うときは index_type に気をつけろ

結論: MEMORY ストレージエンジンの index_type はデフォルトで HASH なので = or 演算子を使用する等価比較にのみ使用される。 >, >=, MySQL 5.0.75 (やや古めかしい?)を使っていて、 MEMORY ストレージエンジンのテーブルに対して、 SELECT * FROM tbl W…

SELECT ... INTO OUTFILE 構文を使って結果セットを CSV 形式でファイルに書き出す

MySQL :: MySQL 5.6 リファレンスマニュアル :: 13.2.9 SELECT 構文 SELECT ... INTO OUTFILE '/tmp/hoge.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY "\n" FROM ... FIELS TERMINATED BY フィールドの区切り文字を指定 …

Killed のまま消えずに残っている mysql のスレッドがある場合どうすればいいのだろう

http://txqz.net/blog/2006/11/22/0959 とだいたい同じ状況だと思う(repair table したわけではない)が、こういう場合どうすればいいんだろう。もう三時間くらい待っているけど消えない。シャットダウンとか無理だしなぁ。

memo: MySQL のソートの仕組みと実行計画の読み方 (Using filesort, Using temporary)

漢(オトコ)のコンピュータ道: Using filesort素晴らしい記事。「Using filesort が出ると遅いのでインデックスを使うようにクエリを改良しましょう」みたいなことは各所で見られるけど、「そもそも Using filesort ってどういう意味?」とか「改良しろってい…

Slave_IO_Running が No でレプリケーションが止まった、復帰は

以下のようにして復帰できた。 mysql> START SLAVE IO_THREAD;ディスクが一時的にあふれて、 Slave_SQL_Running は Yes なのにこっち側だけ止まったらしい。

MySQL のインデックスは ORDER BY 句にかかる部分も含めてはること

SELECT * FROM table1 WHERE foo > 0 ORDER BY id DESC LIMIT 100こんな SQL を発行したいときに、 ALTER TABLE table1 ADD INDEX (foo)このインデックスだけでは十分ではなく、 ALTER TABLE table1 ADD INDEX (foo, id)のように複合インデックスをはらない…

MySQL でカラム名を変更するには ALTER TABLE tbl CHANGE を使う

いっつも RENAME とかしてエラーになるので、メモ。 ALTER TABLE tbl CHANGE col1 col2 INT NOT NULL DEFAULT 0;とか。 CHANGE col1 col2 で間に TO とか入らないのと、後ろに create definition をつけないとダメなのが覚えられない。同じ型で変更がなくて…

MySQL データベースから改行コードをエスケープせずカラム値のみ取り出す

XML をカラムに入れているテーブルがあって、そこから特定の一行を出したかったのだけど が \n にエスケープされてしまってデータがちょっと壊れてしまうのとカラム名が含まれてしまって生の XML だけにならないのが嫌だったのでオプションを調べたら、以下…