MyISAMテーブルとINNODBの違い
効率上のMyISAM重点は、実行速度は、テーブルが損傷した後にデータを修復することができない、InnoDBはより高速ですが、トランザクションをサポートしていません。
InnoDBは、カウントを実行するときに、あなたがテーブル全体をスキャンする必要がある、と限りのMyISAMとして直接ライン上の行番号を読み出し、つまり、行番号を保存しません。注:カウントとどこがテーブル全体をスキャンするために必要とされる2つのエンジンを使用する場合。
ロック付きMyISAMテーブル、InnoDBは不確実性がオブジェクトを走査するときので、必ずしも、実際には、行ロックを使用して、または表全体をロックします
MyISAMテーブルが適用されます。
1.、カウントマルチオペレーション
2.小型、マルチクエリを挿入します
3.ノー総務
InnoDBは適用されます。
1.高い信頼性、またはサポートトランザクションを必要とします
2.以上のクエリ
トリガー
実践を通してアクションをトリガーする、いわゆるトリガーは、データの整合性と一貫性を確保するための制約の役割を強化することができ、それはまた、データベースの操作を追跡することができますので、無許可の更新や変更を許可していません。たとえば、更新するデータテーブルは、ように、別の更新テーブルデータをトリガーとします。
ストアドプロシージャ
いわゆるストアドプロシージャプリコンパイルされたSQL文はモジュラー設計をサポートしている、それがはっきり、一度作成されたプログラムで複数回呼び出すことができます。例えば、特定の必要性は、複数のSQLを実行するために、あなたは、SQLストアドプロシージャを実行するためにそれを使用することができます。ストアドプロシージャそれは、プリコンパイルされているので、簡単なSQL文よりも高速です。
業務
ユニットは、状態が戻ってますが、SQLステートメントが失敗した場合、すべての操作が失敗し、SQL文のグループ(人気の理解が一緒にバインドするSQL文の束である)の作品を一緒論理バインドトランザクションと呼ばれています操作前の状態を丸め、それはすべての実行またはすべての実行されていませんか。原子性、一貫性、分離性、耐久性:それは4つのプロパティを持ちます。
注:原子は、例えば、必ずしも一致しない。このときのBの口座50に転送、スイッチ100 B、低減するAの口座100への上昇がアトミックであると言うことができるが、一貫性がありません(個人的な理解、王はその間違ったことを指摘しました)。
指数
当然の利点は、高速検索インデックスですが、インデックスとインデックスのメンテナンスを作成するには時間がかかるため、インデックスは、データ量が増加の増加に伴い、この時間を乱用することはできません。インデックスは、物理的なスペースを占有する必要があり、会計データよりもデータ・テーブル・スペースに加えて、各インデックスはまた、クラスタ化インデックスを構築したい場合は、必要なスペースが大きくなり、特定の物理的なスペースを占め、テーブル内のデータは、追加、削除および変更する際に、インデックスは動的なメンテナンスする必要があり、これは、維持率データを縮小します。
インデックスは、クラスタ化インデックスと非クラスタ化インデックスに分かれています。簡単に言えば個人的な理解について話:
ビッグボックス に関連するデータベースのインタビュー itle =「クラスタリング索引:」>クラスタ化インデックス:
クラスタリング索引は、すなわち、アルファベット順にアルファベットの「Z」、例を取り、「Z」で始まるすべての単語が辞書の最後のページにあるインデックスの物理的な順序は、順序論理テーブルが命令を見上げる決定されます辞書の身体のためにためです。
非クラスタ化インデックス:
さんが知らない単語のための命令をルックアップするために例を使用してみましょう、重要ではありませんテーブル内の物理的および論理的な順序の順序インデックスは、私たちは、順番に体をない置くために辞書に同じラジカル言葉で、ラジカルによる検索を行くことができます一緒に。
インデックスは、クラスタインデックスのリーフノードは、ノードデータ、非クラスタ化インデックス、リーフノード又はインデックスノード、対応するデータへのポインタである、二分木構造によって格納されています。
詳細な説明を求めることができるhttp://www.cnblogs.com/aspnethot/articles/1504082.html
ロック
複数のトランザクションが同時にデータベースを操作すると、それはとても(ナンセンス)をロックするために、データの整合性を損なう可能性があります。
ロックは、行レベルのロックとテーブル・レベルのロッキングに分けることができます。
行レベルのロックは、この行を変更する他の取引を防止するための排他的ロックです。
テーブルレベルロック一般的には、テーブル全体ロック(共有ロック)され、このトランザクションの読み出し動作は、他のトランザクションは、読み取り専用が、書き込まないことができれば、このトランザクションの書き込み動作は、他のトランザクションは色調ない場合。
楽観と悲観的ロック
悲観的ロック:名前はそれは「悲観的」であることを知っているかもしれませんし、そのアクションのいずれかが競合データにつながる可能性を検討するため、プロセスデータ操作は、ロックされます。データの排他性を確保するために、なぜならのみデータベースレイヤのロック機構と、データベースのロック機構を使用して。プラスupdateコマンドのため。
オプティミスティック・ロック:比較的悲観的ロックは、オプティミスティックロックよりリラックスした、それは、データベース内のバージョンフィールドを追加することによって、長い取引状況に悲観的ロックによって引き起こされる問題を解決することです。それの例を与える:操作はトランザクションデータD完了すると、トランザクションデータBはまた、1取得されるバージョン番号と、Dを得ることができる1取得されるバージョン番号と、データDを取得するトランザクションを、とそれはバージョン番号ですプラス1は、データベースを更新し、2となり、より大きいが、データを正常に更新することができるようになります場合は、現在のバージョン番号は、データベース内のバージョン番号よりも大きいかどうかを判断するために、それ以外の場合は、古いデータの更新が失敗したとみなされます。このとき、データDは、データベースのバージョン番号、更新成功のバージョン番号よりも大きい場合、操作が完了したトランザクションデータD Bである場合だけでなく、バージョン番号を加え、1〜2、データベースを更新するときに、現在のバージョンを見つけるとデータが古くなっていることを示す等しいデータベースのバージョン番号が、更新は失敗します。
けれども悲観的ロックは、効果的にデータの一貫性を制御することができますが、長いトランザクション、データベースのパフォーマンスをより多くの消費のために、あなたは楽観的ロックを使用する必要があります。データ・アクセス・エンジンに組み込まれた楽観的ロックのリアライズを休止。