タグ別アーカイブ: mysql

PDOでMySQLに接続してプリペアードステートメントを使うと、クエリーキャッシュがきかないことがある

条件は

この二つの条件にあてはまる場合、プリペアードステートメントを使うとクエリーキャッシュがきかない。

続きを読む PDOでMySQLに接続してプリペアードステートメントを使うと、クエリーキャッシュがきかないことがある

CentOS 5.7 にMySQL 5.1を公式rpmからインストール

MySQL の公式 RPM を使おう を参考に。

まずはここから必要なファイルをダウンロードして

  • rpm -ivh MySQL-client-community-5.1.59-1.rhel5.i386.rpm
  • rpm -ivh MySQL-shared-community-5.1.59-1.rhel5.i386.rpm
  • rpm -ivh MySQL-server-community-5.1.59-1.rhel5.i386.rpm
  • rpm -ivh MySQL-devel-community-5.1.59-1.rhel5.i386.rpm

これで /etc/ini.d/mysql start から起動して、 mysqlコマンドでもアクセスできたので以上終了。

と、思いきや yum install php-mysql してみたら libmysqlclient.so.15 が原因で競合が発生してしまったので、

  • rpm -e MySQL-shared-community-5.1.59-1.rhel5.i386.rpm
  • rpm -ivh MySQL-shared-compat-5.1.59-1.rhel5.i386.rpm

と、した後に yum install php-mysql が通ったので、ディストリビューションの用意しているリポジトリとの共存を考えると、MySQLの共有ライブラリは互換ライブラリを使った方が良さそう。

MySQLのtmpdirをtmpfsにしてusing filesortのSQLも高速化?

未検証だけど、動きそうな気がする。

ただし、レプリケーションしているときのslave側はちょっと注意が必要で、「MySQLがテンポラリファイルを格納する場所」を読む限りダメって書いてあるんだけど、「レプリケーションスタートアップオプション」を読むと、–slave-load-tmpdir=filename に揮発しないストレージを指定すればよさそう。

Amazon EC2のMicro InstanceにAmazon Linuxをインストールしてからやったこと

まずは全体的なところから

  • root宛てのメールを自分に転送
    vi /etc/aliases で root: {$メールアドレス} にしてから newaliases
  • タイムゾーンを日本標準時にする
    cp /usr/share/zoneinfo/Japan /etc/localtime で、一回ログオフしてつなぎなおせばOK。
    (あと crond の再起動が必要)
  • システム文字コードの変更
    vi /etc/sysconfig/i18n で、LANG=”ja_JP.UTF-8″ にすればOK。
  • iptablesの設定

続きを読む Amazon EC2のMicro InstanceにAmazon Linuxをインストールしてからやったこと

MySQLにおけるパフォーマンスチューニング

メモリー周りは設定ずみとすると、「インデックスを張る」という一般的なRDBMSにおけるチューニングとやることは同じ。

slowqueryがログに出てくれるのと、log-queries-not-using-indexes をつけておくとインデックスが使えていないものもログに出てくれるんで楽チン。

ただし、インデックスフルスキャンがインデックスを使えていないのと同様にログに出ちゃうので、そもそもシンプルなSQLでアクセスするようにテーブルを設計するのが大事。という結論。

mysqlのquery-cacheを有効にしてみた

mysqlは今のところMTでしか使ってないので、チューニングしても効果がわかりにくいかな?と、思って手をつけてなかったんだけど、「query-cacheを有効にすると再構築が早くなる」的なエントリを見かけたので試してみた。

my.cnf に「query_cache_size=32M」って書いてmysqlを再起動。MTで再構築を試してみると、

んーほとんど体感できねーー。

このサーバーAtom330だから完全にCPUがボトルネックになってる感じだなぁ。