まずpreadのことですが、
MyISAMの場合、インデックスはキャッシュされますが、データはキャッシュされません。
そのためデータの読み込みがボトルネックになるということです。
ただし、MySQL5.1.4からはmmapシステムコールを使ってMyISAMテーブルのデータファイルをメモリ上にマッピングする機能が追加されています。my.cnfでmyisam_use_mmap = 1とするとこの機能が有効になります。32ビットCPUの環境では、mmapできるデータファイルの大きさは2GBまでに制限されます。
同じブログのMyISAM mmap feature (5.1)というエントリィに詳細が載っています。
PKEYでの1件の読み込みだと変わりませんが、それ以外の読み込みだと2倍くらいに性能が上がっているのが検証されています。
mutexは相互排他ロックのこと。関係するパラメータとしてinnodb_sync_spin_loopsがあります。
自分なりにポイントを考えてみました
・PRIMARY KEYでのアクセス以外はいずれもinnoDBのほうがかなりパフォーマンスが良いこと。「世の常識」とは逆行する結果になっているのですが、今後、会社のメンバーに検証してもらう予定です。
・特に、SELECT name FROM $tableName WHERE country_id = %d LIMIT 5でInnoDBの方が1.5倍くらい速いのは注目ですね。ブログ等で良く使う(最新のXXXX n件表示とか)クエリーですから。
このネタはもうしばらく続きます。



