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

トランザクションレベルの分離は、MySQLの自動コミットモードのパフォーマンスにどのように影響しますか?

    TL; DR:フォーラムが遅い場合、トランザクション分離レベルが原因ではない可能性が高く、デフォルト以外に設定してもほとんど役に立ちません。 innodb_flush_log_on_trx_commit =2に設定すると役立ちますが、クラッシュの耐久性に影響します。

    長いバージョン:

    http:/に記述したトランザクション分離レベル/mysqldump.azundris.com/archives/77-Transactions-An-InnoDB-Tutorial.html http://mysqldump.azundris.com/categories/32にある3つのInnoDBの概要記事をすべてチェックしてください。 -InnoDB

    いずれにせよ、システムはロールバックできる必要があるため、READ UNCOMMITTEDでさえ、書き込みで実行する必要のあるものを変更することはありません。

    読み取りトランザクションの場合、読み取りトランザクションのビューにつながるUNDOログレコードのチェーンが長いと読み取りが遅くなるため、READUNCOMMITTEDまたはREADCOMMITTEDは、デフォルトのREPEATABLEREADよりもわずかに高速になる場合があります。ただし、ここではメモリアクセスについて説明していること、およびディスクアクセスが速度を低下させることを覚えておく必要があります。

    AUTOCOMMITの問題について:これにより、すべての書き込みステートメントがディスクに同期されます。以前にMyISAMを使用したことがあり、それで十分だった場合は、構成することをお勧めします

    [mysqld]
    innodb_flush_log_on_trx_commit = 2
    

    my.cnfファイルで、サーバーを再起動します。

    これにより、コミットはmysqldからファイルシステムバッファキャッシュに書き込まれますが、ファイルシステムバッファキャッシュのディスクへのフラッシュが遅れて、1秒に1回だけ発生するようになります。 mysqldのクラッシュでデータが失われることはありませんが、ハードウェアのクラッシュで最大1秒分の書き込みが失われる可能性があります。ただし、InnoDBはハードウェアがクラッシュした後でも自動的に回復し、完全なACIDでなくても、以前のMyISAMよりも動作が良好です。その設定がない場合、AUTOCOMMITよりもはるかに高速になります。



    1. PHPからMySQLに接続するための最も効率的な方法は?

    2. データベースインスタンスの状態を監視する方法

    3. isqlのコマンド履歴

    4. AUTOINCREMENTとして主キーを作成するにはどうすればよいですか