MySQLがプロセスモデルで動いているように見えた件

先日、とあるシステムでpsしてみると、mysqlの子プロセスが大量に表示されたんです。 そう。まるでPostgreSQLのように。。。 初めてみたケースで、意味不明だったんですが、LinuxThreadsを使ってるみたい。 割と新しいシステムなのに、なんでLinuxThreadsなんだろう。。。

[Read More]
MySQL 

yumでインストールしたMySQLを複数起動する

yumでインストールしたMySQLを複数起動する起動スクリプトを書いたのでメモ。 CentOS 5.2, MySQL 5.0.45 で動作確認しました。 いろいろと細かく修正する必要があって、なんだかなー、といった感じです。 /etc/rc.d/init.d/mysqld-second とかそういう名前で作ってます。 ↓長いので本体は続きで。

[Read More]
MySQL  Linux 

MySQLチューニングの基本ツール - MySQL Tuner

MySQLをチューニングする時に、基本的な事項をチェックするツールとして便利なものがあったのでご紹介。



1ファイルのperlプログラムなので、ダウンロードして実行権限設定すれば簡単に実行できます。

↓実行結果はこんな感じ。カラーで安心。
mysqltuner.gif

細かい見方は、またおいおい。

[Read More]

稼働中のMySQLの情報収集

稼働中のMySQLの情報収集の方法です。

show status like 'Max%';
のように、絞り込みも使えるので便利ですね。

値を読む際には単位に注意しましょう。
公式ドキュメントには、単位がキッチリ書いてないものが結構あって難儀します。。。
mysql> show status;
mysql> show variables;
innodbの場合

[Read More]
MySQL 

[OpenXチューニング]MySQL物理データファイルのサイズ

OpenXでのMySQLチューニングの話

OpenXの場合、impressionをinsertでMySQLに記録するため
物理データファイルのサイズを小さく保つことが大事になります。

特に、インプレッションを記録する
ox_data_raw_ad_impression
テーブルのサイズが重要です。

実数はI/O性能によるので参考にしかなりませんが、
経験的にはデータファイルが800MBを超えたあたりから
急に性能が落ちてきます。

メンテナンススクリプトがテーブルをロックするので、
メンテナンススクリプトの処理時間が長いと
配信が遅延する原因になります。。。
また、データファイルが大きいと
配信自体(ox_data_raw_ad_impressionテーブルへのinsert)自体の
性能も低下する感じです。

と、いうわけで、

  1. 生データ保持期間を短くする
  2. (小さくできれば)データファイルを小さくする
という2つがポイントになります。

生データ保持期間を短くする
OpenXの管理画面で設定します。
ログイン ⇒ Administrator account ⇒ マイアカウント ⇒ 全般設定 ⇒ メンテナンス設定
集計後、統計情報の元データを削除しますか にチェック
統計情報を削除するまでの猶予期間(秒)  を設定
実際にデータが削除されるのは
メンテナンススクリプト(定期メンテナンス or 自動メンテナンス)が
実行されるタイミングです。
データファイルを小さくできるか調べる
show table statusで調査できます。
Data_freeが大きい場合、小さくする余地ありです。
mysql> show table status where name like 'ox_data_raw_ad_impression' \G;
データファイルを小さくする
データファイルが大きくなりすぎた場合、
PostgreSQLならVACUUMコマンドで対応しますが
MySQLの場合はOPTIMIZE TABLE句で対応します。
mysql> OPTIMIZE NO_WRITE_TO_BINLOG TABLE ox_data_raw_ad_impression;
分速80MBくらいのスローペースで、テーブルにロックがかかるので、
頻繁に実施するか/まとめて実施するかは
システムの特性にあわせて選択するのがよいと思います。

[Read More]