FC2ブログ

徒然さめざめ

思ったことを思ったときに思ったように

mysql の wait_timeout を使用する際の注意

MySQL server has gone away エラー
http://dev.mysql.com/doc/refman/4.1/ja/gone-away.html

この対応で wait_timeout を設定するといいとかかれている。

設定値の上限は1年の31536000(秒)が一般的に書かれているが、
これに注意しなくてはいけない。 続きを読む
スポンサーサイト



mysqlのライセンス

別にお金を取ってるサービスでは無いけれど、mysqlを使ったサービスをGPLで提供するには
サービスもGPLでないといけないので、そろそろソースを公開しなくてはならない。

・・・気がする。

そもそもrailsで作った蔵書管理するためのアプリだけど、こんなのいる(使う)人いるんだろうか?

ちなみにどんなアプリかは公開方法を検討中。
# 準備はできてるんだけどなっ

テーマ:インターネットサービス - ジャンル:コンピュータ

SQL での N+1問題


1+N 問題 という場合もあるのかもしれない。

なんにせよよく知らなかったので調べてみた。

どういうものか
全レコードの取得に一つ+各レコード分だけ SQL を発行してしまう問題
データを取得するのに、データの件数分(N)+ 1回のSQL文をデータベースに対して発行してしまいます

なにが問題になるか
データベースに過大な負荷をかけ、パフォーマンス低下に招きます。



Hibernate one-to-one のN+1問題及びその回避策
http://www.syboos.jp/hibernate/doc/20080806135128920.html

テーマ:プログラミング - ジャンル:コンピュータ

[復旧記事] mysqlのデータベース文字コード再設定

redmineで文字数制限がうまく動かないので調べてたら
使っているデータベースの文字コードがlatin1となっていた。
しょっく。

で、これをutf8にするための手順を以下に。
ちなみに新規でDBを構築する人はこちらを見たほうがいいかも。
[MySQL] 文字化け問題を本気で直す by ノk|*‘-‘)<ノリマツ!愛だよ、愛!
http://wota.jp/ac/?date=20061011
サイト名 くまくまー (AA略) だと思ってたけど(titleとかそうなってるし)...

# mysql -u root database_name
> mysql> status;
> --------------
...
> Server characterset: utf8
> Db characterset: latin1
> ~~~~~~
> Client characterset: utf8
> Conn. characterset: utf8

バイナリでdumpし文字化けが無いように出力する。
# mysqldump --default-character-set=binary -u root database_name > dump.sql

dump.sqlの中身で
> NGINE=InnoDB DEFAULT CHARSET=latin1;
となっていることろを
> NGINE=InnoDB DEFAULT CHARSET=utf8;
と全て変更(置換)する。

変更が終わったらDBへ戻す。
前に、mysqlの設定を確認しておく。
# cat /etc/my.cnf |grep character-set
default-character-set = utf8
skip-character-set-client-handshake
設定されていたら、いざ!
# mysql -u root database_name < dump.sql

これで終わり。

うまく文字数制限も動いてるようです。

windows でも同様に可能でした。

ただ binaryで出力しても文字化けしてたので
構築済みのデータは文字化けしたままかもしれないのでご注意を。

データベースを一度dropしないと latin1 のままだったりします。
status を発行して確認しましょう。
status;
...
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8

テーマ:プログラミング - ジャンル:コンピュータ