MySQL メモリ テーブルと一時テーブルの使用メモリテーブル:セッション 1 $ mysql -uroot root@(なし) 10:05:06>テストを使用する データベースが変更されました root@test 10:06:06>CREATE TABLE tmp_memory (i INT) ENGINE = MEMORY; クエリは正常、影響を受けた行は 0 行 (0.00 秒) root@test 10:08:46>tmp_memory値に挿入(1); クエリは正常、1 行が影響を受けました (0.00 秒) ルート@テスト 10:08:46> セッション2 $ mysql -uroot テスト root@test 10:05:12>CREATE TABLE tmp_memory (i INT) ENGINE = MEMORY; エラー 1050 (42S01): テーブル 'tmp_memory' は既に存在します root@test 10:16:27>tmp_memory から * を選択します。 +------+ | 私 | +------+ | 1 | +------+ セット内の 1 行 (0.00 秒) 1. 複数のセッションで同じ名前のテーブルを作成することはできません 2. セッションが作成されると、他のセッションからも見えるようになります。 3. データディレクトリには tmp_memory.frm のみがあり、テーブル構造はディスク上に保存され、データはメモリに保存されます。 4. MySQLを再起動またはシャットダウンすると、メモリテーブル内のデータは失われますが、テーブル構造はそのまま残ります。 5. インデックスの作成、削除、一意のインデックスのサポートが可能 6. マスター データベースとスレーブ データベースには影響しません。マスター データベースに挿入されたデータは、スレーブ データベースにも表示されます。 7. テーブルを表示する 一時テーブル:セッション1 $ mysql -uroot テスト root@test 10:30:18>一時テーブル tmp_table を作成します (名前 VARCHAR(10) NOT NULL、値 INTEGER NOT NULL); クエリは正常、影響を受けた行は 0 行 (0.05 秒) root@test 10:31:54>tmp_tableから*を選択します。 +--------+-------+ | 名前 | 値 | +--------+-------+ | ああああ | 10 | +--------+-------+ セット内の 1 行 (0.00 秒) セッション2 root@test 10:20:13> 一時テーブル tmp_table を作成します (名前 VARCHAR(10) NOT NULL、値 INTEGER NOT NULL); クエリは正常、影響を受けた行は 0 行 (0.02 秒) root@test 10:30:39>tmp_tableに値を挿入します('bbbbbbbb'、10)。 クエリは正常、1 行が影響を受けました (0.01 秒) root@test 10:31:33>tmp_tableから*を選択します。 +---------+-------+ | 名前 | 値 | +---------+-------+ | bbbbbbbb | 10 | +---------+-------+ セット内の 1 行 (0.00 秒) root@test 10:31:43>終了 さよなら [1 シングル:MS-Master db152011.sqa.cm6:mysql ~ ] $ mysql -uroot テスト root@test 10:32:17>tmp_tableから*を選択します。 エラー 1146 (42S02): テーブル 'test.tmp_table' が存在しません ルート@テスト 10:32:22> ルート@テスト 10:32:23> 1. 作成されたテーブルの名前は同じでも構いません 2. テーブル構造とデータはメモリに保存されます 3. セッションが消えると、テーブル構造とデータは消える 4. インデックスを作成したり削除したりできます 5. メイン データベースによって作成されたテーブルがスタンバイ データベースに見つかりません。 6. テーブルを表示してもテーブルが表示されない メモリテーブルを使用する際の注意点1. メモリテーブルはデータを削除したり、テーブル自体をドロップしたりする必要があるため、ドロップ権限が必要となり、より危険です。 2. メモリ テーブルのテーブル構造はディスクに保存されます。複数のセッションで同じテーブル名を使用すると、競合が発生します。テーブル名を使用する必要がなく、使用するたびにテーブル構造を作成する必要がある場合、小さなファイルが多数存在し、DB のメンテナンスに役立たず、DBA がテーブルをクリーンアップするときにリスクがあります。 上記を踏まえると、メモリテーブルの使用は適切ではない。 1. 一時テーブルはセッションレベルです。複数のセッションで同じ名前のテーブルを作成しても、相互に影響はありません。 2. セッションが消えてすべてが消えてしまうため、アプリケーションのトラブルシューティングに役立たない さらに、これら両方には追加のメモリ領域が必要ですが、これは DB 側では許容できるものの、あまり制御できません。DB 側には次のパラメータもあります。 max_tmp_tables クライアントが同時に開いたままにできる一時テーブルの最大数。デフォルト値は 32 ですが、必要に応じてこの値を調整できます。 mysqlは一時テーブルを作成し、クエリ結果を既存のテーブルに挿入します。今日、非常に難しい問題に遭遇しました。データを一時的に保存して、後で読み込みたいと考えていました。データベース理論の授業で先生が一時テーブルが作れると言っていたような記憶があるのですが、MySQLにはそんな機能があるのでしょうか?一時テーブルはメモリ内にあり、ビューよりも高速に読み取られます。次に、クエリ結果を一時テーブルに保存する必要もあります。 以下は、一時テーブルを作成し、参照用にデータを挿入する例です。 A. 一時テーブルが MySQL から切断されると、システムは一時テーブル内のデータを自動的に削除しますが、これは次のステートメントで作成されたテーブルに限定されます。 1) フィールドを定義する 一時テーブル tmp_table を作成します ( 名前 VARCHAR(10) NOT NULL, 時刻 日付 NOT NULL ) さらに進んだ点は次のとおりです。 一時テーブル `temptable` を作成します ( `jws` varchar(100) 文字セット utf8 照合 utf8_bin NOT NULL, `tzlb` varchar(100) 文字セット utf8 照合 utf8_bin NOT NULL, `uptime` 日付が NULL ではない )ENGINE=InnoDB デフォルト文字セット=latin1″ エンコード方式も指定されています。 。ハハハ、文字化けを防ぐためです。 2) クエリ結果を一時テーブルに直接インポートする 一時テーブル tmp_table を作成します。SELECT * FROM table_name B. さらに、MySQL ではメモリ内に直接一時テーブルを作成することもできます。メモリ内にあるため、速度が非常に速くなります。構文は次のとおりです。 一時テーブル tmp_table を作成します ( 名前 VARCHAR(10) NOT NULL, 値 INTEGER NOT NULL ) タイプ = ヒープ では、クエリ結果を既存のテーブルにどのように保存するのでしょうか? 1. A の 2 番目の方法を使用できます。 2. MySQL データベース メモリ一時テーブル パラメータ1. 内部メモリ一時テーブルの最大サイズこの変数は、ユーザーが作成した MEMORY テーブルには適用されません。より複雑なクエリでは一時テーブルが作成されます。実際の制限は、tmp_table_size と max_heap_table_size の小さい方によって決まります。 1.1. メモリ一時テーブルとハードディスク一時テーブル メモリ内の一時テーブルが制限を超えると、MySQL はそれを自動的にディスク上の一時テーブルに変換します。 1.2. 設定の参考 tmp-table-size を設定する場合は、ハードディスク一時テーブルとメモリ一時テーブルの値を参考にしてください。 2. MEMORYテーブルの最大サイズこの変数は、ユーザーが作成した MEMORY テーブルの最大サイズを設定します。この変数値は、MEMORY テーブルの MAX_ROWS 値を計算するために使用されます。 2.1. 使用法 この変数を設定しても、CREATE TABLE などのステートメントを使用してテーブルが再作成されるか、ALTER TABLE または TRUNCATE TABLE を使用して変更されない限り、既存の MEMORY テーブルには影響しません。 上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。 以下もご興味があるかもしれません:
|
<<: HTML テーブル マークアップ チュートリアル (16): タイトルの水平方向の配置属性 ALIGN
>>: Tomcat 初回展開 Web プロジェクト プロセス図
キーペアの分離1 つ以上の Linux インスタンスから SSH キー ペアのバインドを解除します。...
kubectl の紹介kubectl は、k8s クラスターを操作するためのコマンドライン ツールで...
関連記事:初心者が学ぶ HTML タグ (3)導入された HTML タグは、必ずしも XHTML 仕...
1. Docker Composeを使用して起動を構成するDocker Compose を知らない場...
1. フォームテキスト入力のモバイル選択: テキスト入力フィールドにプロンプトが追加されている場...
目次1. 単一データベースのバックアップ2. 圧縮バックアップ3. マルチデータベースバックアップ4...
この記事では、ローカル yum ソースを使用して CentOS 上に LAMP 環境を構築する方法に...
1. ul タグには、Mozilla ではデフォルトでパディング値がありますが、IE ではマージン値...
ご存知のとおり、binlog ログは MySQL データベースにとって非常に重要です。万が一、データ...
この記事では、参考までに、JSでスネークゲームを書くための具体的なコードを紹介します。具体的な内容は...
<br />原文: http://andymao.com/andy/post/102.h...
VNodeとはvue.js には VNode クラスがあり、これを使用してさまざまな種類の vnod...
エフェクト表示組み込みのブートインターフェースがあまりにも醜いので、テーマをダウンロードして美しくし...
準備: 192.168.16.128 192.168.16.129 2 台の仮想マシン。 Nginx...
システムの起動時に読み込む必要がある設定ファイル/etc/profile、/root/.bash_p...