MySQLメモリストレージエンジンに関する知識

MySQLメモリストレージエンジンに関する知識

メモリストレージエンジンに関する知識ポイント

メモリ ストレージ エンジンは日常業務ではほとんど使用されませんが、一部の MySQL 構文ではメモリ エンジンのメモリ テーブルが使用されます。メモリ エンジンには次の特徴があります。

1. メモリ テーブルを作成する構文は、create table … engine=memory です。

2. このテーブルのデータはメモリに保存され、システムを再起動するとクリアされますが、テーブル構造はそのまま残ります。

2. メモリ ストレージ エンジンのデータとインデックスは分離されています。メモリ ストレージ エンジンのテーブルには主キーも設定できます。主キー ID には各データの場所が格納されます。主キー ID はハッシュ インデックスであり、インデックス上のキーは連続していません。

データとインデックスが別々に格納されるこのデータ編成形式は「ヒープ編成テーブル」と呼ばれ、Innodb ストレージ エンジンの「インデックス編成テーブル」とは異なります。

Innodbとメモリストレージエンジンの違い

1. メモリ ストレージ エンジンのデータ格納順序は挿入順序と同じですが、InnoDB ストレージ エンジンのデータ格納順序はクラスター化インデックスに従って順序付けられます。以下にいくつか例を挙げます。

mysql> テーブル t1(id int 主キー、c int) を作成します。engine=Memory;
クエリは正常、影響を受けた行は 0 行 (0.00 秒)

mysql> t1 に値 (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(0,0); を挿入します。
クエリは正常、10 行が影響を受けました (0.00 秒)
記録: 10 重複: 0 警告: 0

mysql> t1 から * を選択します。
+----+------+
| id | c |
+----+------+
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
| 0 | 0 |
+----+------+
セット内の行数は 10 です (0.00 秒)


mysql> テーブル t2(id int 主キー、c int) を作成します。engine=innodb;
クエリは正常、影響を受けた行は 0 行 (0.01 秒)

mysql> t2 に値 (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8),(9,9),(0,0); を挿入します。
クエリは正常、10 行が影響を受けました (0.00 秒)
記録: 10 重複: 0 警告: 0


mysql> t2 から * を選択します。
+----+------+
| id | c |
+----+------+
| 0 | 0 |
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |
| 4 | 4 |
| 5 | 5 |
| 6 | 6 |
| 7 | 7 |
| 8 | 8 |
| 9 | 9 |
+----+------+
セット内の行数は 10 です (0.00 秒)

メモリ ストレージ エンジンの結果では、レコード (0,0) が最後にあり、挿入順序と一致しているのに対し、InnoDB ストレージ エンジンの結果では、レコードの順序に従って配置されていることがわかります。

2. データ ファイルに穴がある場合、InnoDB ストレージ エンジンは指定された場所にデータを挿入する必要がありますが、メモリ ストレージ エンジンはギャップが見つかる限りデータを挿入できます。

3. データの場所が変更されると、メモリ ストレージ エンジンはすべてのインデックスを変更する必要がありますが、InnoDB ストレージ エンジンは主キー インデックスのみを変更する必要があります。

4. InnoDB ストレージ エンジンではクエリ時に「テーブル リターン」がありますが、メモリ ストレージ エンジンではテーブル リターンは必要ありません。

5. InnoDB ストレージ エンジンは varchar をサポートしていますが、メモリ ストレージ エンジンはサポートしていません。すべての varchar は char として扱われます。また、メモリ ストレージ エンジンは blob フィールドとテキスト フィールドをサポートしていません。

6. メモリ ストレージ エンジンは範囲クエリをサポートできません。インデックスタイプがハッシュインデックスであるため

実稼働環境では、通常、次の 2 つの理由によりメモリ テーブルを使用することは推奨されません。

1. メモリ テーブルは行ロックをサポートしておらず、テーブル ロックのみをサポートしています。テーブルが更新されると、読み取り操作を含むテーブル上の他の操作はブロックされます。つまり、このようなテーブルの同時実行パフォーマンスは低くなります。

2. データの永続性が低い。データベースがクラッシュすると、メモリ テーブル内のデータが失われます。テーブルからの削除ステートメントを binlog に書き込むのを忘れますが、テーブル構造はまだ存在します。デュアル M 環境では、スレーブ データベースがクラッシュした場合、この削除ステートメントによってマスター データベースの一時テーブル データが汚染される可能性があり、これは比較的危険な操作です。

上記はMySQL Memoryストレージエンジンに関する詳細な内容です。MySQL Memoryストレージエンジンの詳細については、123WORDPRESS.COMの他の関連記事をご覧ください。

以下もご興味があるかもしれません:
  • MySQLアーキテクチャに基づく分析
  • MySQLアーキテクチャに基づく詳細な分析
  • MySQLのストレージエンジンの詳細な説明
  • MySQL InnoDB ストレージエンジンのメモリ管理の詳細な説明
  • MySQL のストレージ エンジンの違いと比較
  • MySQL シリーズ 7 MySQL ストレージ エンジン
  • MySQLのInnoDBストレージエンジンにおけるさまざまなロックの詳細な説明
  • MySQL の MyISAM ストレージ エンジンにおける非クラスター化インデックスの詳細な説明
  • MySQL ストレージ エンジン InnoDB と MyISAM
  • MySQL アーキテクチャとストレージ エンジンの紹介

<<:  Tomcatの各ポートの機能の詳細な説明

>>:  Vue+el-tableはセルの結合を実現します

推薦する

hrefを使用すると、リンクをクリックするだけでページ上の特定の場所にジャンプできます。

ページ内の a タグをクリックした後、ページ内の対応する場所にジャンプするようにします。方法は非常に...

MySQL は対応するクライアント プロセスにどのように接続しますか?

質問特定の MySQL 接続について、それがどのクライアント プロセスからのものであるかをどのように...

CSS3はアニメーション効果を実現するためにvar()とcalc()関数を使用する。

ナレッジポイントをプレビューします。アニメーションフレーム背景グラデーションvar() と calc...

初心者のための入門チュートリアル⑤:ウェブサイト登録はとても簡単、簡単な登録のヒント

スペースを購入してウェブサイトを構築したことがある友人なら、ウェブサイトは正式に開設する前に登録する...

MySQL 最適化技術における Limit クエリの最適化分析

序文実際のビジネスでは、ページングは​​一般的なビジネス要件です。次に、制限クエリを使用します。制限...

Reactはいくつかの方法でパラメータを渡します

目次親コンポーネントと子コンポーネント間でパラメータを渡すルーティングパラメータステータスの改善コン...

JavaScript配列の重複排除のいくつかの方法についての詳細な説明

目次1.重複排除を設定する2. 重複を削除するには、2 回の for ループを使用します。 3. i...

MySQL で固定されていない位置から文字列要素を抽出する方法

序文注: テストデータベースのバージョンはMySQL 8.0ですテストデータ: テーブルzqs(id...

Bootstrap 3.0 学習ノート グリッドシステム事例

序文前回の記事では、主にグリッドシステムの基本原理を学び、簡単なケースを通してその原理を実践しました...

Linux ログ表示方法 6 つのまとめ

バックエンド プログラマーは、さまざまな場所で Linux を扱います。Linux ログの読み方がわ...

mysql 5.7.11 winx64.zip インストールと設定方法のグラフィックチュートリアル

MySql データベース システムをインストールして構成します。 1. ダウンロード http://...

CSS 水平プログレスバーと垂直プログレスバーの実装コード

時々、素敵なスクロールバー効果を見るのは楽しいものです。ここでは、CSSを使用してそれを実現する方法...

MySQLコマンドラインでSQLファイルを実行するいくつかの方法

目次最初の方法: MySQLデータベースが接続されていない場合2 番目の方法: データベースがすでに...

あまり一般的ではないが便利な CSS 属性操作の完全ガイド

1. カスタムテキスト選択 ::選択{ 背景: 赤; 色: 黒; } 2. ビデオコントロールからダ...

Mysql テーブル、列、データベースの追加、削除、変更、クエリの問題の概要

以下は私がまとめた基本的なSQL知識です。主に参考資料として、また将来の他の初心者の助けとして、私自...