1/ISAM
ISAMは、データベースが更新されるよりもはるかに頻繁にクエリされるよう設計された、明確に定義され、実績のあるデータテーブル管理手法です。 その結果、ISAMは読み込みを高速に行い、多くのメモリやストレージを消費しません。 ISAMの主な欠点は、トランザクション処理をサポートしないことと、フォールトトレランス性がないことです。ハードドライブがクラッシュすると、データファイルは復元できません。 ミッションクリティカルなアプリケーションにISAMを使用する場合、常にすべてのリアルタイムデータをバックアップしなければならず、MySQLはレプリケーション機能のおかげでそのようなバックアップアプリケーションをサポートできます。
2/InnoDB
トランザクション制御機能を提供し、一連のコマンドが正常に実行されるか、またはコマンドエラーが発生した場合にすべてのコマンドの結果がロールバックされることを保証します。トランザクション制御機能は電子銀行において非常に重要であると想像できます。 COMMIT、ROLLBACK、その他のトランザクション機能のサポート。 最新バージョンのMysqlはすでにBDBのサポートを廃止し、InnoDBに切り替える計画を立てています。
MyIASMは、以下の拡張機能を備えた新しいIASMテーブルのバージョンです。 二進レベルでの携帯性。 NULL列インデックス。 変数行のフラグメントはISAMテーブルよりも少ないです。 大きなファイルのサポート。 より良いインデックス圧縮。 統計的な分布を持つ方が良いのでしょうか? 処理がより良く、より速くauto_increment。
以下はいくつかの詳細と具体的な実装の違いです:
1. InnoDBはFULLTEXT型のインデックスをサポートしていません。 2. InnoDBにはテーブルが保存されません 特定の行、すなわち から count(*) を選択する 表では、InnoDBはテーブル全体をスキャンして行数を計算しますが、MyISAMは単に保存された行を読み出します。 count(*) 文が ここで条件は、両方のテーブルの動作は同じです。 3. AUTO_INCREMENTタイプのフィールドの場合、そのフィールドのみを含むインデックスはInnoDBに含めなければなりませんが、MyISAMテーブルでは他のフィールドとフェデレーテッドインデックスを作成することが可能です。 4.削除 FROMTABLEでは、InnoDBはテーブルを再作成せず、行ごとに削除します。 5. テーブルの読み込み MASTER操作はInnoDBでは機能しません。解決策はまずInnoDBテーブルをMyISAMテーブルに変更し、データをインポートしてからInnoDBテーブルに変更することですが、追加のInnoDB機能(外部キーなど)を使うテーブルには適用できません。
さらに、InnoDBテーブルの行ロックは絶対的ではなく、SQL文を実行する際にMySQLがスキャンすべきスコープを特定できない場合、InnoDBテーブルはupdateなどテーブル全体をロックします テーブルセット num=1 で、名前は「a%」のようなものです。
どのテーブルも全能ではなく、ビジネスタイプに適したテーブルタイプを選ぶことでのみMySQLのパフォーマンス優位性を最大化できます。
MySQL 管理者がデータベースを作成すると、テーブルはデフォルトでInnoDB型になります。
InnoDB、MyISAM この2つのタイプの違いは何ですか:MyISAMタイプはトランザクション処理などの高度な処理をサポートしていませんが、InnoDBタイプは対応しています。 MyISAMタイプのテーブルはパフォーマンス重視で、InnoDBタイプよりも数段階高速ですが、トランザクションサポートは提供しません。一方、InnoDBはトランザクションサポートや外部鍵などの高度なデータベース機能を提供します。
MyISAMタイプのバイナリデータファイルは異なるオペレーティングシステム間で移行可能です。 つまり、WindowsシステムからLinuxシステムへ直接コピーすることができます。
表のエンジンタイプを変更する:
オルター テーブル テーブル名 エンジン = MyISAM ;
MyISAM:,它是基于传统的ISAM类型,ISAM是Indexed シーケンシャルアクセス法 これはレコードやファイルの保存における標準的な方法です。 他のストレージエンジンと比べて、MyISAMはテーブルのチェックや修復に最も多くのツールを備えています。 MyISAMのテーブルは圧縮可能で、全文検索もサポートしています。 トランザクション上で安全ではなく、外部鍵をサポートしていません。 もし何かをロールバックすると、それは不完全なロールバックを引き起こし、原子的ではありません。 多数の処刑が行われる場合 TheSELECT、MyISAMの方が良い選択です。
InnoDB:这种类型是事务安全的.它与BDB类型具有相同的特性,它们还支持外键.InnoDB表格速度很快.具有比BDB还丰富的特性,因此如果需要一个事务安全的存储引擎,建议使用它.如果你的数据执行大量的INSERT或UPDATE,出于性能方面的考虑,应该使用InnoDB表,
対応しているInnoDBタイプの場合、速度に影響する主な理由はAUTOCOMMITのデフォルト設定が有効で、プログラムが明示的にBEGINを呼び出さないことです トランザクションを開始すると、挿入ごとに自動的にコミットが行われ、速度に大きな影響を与えます。 SQLが実行される前にstartを呼び出せますし、複数のSQLが同じようになっても(自動コミットが成功しても) また、オンにすることも可能で、これによりパフォーマンスが大幅に向上します。
1. 使用されたエンジンの種類、文字のエンコーディング、テーブル構造などを含むテーブル情報を表示する
このコマンドを使ってください
mySQL> 表示 テーブル T1 を作成; --t1 はテーブル名です
2. 以下のコマンドを実行して、非トランザクションテーブルをトランザクションに切り替えることができます(データは失われません)。innoDBテーブルはmyisamテーブルよりも安全です。 テーブルT1のオルター type=innoDB; --t1 はテーブル名です
3. innodbテーブルは修復テーブルコマンドとmyisamchk -rでtable_nameできません でもチェックテーブルを使うことはできます T1およびMySQLcheck [オプション] データベース [テーブル]
4. 以下のパラメータがコマンドラインに追加され、mysqlデータベースを起動し、新たにリリースされたすべてのmysqlデータテーブルがデフォルトでトランザクションを使用するようにしています( それはcreateステートメントにのみ影響します。 ) --default-table-type=InnoDB
5. デフォルトテーブルタイプを一時的に変更するには、以下のようにできます: set table_type=InnoDB;
マイISAM 利点:高速な速度、ディスク容量の削減; データベースやテーブルのディスク使用状況は、オペレーティングシステムが対応するファイル(フォルダ)のサイズを確認するか、SQL文「SHOW TABLE STATUS」を使うことで特定できます 短所:データ整合性機構がなく、すなわちトランザクションや外部鍵のサポートがない
InnoDB 利点:トランザクションおよび外部鍵のサポート、完全なデータ整合性メカニズム。 ライブラリやテーブルのディスク占有状況を確認するには、SHOW TABLE STATUSを使うことができます 欠点:超低速、大きなディスク容量; すべてのライブラリは通常1つまたは複数のファイルに保存されており、オペレーティングシステムはライブラリやテーブルの容量を把握できません
BDB 利点:トランザクションをサポートし、外部鍵をサポートしない。なぜならトランザクションサポートを基盤に、外部鍵はデータベースのクライアント側(例えばPHPのサーバー側)で間接的に実装できるため、データの整合性が保証されるからである。 欠点:速度が遅く、ディスク使用量が多い; データベースやテーブルのスペース占有状況をSHOW TABLEから照会することはできません。 オペレーティングシステムはライブラリの対応するフォルダやテーブルの対応ファイルのサイズを把握できますが、BDBテーブルは常にログファイルを生成しなければならず、実際のディスク占有容量にはログファイルが含まれるべきなので、ライブラリやテーブルのサイズは常にOSが占有する実際の容量より小さいです。
|