• ベストアンサー

InnoDBとMyISAMについて

他にも似たような質問はありましたが、質問させてください。 PHP:4.4.4 MySQL:4.1.21 Apache:2.0.58 テーブルを4つ作成予定です。 ・テーブルA→INSERTが中心。SELECTもそこそこ頻繁。 ・テーブルB→INSERT,UPDATEが中心。SELECTもそこそこ頻繁。 ・テーブルC→SELECTがメインだが、UPDATE,INSERTもあり、テーブルDとの整合性が必要。 ・テーブルD→SELECTがメインだが、UPDATE,INSERTもあり、テーブルCとの整合性が必要。 テーブルCとテーブルDをInnoDB, テーブルAとテーブルBをMyISAMにしようと思っていますが、InnoDBは速度が遅いとも書いてあるので心配です。 またInnoDBは運用が面倒だと書いてあるサイトもありましたが、具体的にどう面倒なのかがわかりません。 MySQLのサイトを見る限り、特に面倒な事は無いように感じますが、MyISAMと違って運用面で気をつけることがあるのでしょうか。 教えてください。御願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#249320
noname#249320
回答No.2

アクセス数にもよりますが, 数万件程度ならインデックスをきちんと張っていれば, MyISAM, InnoDB のどちらでも運用に耐えうると思いますよ。 # インデックスを張っていなくても問題ないかも MyISAM はトランザクションという概念がないので, 異なるデータベースプロセスが テーブルの同じ行を同時にアクセス/更新する場合などに不整合が起こる可能性があります。 アプリケーションがテーブルの同じ行に同時にアクセスするような作りになっていなければ MyISAM でいいですし, 同じ行を同時に参照して更新のような作りになっていたら InnoDB の方がよいでしょう。 # MyISAM でも LOCK などで対応することができますが, 色々面倒です 大雑把に言うと, ・MyISAM は高速だがトランザクションがない ・InnoDB は安全だが MyISAM より遅い という感じです。 InnoDB が MyISAM より遅いとはいっても, きちんと運用すれば 数百万~数千万のデータは普通に扱えますので, 現時点では特にどちらを, ということはないかと思います。

chobi55
質問者

お礼

y-110様、御回答ありがとうございました。大変参考になりました。 今回はInnoDBで作成することにしました。MySQLは使い慣れているオラクル等とは違う点が多々あるので難しいです。

その他の回答 (1)

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

気にする必要があるのはむしろMyISAMですので InnoDBであれば通常のSQLのつくりをしていれば 大丈夫でしょう。 とくにトランザクションがないMyISAMの場合、 UPDATEに整合性は期待できないことはご周知かと思いますが 運用の仕方である程度カバーできます。 複数で同時接続して、いっせいにデータをUPDATEするような 仕組みでなく、検索中心の小さなDBならばMyISAMのほうが 効率はよいかもしれませんね。 また4.1系であればサブクエリは便利ですが、 無理やり一文にすることでかえって非効率な場合も 考えられます。 場合によってはテンポラリーをつかって複数の SQLでやったほうが処理が速い場合もありますので 十分な検証が必要でしょう。 中級~上級者むけの書籍にはチューニングの仕方なども よくのっているのそれを参考になさるとよろしいかと。

chobi55
質問者

お礼

ありがとうございます。 InnoDBであっても通常の運用で大丈夫なんですね。 複数同時接続でUPDATEなどをしなければ、MyISAMでもトラブルは起きにくいのでしょうか? テーブルA・Bに関しては、INSERTされたものに対してUPDATEとSELECTをかけるので、INSERTは複数同時にありえますが、UPDATE/SELECTは同時には1・2箇所からしか起こりません。 テーブルC・Dは複数同時SELECTはありえますが、テーブルCに関してはINSERT,UPDATEは1箇所からのみ、テーブルDの複数同時INSERT,UPDATEはせいぜい5箇所程度です。 ただし、テーブルDをINSERT,UPDATEする時は、必ずテーブルCのINSERT,UPDATEが発生します。 テーブルC・Dに関してはレコード数は最大100~500件程度です。 テーブルA・Bに関してはレコード数はどんどん増えてはいきますが数万件ということは無いと思います。 それほど大きいDBではないので、MyISAMの方が検索の為にはいいのでしょうか? また、お薦めの書籍がありましたら教えてください。 繰り返しの質問になりますが、御願いします。

関連するQ&A