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 プロジェクト プロセス図
序文一般的なビジネス シナリオでは、検索ボックスへの入力が完了した後、検索データを取得するために関連...
主キー:キーワード: 主キー機能: null にすることはできず、一意である必要があります。主キーの...
集計関数データセットに作用し、そのデータセットの値を返します。 count: 統計結果のレコード数。...
シナリオ 1: HTML: <div class="outer"> ...
目次序文始めるReactライフサイクルリアクトファイバーリアクトセットステートReactイベントメカ...
昨日のプロジェクト開発中に、スタイルの読み込み優先順位に関する問題が発生しました。クラスは定義され、...
目次1. インデックスと変数の賢い使用1. インデックスなしの比較テスト2. created_tim...
1. MySQL jdbc ドライバー (mysql-connector-java-5.1.28.j...
目次1. 理解2. 使用1. h() パラメータ2. 使い方が簡単3. カウンターケースを実装する4...
この記事では、ポップアップボックスコンポーネントメッセージのVue3手動カプセル化の具体的なコードを...
この記事では、Centos7.6 システムと Oracle11g を例に挙げます。 1. まずデータ...
プロジェクト ページの作成中に、子要素が親要素の透明度を継承するという問題に遭遇しました。多くのドキ...
みなさんこんにちは、Qiufengです。最近、WeChatは新しい機能をリリースしました(WeCha...
[ Tomcat8 の Linux インストール ] Tomcat をアンインストールする - まず...
目次1. Ant Design Vueを統合する2. コンポーネントの使用1. 完全な引用2. コン...