プロが教える店舗&オフィスのセキュリティ対策術

他にも似たような質問はありましたが、質問させてください。
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と違って運用面で気をつけることがあるのでしょうか。

教えてください。御願いします。

A 回答 (2件)

アクセス数にもよりますが, 数万件程度ならインデックスをきちんと張っていれば,


MyISAM, InnoDB のどちらでも運用に耐えうると思いますよ。
# インデックスを張っていなくても問題ないかも

MyISAM はトランザクションという概念がないので, 異なるデータベースプロセスが
テーブルの同じ行を同時にアクセス/更新する場合などに不整合が起こる可能性があります。

アプリケーションがテーブルの同じ行に同時にアクセスするような作りになっていなければ MyISAM でいいですし,
同じ行を同時に参照して更新のような作りになっていたら InnoDB の方がよいでしょう。
# MyISAM でも LOCK などで対応することができますが, 色々面倒です

大雑把に言うと,
・MyISAM は高速だがトランザクションがない
・InnoDB は安全だが MyISAM より遅い
という感じです。

InnoDB が MyISAM より遅いとはいっても, きちんと運用すれば 数百万~数千万のデータは普通に扱えますので,
現時点では特にどちらを, ということはないかと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/09/15 14:43

気にする必要があるのはむしろMyISAMですので


InnoDBであれば通常のSQLのつくりをしていれば
大丈夫でしょう。
とくにトランザクションがないMyISAMの場合、
UPDATEに整合性は期待できないことはご周知かと思いますが
運用の仕方である程度カバーできます。
複数で同時接続して、いっせいにデータをUPDATEするような
仕組みでなく、検索中心の小さなDBならばMyISAMのほうが
効率はよいかもしれませんね。

また4.1系であればサブクエリは便利ですが、
無理やり一文にすることでかえって非効率な場合も
考えられます。
場合によってはテンポラリーをつかって複数の
SQLでやったほうが処理が速い場合もありますので
十分な検証が必要でしょう。
中級~上級者むけの書籍にはチューニングの仕方なども
よくのっているのそれを参考になさるとよろしいかと。
    • good
    • 0
この回答へのお礼

ありがとうございます。
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の方が検索の為にはいいのでしょうか?
また、お薦めの書籍がありましたら教えてください。
繰り返しの質問になりますが、御願いします。

お礼日時:2006/09/14 13:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!