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

MySQLクエリを1つのクエリに減らして、速度を上げます

    現在、一般ログでトラフィックをキャプチャしているかどうかを確認します:

    SELECT @@general_log;   -- 1 if capturing, 0 if not
    -- for me, a 1. This means I have been capturing (good for development. Poor idea for Production)
    
    SELECT @@general_log_file; -- file name for General Log if capturing.
    -- for me: GeneralLogBegin_20160803_1420.log
    
    SELECT @@datadir; -- the location of the general_log, and other logs
    -- for me: C:\ProgramData\MySQL\MySQL Server 5.6\Data\
    

    キャプチャしていたので、以下の一般ログのキャプチャをオフにします。

    SET GLOBAL general_log=0; -- stop logging
    

    ログファイルをバックアップディレクトリに移動し、名前をGL_from_20160803_1420_to_20160806_1559に変更します。

    上記のファイルが具体化するキャプチャの内容と日時の範囲には、ほとんどあいまいさがありません。

    ログファイルキャプチャの新しい名前を設定します(ファイル名のセグメントの開始)

    SET GLOBAL general_log_file='GeneralLogBegin_20160806_1559.log';
    SET GLOBAL general_log=1; -- Start logging again
    

    サーバーに接続する私のアプリを実行すると、一般ログに次のものが含まれます:

    ChunkA:

    160806 16:08:37   170 Connect   [email protected] on stackoverflow
              170 Query SHOW VARIABLES
              170 Query SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP())
              170 Query SHOW COLLATION
              170 Query SET NAMES latin1
              170 Query SET character_set_results=NULL
              170 Init DB   my_db_name
    

    注:実行する必要がある場合があります

    mysqladmin -u root -p flush-log
    

    (パスワードの入力を求められます)ログをキャッシュからファイルにフラッシュするため。ちなみに、 Sublime Text 現在ロードされているテキストファイルの自動更新に最適です。ログファイルなど。

    だから私のChunkA 上記は、着信する新しい接続の接続スタブです。これは、使用中のプログラムのコマンドによって駆動されます。あなたが慣れてコーディングするのはあなたのプログラムコマンドの前です。新しい接続を継続的に作成し、作成したコードを実行し、切断している場合、これらはすべて手荷物の一部です。単純な方法でそれらを最適化することはできません。

    検討すべきことは、実稼働環境で一般クエリログをオフにすることです。また、デバッグおよびテスト環境の設定中にのみ有効にします。装着すると、スタックに不要な負担がかかります。



    1. 作成したPDFをMySQLデータベースC#に保存します

    2. MySQLのアイテムを固定リストで注文しますか?

    3. 一意の値を持つPostgresqlSELECTランダム

    4. PostgresSQLのORDERBYでLENGTH(計算列)を使用する