メモリストレージエンジンに関する知識ポイント メモリ ストレージ エンジンは日常業務ではほとんど使用されませんが、一部の 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の他の関連記事をご覧ください。 以下もご興味があるかもしれません:
|
[必須] ユーザーインターフェースPhotoShop/花火デザインアーティストと協力して、スケッチを...
目次要件: 進行中のアクティビティ データを照会する次のSQLクエリは、上記の4つの要件を満たし、タ...
フロントエンドcss3 フィルターは、Web ページのグレー効果を実現できるだけでなく、ナイト モー...
目次チュートリアルシリーズ1. MySQL アーキテクチャクエリキャッシュキャッシュされないクエリ:...
Angular Cookie の読み取りおよび書き込み操作のコードは次のようになります。 var a...
この記事の例では、参考までに、シンプルなショッピングカートモジュールを実装するためのjsの具体的なコ...
簡単に言うと、ウェアハウスとして使用される仮想マシンの IP は 192.168.149.129 で...
言語では、DSL を実装するためにマクロがよく使用されます。マクロを使用すると、開発者は JSX 構...
Docker コンテナは互いに分離されており、相互にアクセスできないことは誰もが知っていますが、依存...
この記事では、参考までにMySQLのインストールと設定のチュートリアルを紹介します。具体的な内容は次...
デザイナーは世界で最も繊細で感情的な人々だと私はいつも感じています。私がこう言うときに優越感を感じる...
Dockerの機能1) すぐに始められるユーザーがプログラムを「Docker 化」するには、わずか数...
この記事では、MySQL インデックス カバレッジについて例を挙げて説明します。ご参考までに、詳細は...
<br />このページはUTF8エンコードを使用しており、ヘッダーとフッターはテンプレー...
文字列連結ではなく path.join() メソッドを使用する必要があるのはなぜか疑問に思うかもしれ...