恥知らずのウェブエンジニア -web engineer, shameless

これは一歩を踏み出すことができない者たちのブログ

もう一度向き合うmysql(1)〜ストレージ、設定、ログとか〜

これまでの見直し、再確認第一弾はmysqlを。

といっても
関わってきたプロジェクトがkvs重視でmysqlはマスターデータ担当って感じで、
今まで困ったときに調べる程度で、ちゃんとやってきてませんでした。

先の転職面接でも毎回mysqlのことは質問され詰まるところもあったので、

MySQL徹底入門 第3版 ?5.5新機能対応?

MySQL徹底入門 第3版 ?5.5新機能対応?

とりまこちらの本を参考に再確認していこうかと。


以下、もはや自分用メモ。

ストレージエンジンの種類

└その名の通り、データをメモリに収める。停止とかしたらもちろんデータは消える

  • MERGE

└同じ形のMyISAMのテーブルを連結して、1つのテーブルのように扱う

└その名の通り、CSV形式でデータを保存。NULL使えない。

  • ARCHIVE

└データをgzipで圧縮する。index,DELETE,UPDATE使えない

  • BLACKHOLE

└自分ではデータを保存しない。
 bin-logは出せるので、マスターにはデータは残さないが、スレーブに残すとかできる。

  • FEDERATED

└リモートのmysqlサーバーのテーブルをローカルにあるように使える


トランザクションの種類

  • READ UNCOMMITED

 └同一トランザクション内でもまだコミットされてないデータも見てしまう

  • READ COMMITTED

 └同一トランザクション内でもコミットされたら、そのデータを見てしまう

  • REPEAT TABLE READ

 └同一トランザクション内なら、コミットされてもデータは変わらない

  • SERIALIZABLE

 └1つ1つ順番に処理されるが、そのためロックかかりやすい


SAVE POINT

トランザクション内でsave point をつくって、いったんそこまで戻ることができる

mysql>BEBIN;

mysql>INSERT ・・・;

mysql>SAVEPOINT hoge;

mysql>INSERT ・・・;

mysql>ROLLBACK TO hoge;//hogeの状態まで戻る

pager

mysql> pager less

mysql> nopager//解除

でもろもろ表示をlessで表示される


設定ファイル

  • 設定ファイル読み込まれる順番
  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. sysconfdir /etc/my.cnf
  4. $MYSQL_HOME /my.cnf
  5. --defsults-extra-file=オプションで指定したファイル
  6. ~/.my.cnf

mysqlサーバーの状態確認

  • status

 └簡単な情報表示

  • show global status

 └詳細情報表示

  • show variables

 └変数、設定値表示

  • show full processlist

 └現在実行中のスレッド表示


各種ログ

log-error=/var/log/mysqld.log #的な my.cnfに
  • slow queryログ
slow_query_log=ON
slow_query_log_file=/var/tmp/slow.log
long_query_time = 3
#的な my.cnfに
  • generalログ
general_log=ON
general-log-file=/var/tmp/sql.log
#的な my.cnfに
  • バイナリログ
log-bin=mysql-bin
binlog_format=mixed
#的な my.cnfに
#mixedはsql文とsql文解析後のデータ両方取っておく指定


一旦今回はここまでー
後半へ続く。



感謝致します。

  1. f:id:ogataka50:20140621003227j:plain