2009.04.01
さて…なにかしら作っていると、やはり「処理にかかる時間」ってのは気になると思います。
まぁ、本来はそこでコード,アルゴリズム,処理フロー等を見直したり、
DB,Webサーバ環境面のチューニングを行なったり。
はたまた運用フローを調整して処理をカットしたり…など、色々と対策を打つワケで。
ただ「それでもイマイチ軽くならない」と言った場合に使う「お手軽なカード」として、
「APC(Alteanative PHP Cache)」ってのを使ってみました。
APCってのはPHP用のアクセラレータ(機能,処理向上させる為のソフトやハードの総称)の1種でして、
他にもeAccelerator,XCache,ZendOptimizer,PHPAccelerator辺りが有名らしいですが、
とりあえず今回はAPCだけ。
(more…)
2009.03.13
よくMYSQLとPostgreSQLについて、どうなの?
と疑問を持たれる方がいると思います。
下記を見ながらふぅ~んと思いながらお読みください。
MYSQLは
■マルチスレッド構成で動作する
MySQL は、まず mysqld と呼ばれるプロセスの中にいくつかの
スレッドを起動します。
その中の1つのスレッドにてクライアントからの接続要求を
待ち受ける形になります。
■テーブルごとにストレージエンジンを選択できる
MySQL のストレージエンジンと言えば、
InnoDB や MyISAM が有名ですが、
その他にも多くのエンジンをサポートしています。
現状は、トランザクションと行レベルロックをサポートしている
InnoDB が主流そうです。
※InnoDBとは「いのでーびー」
コミット、ロールバック、クラッシュリカバリの
各機能を備えたトランザクションセーフ(ACID 準拠)の
ストレージエンジン
※MyISAMとは「マイアイサム」
MySQLでデフォルトのテーブルとして使用されている形式。
処理がPostgreSQL等に比べ非常に高速であるが、
機能は至ってシンプルである。
各 MyISAM テーブルはディスク上に3つのファイルとして
保管されます。そのファイル名はテーブル名で始まり、
ファイルタイプを指示する拡張子が付きます。.frm ファイルは
テーブルフォーマットを格納します。データファイルには .MYD (MYData) 拡張子が付きます。インデックスファイルには .MYI (MYIndex) 拡張子が付きます。
■簡単なロードマップ
・MySQL4.1系
サブクエリが使用可能となりました。また Unicode にも対応しました。
・MySQL5.0系
ビューやストアドプロシージャが使えます。
ただし、MySQL のビューには FROM 句にサブクエリが使えないという制限があります。
・MySQL5.1系
クラスタリング機能が実装されています。
・MySQL5.2系
ストレージエンジンに Falcon が登場予定?
PostgreSQLとは
■マルチプロセス構成で動作する
postmaster と呼ばれるプロセスでクライアントからの接続要求を待ち受けます。
■データベースエンジン
MySQL の InnoDB同様、トランザクションと行レベルロックをサポートしています。
どちらも MVCC(マルチバージョン並行処理制御)が使われています。
■簡単なロードマップ
・PostgreSQL7.x系
MySQL よりも早い段階で、RDBMS としての主要な機能(サブクエリやビュー)を搭載していた。
・PostgreSQL8.x系
性能向上が徐々にされ、クアッドコアなどマルチ CPU の環境で、
CPU 数に比例した処理を実現しているそうです。
8.3 では、VACUUM 処理を極力使わなくても済むように、
HOT という新機能が予定されています。
VACUUMは適度にした方がいいみたい・・・
まとめ
■PostgreSQL
・データの参照と削除は速い
・クライアントからの同時接続数が増えても、パフォーマンスには大きく影響しない
■MySQL
・データの登録と更新は速い
・クライアントからの同時接続数が 200 を超えたあたりからパフォーマンスが一気に低下する
とはいえ、ちゃんとどちらも専門知識をもち、用途によってSQLをチューニングすることを
考慮していないので、慣れているものを使うのがベストかも?と思った今日この頃・・・