基礎 リレーショナル データベースでは、各データ テーブルはファイルに相当し、異なるストレージ エンジンによって異なるテーブル タイプが構築されます。 ストレージ エンジンの役割は、データ テーブルにデータを格納する方法、格納されたデータのインデックスを作成する方法、更新やクエリなどのテクノロジの実装をサポートする方法を指定することです。 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ミラーに変更する方法
この記事では、WeChatミニプログラムで電子署名を実装するための具体的なコードを参考までに紹介しま...
目次1. テーブルを作成する1.1 テストテーブルt_userを作成する1.2 一時テーブルの作成2...
序文データベースでは、一部のデータ テーブルとデータは latin1 であり、一部のデータ テーブル...
ある会社の BI 職の面接を受けたとき、面接で SQL に関する質問がありました。一見すると非常に簡...
MySQL 8.0.25解凍版のインストールチュートリアル、参考までに具体的な内容は以下のとおりです...
1. 背景Youzan の各 OLTP データベース インスタンスには、実行時間が特定のしきい値を超...
JDBC の 6 つのステップ: 1. ドライバーを登録する2. データベース接続を取得する3. デ...
私はApacheを使ったことがありません。仕事を始めてからはずっとnginxを使っていました(運用保...
以前、会社で小さな機能に取り組んでいたとき、特定の状況でデータがいくつあるかを数えてから問題を修正し...
まずは見てみましょう。 HTML ソースコード: XML/HTML コードコンテンツをクリップボード...
目次文章LOCKパラメータアルゴリズムパラメータCOPY TABLE プロセスIN-PLACEプロセ...
複数の条件を持つ MySQL クエリ環境: MySQL 5.7 where ステートメントに複数の ...
jsonデータはhtml形式で返される必要がありますつまり、 response.setContent...
この記事では、一般的な基本的な Linux コマンドとその使用方法を例を使って説明します。ご参考まで...
<br />原文: http://jorux.com/archives/what-is-...