mysql

MySQLのINSERT/UPDATE時におこる不整合対策

先日、作っているアプリケーションにバグが発生しました。バグの内容は次のようなものでした。 同時に存在してはいけないはずのデータが、DB に存在する 整合性のチェックはアプリケーションレベルで行っている 一意制約のような単純なものではないので、ア…

MySQL のNULL ではまったことあれこれ

MySQL に限らず、SQL のNULL の仕様には何回か「えっ」と驚くことがあったのでメモしておこうと思います。5.1 版の日本語マニュアルがなかったものについては、4.1 のマニュアルを参照しました。 そもそもNULL は何を意味するか NULL は未定義または、不明を…

MySQL のバックアップと世代管理

要件 バックアップはmysqldump バックアップファイルは1週間前のまで残して欲しい 8日以上前のものは消す 簡単じゃんと思ったら案外罠があった。 設定 バックアップ MAILTO="youraddress" PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bi…

COUNT 関数を使ってMySQL のインデックスの基本を理解する

Linux-DB システム構築/運用入門の8章「インデックスのチューニング(前編)」を読んだので、インデックスの基本について実際に手を動かしながら勉強してみようと思います。 内容としては、クエリを実行する際に、「インデックスだけにアクセスした場合」と、…

ActiveRecord でbulk insert/update

mala さんのMySQLにおけるbulk insert と bulk update - 金利0無利息キャッシング – キャッシングできます - subtechのエントリーを見て, MySQL でbulk update ができることを知り, 丁度欲しい機能だったのでとりあえず動くだけのメソッドを実装. # User.ext…

MySQL とメモリに関するまとめ

前回のエントリーデータベースを用いたセッションデータ管理についてで、MySQL とメモリの関係について良く分からない部分があると書きました。 実はここに関する理解はかなり曖昧な部分があって、調査して追記します。とくにメモリ利用量について。mysqld …

データベースを用いたセッションデータ管理について

Web アプリケーションとは切っても切れないセッション機構。DB ベースでセッション管理を行なって得られた知見と、それを元に考察した結果をまとめてみます。 セッションデータの特性 DB で管理される他のデータに比べ、セッションデータはかなり特殊です。…

SQL のWHERE句の条件に関数を使うとインデックスが使用されない

Rails でfind_by_sql を使う場合に、大きいSQL だと次のようにSQL 中に関数を使ってしまうことがありました。 単純な例だとこんな感じ。 User.find_by_sql([<<-SQL, {:id => 1}]) SELECT * FROM users WHERE IF( :id, id = :id, 1 ) SQL でも、このようにIF …

UNIQE INDEXと JOIN とORDER BY で無用なソートが発生するケースとその回避方法

Amazon.co.jp: 実践ハイパフォーマンスMySQLを読んでいたら「クエリチューニング」の章(p. 101)でタイトルにある問題が取りあげられていたので考察。 MySQL のバージョンは「5.0.67」。 サンプルDB サンプルとして、よくある商品と注文のテーブルを使います…

Mac にphpMyAdmin を入れる手順

MySQL を使って開発している人ならお世話になるであろうphpMyAdmin。なんと、最近まで使っていませんでした。先輩が使っているのを見てとっても便利そうだったので、インストールしました。その手順をメモりります。 phpMyAdmin って何 Wikipedia から引用。…