sql >> データベース >  >> RDS >> Mysql

ディスクmysqlのtmpテーブルへのコピーをスキップします

    これによる影響を軽減するためにできることは2つあります

    オプション#1:変数を増やします tmp_table_size および/または max_heap_table_size

    これらのオプションは、メモリ内の一時テーブルが大きすぎると見なされる前にどれだけ大きくなるかを制御し、一時的なMyISAMテーブルとしてディスクにページングします。これらの値が大きいほど、「ディスク上のtmpテーブルにコピーする」可能性は低くなります。サーバーに十分なRAMがあり、 max_connections 単一のDB接続が独自の一時テーブル用に大量のRAMを必要とする場合は、適度に構成されています。

    オプション#2:tmpテーブルにRAMディスクを使用する

    LinuxでRAMディスクを構成してから、 tmpdir mysqlでは、RAMディスクがマウントされているフォルダになります。

    手始めに、OSでRAMディスクを構成します

    Linuxに/var/ tmpfs

    というフォルダーを作成します
    mkdir /var/tmpfs
    

    次に、この行を/ etc / fstabに追加します(たとえば、16GBのRAMディスクが必要な場合)

    none                    /var/tmpfs              tmpfs   defaults,size=16g        1 2
    

    サーバーを再起動します。

    注:再起動せずにRAMディスクを作成することは可能です。サーバーの再起動後にRAMディスクを確保するために、前述の行を/ etc/fstabに追加することを忘れないでください。

    今MySQLの場合:

    この行を/etc/my.cnf

    に追加します
    [mysqld]
    tmpdir=/var/tmpfs
    

    mysqlを再起動します。

    オプション#3:tmpテーブルをできるだけ早くRAMディスクに入れます(最初にオプション#2を適用すると仮定します)

    MySQLがメモリ内の大きなtmpテーブルをRAMディスクに移行するホイールを回転させないように、tmpテーブルをできるだけ早くRAMディスクに強制することをお勧めします。これを/etc/my.cnfに追加するだけです:

    [mysqld]
    tmpdir=/var/tmpfs
    tmp_table_size=2K
    

    mysqlを再起動します。これにより、最も小さな一時テーブルでさえ、RAMディスク内に存在するようになります。 ls -l /var/tmpfsを定期的に実行できます 臨時雇用者のテーブルが行き来するのを見る。

    試してみてください!!!

    警告

    / var / tmpfs 24/7に一時テーブルしか表示されない場合、これはOSの機能/パフォーマンスに影響を与える可能性があります。 / var / tmpfsが過密にならないようにするには、クエリの調整を検討してください。これを行うと、/ var/tmpfsで実体化するtmpテーブルが少なくなるはずです。



    1. jdbcデータソースでdbtableオプションのサブクエリを使用するにはどうすればよいですか?

    2. MariaDB CURRENT_USER()の説明

    3. チェックボックス値をMySQLデータベースに保存する最良の方法は何ですか?

    4. HAProxyからProxySQLに移行するためのヒント