他にも似たような質問はありましたが、質問させてください。
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と違って運用面で気をつけることがあるのでしょうか。
教えてください。御願いします。
No.2ベストアンサー
- 回答日時:
アクセス数にもよりますが, 数万件程度ならインデックスをきちんと張っていれば,
MyISAM, InnoDB のどちらでも運用に耐えうると思いますよ。
# インデックスを張っていなくても問題ないかも
MyISAM はトランザクションという概念がないので, 異なるデータベースプロセスが
テーブルの同じ行を同時にアクセス/更新する場合などに不整合が起こる可能性があります。
アプリケーションがテーブルの同じ行に同時にアクセスするような作りになっていなければ MyISAM でいいですし,
同じ行を同時に参照して更新のような作りになっていたら InnoDB の方がよいでしょう。
# MyISAM でも LOCK などで対応することができますが, 色々面倒です
大雑把に言うと,
・MyISAM は高速だがトランザクションがない
・InnoDB は安全だが MyISAM より遅い
という感じです。
InnoDB が MyISAM より遅いとはいっても, きちんと運用すれば 数百万~数千万のデータは普通に扱えますので,
現時点では特にどちらを, ということはないかと思います。
y-110様、御回答ありがとうございました。大変参考になりました。
今回はInnoDBで作成することにしました。MySQLは使い慣れているオラクル等とは違う点が多々あるので難しいです。
No.1
- 回答日時:
気にする必要があるのはむしろMyISAMですので
InnoDBであれば通常のSQLのつくりをしていれば
大丈夫でしょう。
とくにトランザクションがないMyISAMの場合、
UPDATEに整合性は期待できないことはご周知かと思いますが
運用の仕方である程度カバーできます。
複数で同時接続して、いっせいにデータをUPDATEするような
仕組みでなく、検索中心の小さなDBならばMyISAMのほうが
効率はよいかもしれませんね。
また4.1系であればサブクエリは便利ですが、
無理やり一文にすることでかえって非効率な場合も
考えられます。
場合によってはテンポラリーをつかって複数の
SQLでやったほうが処理が速い場合もありますので
十分な検証が必要でしょう。
中級~上級者むけの書籍にはチューニングの仕方なども
よくのっているのそれを参考になさるとよろしいかと。
ありがとうございます。
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が見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL 下の画像はSQLの4大命令の性質をまとめたものであるらしいです UPDATE INSERT DELE 1 2023/06/07 15:36
- Oracle SQL update方法 2 2022/06/22 14:07
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- MySQL 【投稿情報用データベース posts】は必要ないと思います。 1 2022/06/02 21:25
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL PhpMyAdminで作成して実行せよ。 東京23区を、皇居を中心とした4つのエリア(南東, 南西, 1 2023/06/11 11:58
- PostgreSQL postgreSQL カラムの全ての値を取得したい 3 2022/10/07 12:33
- MySQL 複数DBテーブルからのデータ取得 3 2022/05/17 15:02
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLです!!教えてください。
-
ACCESSで3ファイルを結合して、...
-
外部キーだけのテーブル(主キ...
-
テーブルリンク リンク元を知...
-
親子関係のテーブルについて
-
飲み会で、座敷orテーブルどち...
-
下の画像はSQLの4大命令の性質...
-
phpMyAdminの「リレーションを...
-
男性と2人で飲食店に行きテーブ...
-
このテーブルで
-
コンボボックスにレコードセッ...
-
ちょっとぐらいの時間なら里山...
-
SQLServerのあるデータベースの...
-
SQLのSELECT結果を縦...
-
2つのテーブルの結合に関してです
-
LAG関数に似た関数があればご教...
-
食事の前に食卓を拭きますか?
-
Accessのクエリーで。
-
【PHP】SQL文のSUM関数で出力し...
-
頭悪い人って物捨てませんよね?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
L2SWはARPテーブルを持っている?
-
テーブルリンク リンク元を知...
-
会社の飲み会の幹事になり、座...
-
外部キーだけのテーブル(主キ...
-
飲み会で、座敷orテーブルどち...
-
アクセスのリンクテーブル一覧...
-
複数テーブルにわたるCOUNT
-
男性と2人で飲食店に行きテーブ...
-
「テーブルに座って……」という...
-
複雑なSQL文について
-
まるいテーブル 円い 丸い 漢字...
-
お金持ちのテーブル
-
【PHP】SQL文のSUM関数で出力し...
-
論理名とコメント構文(?)について
-
1つのテーブルに同じデータを参...
-
1対1のリレーション(主キー同...
-
MySQLで複数テーブルを作成する
-
テーブルの白く剥がれてるところに
-
オーダーの覚え方について
-
面接のときテーブルが正面に。...
おすすめ情報