[解決済み】MyISAMとInnoDBの違いは何ですか?[重複あり]
質問
この質問は以前にもあったようですが、ほとんどの場合、特定のデータベースやテーブルとの関連で質問されていますね。このサイトでは、2つのエンジンとその違いについて、特定のデータベースに関係なく説明している回答は見当たりません。
将来、テーブルやデータベースを設計する際に、より多くの情報を得た上で判断できるようにしたいので、2つのストレージエンジンの違いについて包括的な回答が欲しいのです。
とはどう違うのですか? マイサム と イノDB また、どちらか一方を選択する場合、どのような点に注意すればよいでしょうか?
どのように解決するのですか?
InnoDBとMyISAMの主な違い(ご質問のテーブルやデータベースの設計に関して)は、参照整合性(quot;referential integrity)とトランザクション(quot;transactions)のサポートです。
もし、データベースに外部キー制約を強制する必要があったり、トランザクション (つまり、2つ以上の DML 操作による変更を 1 つの作業単位として処理し、すべての変更を適用するか、すべての変更を取り消す) をサポートする必要がある場合、これらの機能は MyISAM エンジンにないため、InnoDB エンジンを選択することになるでしょう。
この2つが大きな違いです。もうひとつの大きな違いは、同時並行性です。MyISAMでは、DML文はテーブルに対する排他的ロックを取得し、そのロックが保持されている間は、他のセッションはそのテーブルに対してSELECTやDML操作を実行することができません。
ご質問の2つの特定のエンジン(InnoDBとMyISAM)は、設計目標が異なります。MySQL には他のストレージエンジンもあり、それぞれ独自の設計目標を持っています。
ですから、InnoDBとMyISAMのどちらを選択するかは、まずInnoDBが提供する機能が必要なのかどうかを判断することから始めましょう。そうでなければ、MyISAMが検討の対象になります。
アプリケーションがどのようにデータベースを使用するか、テーブルの数、テーブルのサイズ、トランザクションの負荷、select、insert、updateのボリューム、並行処理要件、レプリケーション機能など、問題領域に関するより詳細な議論がなければ、(このフォーラムで)違いに関するより詳しい議論はむしろ現実的ではないでしょう。
データベースの論理設計は、データ分析とユーザー要件を中心に行うべきで、リレーショナルデータベースを使用する選択はその後になり、さらにリレーショナルデータベース管理システムとしての MySQL の選択、そして各テーブルのストレージエンジンの選択もその後になるはずです。
関連
-
[解決済み】識別関係と非識別関係の違いとは?
-
[解決済み】mysqld_safe UNIX ソケットファイル用のディレクトリ '/var/run/mysqld' が存在しません。
-
[解決済み】MySQLで日付を比較する
-
[解決済み] MySQL エラー: キーの長さがないキー指定
-
[解決済み] "sqlstate[23000]: 整合性制約違反 "を有効な制約で
-
[解決済み] エラー:テーブル '<table-name>' に対するユーザー '<userid>'@'<ip-address>' への select コマンドが拒否されました。
-
[解決済み] Mysql: const テーブルを読み込んだ後、不可能な場所に気づいた。
-
[解決済み] utf8_general_ciとutf8_unicode_ciの違いは何ですか?
-
[解決済み] phpMyAdminで外部キーを設定する?
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】エラーコード1292 - 不正なDOUBLE値の切り捨て - Mysql
-
[解決済み】autoカラムは1つしか存在できない
-
[解決済み】1052:フィールドリストの列「id」が曖昧である
-
[解決済み】「docker container run」は最低1つの引数を必要とする
-
[解決済み] MySQLで週単位でグループ化する方法は?
-
[解決済み] mysql 拡張は非推奨で、将来的に削除されます: 代わりに mysqli か PDO を使ってください [重複] 。
-
[解決済み] MYSQLのTIMESTAMP比較
-
[解決済み] DateTime 日付と時間によるグループ化
-
[解決済み] 日付の挿入時にエラーが発生しました - 日付の値が正しくありません。
-
[解決済み] MyISAMとInnoDBを使い分けるタイミングは?重複