基礎 リレーショナル データベースでは、各データ テーブルはファイルに相当し、異なるストレージ エンジンによって異なるテーブル タイプが構築されます。 ストレージ エンジンの役割は、データ テーブルにデータを格納する方法、格納されたデータのインデックスを作成する方法、更新やクエリなどのテクノロジの実装をサポートする方法を指定することです。 Oracle や SqlServer などのデータベースでは、1 つのストレージ エンジンのみがサポートされているため、データ ストレージ管理メカニズムは同じです。MySQL は複数のストレージ エンジンを提供します。ユーザーは、さまざまなニーズに応じて、データ テーブルに異なるストレージ エンジンを選択できます。ユーザーは、ニーズに応じて独自のストレージ エンジンを作成することもできます。
ストレージエンジン MySQL は複数のストレージ エンジンをサポートしています。サポートされているストレージ エンジンを表示するには、 mysql> エンジンを表示します。 +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | エンジン | サポート | コメント | トランザクション | XA | セーブポイント | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ | InnoDB | デフォルト | トランザクション、行レベルのロック、外部キーをサポート | はい | はい | はい | | MRG_MYISAM | YES | 同一の MyISAM テーブルのコレクション | NO | NO | NO | | メモリ | はい | ハッシュベース、メモリに保存、一時テーブルに便利 | いいえ | いいえ | いいえ | | BLACKHOLE | はい | /dev/null ストレージ エンジン (書き込んだものはすべて消えます) | いいえ | いいえ | いいえ | | MyISAM | はい | MyISAM ストレージ エンジン | いいえ | いいえ | いいえ | | CSV | はい | CSV ストレージ エンジン | いいえ | いいえ | いいえ | | アーカイブ | はい | アーカイブ ストレージ エンジン | いいえ | いいえ | いいえ | | PERFORMANCE_SCHEMA | YES | パフォーマンス スキーマ | NO | NO | NO | | FEDERATED | NO | フェデレーテッド MySQL ストレージ エンジン | NULL | NULL | NULL | +--------------------+---------+----------------------------------------------------------------+--------------+------+------------+ セット内の行数は 9 です (0.00 秒) マイSQL> 翻訳 InnoDB ストレージ エンジンは、MySQL のデフォルトのストレージ エンジンです。トランザクション操作をサポートし、主にオンライン トランザクション処理 (OLTP) アプリケーション向けに設計されています。 その機能には、行ロック設計、外部キーのサポート、および Oracle のような非ロック読み取りサポート (つまり、デフォルトの読み取り操作ではロックが生成されない) が含まれます。 InnoDB ストレージ エンジンは、データを論理テーブルスペースに配置します。この論理テーブルスペースは、InnoDB ストレージ エンジン自体によってブラック ボックスのように管理されます。 MySQL 4.1 (4.1 を含む) 以降では、各 InnoDB ストレージ エンジン テーブルを個別の ibd ファイルに保存できます。さらに、InnoDB ストレージ エンジンは、テーブルスペースを作成するために RAW デバイス (行ディスク) の使用をサポートしています。 InnoDB は、マルチバージョン同時実行制御 (MVCC) を使用して高い同時実行性を実現し、4 つの SQL 標準分離レベルを実装します。デフォルトは REPEATABLE レベルです。また、ファントム読み取りを回避するために、netx-key ロックと呼ばれる戦略も使用します。 さらに、InnoDB ストレージ エンジンは、挿入バッファ、二重書き込み、アダプティブ ハッシュ インデックス、先読みなどの高パフォーマンスおよび高可用性機能も提供します。 InnoDB ストレージ エンジンは、テーブルへのデータの保存にクラスター化アプローチを採用しています。各テーブルは主キーの順序で保存されます。テーブルの定義時に主キーが明示的に指定されていない場合、InnoDB ストレージ エンジンは各行に対して 6 バイトの行 ID (ROWID) を生成し、それを主キーとして使用します。 InnoDB ストレージ エンジンは、MySQL データベースで最も一般的に使用されているエンジンです。Facebook、Google、Yahoo などの企業による成功したアプリケーションは、InnoDB ストレージ エンジンが高可用性、高パフォーマンス、高スケーラビリティを備えていることを証明しています。基礎となる実装を習得して理解するには、時間と技術的な蓄積も必要です。 InnoDB ストレージ エンジンの動作原理、実装、およびアプリケーションについて詳しく知りたい場合は、「MySQL Technology Insider: InnoDB Storage Engine」という書籍を参照してください。 マイISAM トランザクションやテーブル ロック設計はサポートされていませんが、フルテキスト インデックスはサポートされています。主に一部の OLAP データベース アプリケーションで使用され、MySQL 5.5.8 より前のバージョンではデフォルトのストレージ エンジンでした (Windows バージョンを除く)。データベース システムとファイル システムの大きな違いは、トランザクションのサポートです。MyISAM ストレージ エンジンはトランザクションをサポートしていません。 本質的には、これを理解するのは難しいことではありません。ユーザーはすべてのアプリケーションでトランザクションを必要としますか?データ ウェアハウスでは、ETL 操作がない場合でも、単純なレポート クエリにはトランザクション サポートが必要ですか?さらに、MyISAM ストレージ エンジンのもう 1 つのユニークな機能は、バッファー プールがデータ ファイルではなくインデックス ファイルのみをキャッシュすることです。これは、ほとんどのデータベースとは異なります。 NDB 2003 年、MySQL AB は Sony Ericsson から NDB ストレージ エンジンを買収しました。 NDB ストレージ エンジンは、Oracle の RAC クラスタに似たクラスタ ストレージ エンジンです。ただし、Oracle RAC の共有すべて構造とは異なり、その構造は共有なしクラスタ アーキテクチャであるため、より高いレベルの高可用性を提供できます。 NDB ストレージ エンジンの特徴は、すべてのデータがメモリに保存される (バージョン 5.1 以降では、インデックス以外のデータはディスクに保存可能) ため、主キーの検索が非常に高速になり、NDB データ ストレージ ノードをオンラインで追加してデータベースのパフォーマンスを線形に向上できることです。 NDB ストレージ エンジンは、可用性、パフォーマンス、拡張性に優れたデータベース クラスタ システムであり、OLTP データベース アプリケーション タイプも対象としていることがわかります。 メモリ 名前が示すように、メモリ ストレージ エンジンのデータはメモリに保存されます。 データベースが再起動またはクラッシュすると、テーブル内のデータは消えてしまいます。これは、OLTP データベース アプリケーションで一時データの一時テーブルを格納するのに非常に適しており、OLAP データベース アプリケーションのデータ ウェアハウスのディメンション テーブルとしても使用できます。 メモリ ストレージ エンジンは、使い慣れた B+ ツリー インデックスの代わりに、デフォルトでハッシュ インデックスを使用します。 インフォブライト サードパーティのストレージ エンジン。 特徴としては、ストレージが行ではなく列に基づいているため、OLAP データベース アプリケーションに非常に適しています。 公式ウェブサイトは http://www.infobright.org/ で、分析のための成功したデータ ウェアハウスの事例が多数掲載されています。 NTSE NetEase が社内使用のために開発したストレージ エンジン。 現在のバージョンではトランザクションはサポートされていませんが、圧縮や行レベルのキャッシュなどの機能が提供されています。メモリ指向のトランザクション サポートは近い将来に実装される予定です。 ブラックホール ホール ストレージ エンジンは、マスター スレーブ レプリケーションの分散マスター ライブラリに適用できます。 構成エンジン テーブルを作成して指定する ストレージ エンジンを指定するには、テーブル作成ステートメントの後に
以下は、メモリ ストレージ エンジンを使用して temp という名前の一時テーブルを作成します。 mysql> テーブル temp(id int) を作成します。engine=memory; クエリは正常、影響を受けた行は 0 行 (0.01 秒) mysql> show create table temp; # 作成情報を表示します+-------+--------------------------------------------------------------------------------------------------------+ | テーブル | テーブルの作成 | +-------+----------------------------------------------------------------------------------------+ | temp | テーブル `temp` を作成します ( `id` int(11) デフォルト NULL ) ENGINE=MEMORY デフォルト CHARSET=latin1 | +-------+----------------------------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) マイSQL> MySQL サービスがシャットダウンされると、メモリ内のデータはクリアされます。 ブラックホール ストレージ エンジンの特徴は、レコードがいくつ挿入されても、テーブルに格納されないことです。 構成の割り当て 設定ファイルでは、テーブルを作成するときにストレージ エンジンを指定することもできます。 [mysqld] #新しいテーブルを作成するときに使用されるデフォルトのストレージエンジン default-storage-engine=INNODB ファイル構造 ここでは、InnoDB を例に挙げます。まず、学生テーブルを作成し、そのファイル構造を表示します。 mysql> テーブル student(id int) を作成します。engine=innodb; クエリは正常、影響を受けた行は 0 行 (0.02 秒) student.frmはフィールドやその他の情報などのテーブル構造を保存します student.ibdはレコードやその他の情報などのテーブルデータを保存します。 上記はMySQLのストレージエンジンの詳細です。MySQLストレージエンジンの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
>>: Ubuntu 18.04 のsources.listをAlibabaまたはTsinghuaミラーに変更する方法
目次序文:システム要件:インストール環境:古いバージョンをアンインストールします: yum は具体的...
序文インデックスの選択はオプティマイザ段階の作業であることはわかっていますが、オプティマイザは万能で...
最新の Ubuntu Server バージョンを使用している場合、ようこそメッセージに、Ubuntu...
コードをコピーコードは次のとおりです。 window.location.href="zcb...
InnoDB インデックスの物理構造すべての InnoDB インデックスは Btree インデックス...
問題: MySQL データベースが予期せずクラッシュしたため、データベースを起動できませんでした。エ...
現在、MySQL の最適化について学習しています。この記事では、データ型とスキーマの最適化について紹...
MySQL はディスクに保存される永続的なストレージであり、取得には一定の IO が伴うことはご存じ...
要素の両端を揃える配置レイアウトは、実際の開発のいたるところで見られます。これは、フレックスレイアウ...
目次React Fiberとは何ですか?なぜReact Fiberなのか? React Fiberは...
以前にも紹介しました: docker (一般的なアプリケーションのデプロイ): docker dep...
この記事では、WindowsでのMySQL 5.7.18のインストールと設定のチュートリアルを参考ま...
目次1. はじめにII. 監視対象2.1 なぜオブジェクトを監視する必要があるのですか? 2.2 デ...
<br />以前、「コンテンツページ番号のプレビューナビゲーション」と「写真プレビューナ...
この記事では、CSS 画像アニメーション効果(フォトフレーム)のサンプルコードを紹介し、皆さんと共有...