2016-08-06 13 views
-1

をスピードアップするために、1つのクエリに照会します。は、MySQLを減らして、私は質問があるgeneral_logファイルで

160806 9:53:26  11 Connect  [email protected] on 
    11 Query  SET NAMES utf8 
    11 Query  SET character_set_client="utf8" 
    11 Query  SET character_set_connection="utf8" 
    11 Query  SET character_set_database="utf8" 
    11 Query  SET character_set_results="utf8" 
    11 Query  SET character_set_server="utf8" 
    11 Query  SET character_set_system="utf8" 
    11 Init DB  dbname 

は、可能な代わりに7つのクエリの1つのクエリを作成することですか?大幅にスピードアップしますか?

+0

はこれがあなたのスローログファイルですか?これらのクエリはまったく時間がかからないため、これは最も珍しいことです。 – e4c5

+0

これは、低速ログファイルに似ていますが、すべてのクエリを記録します。私はMySQLの初心者であり、1秒おきにこのクエリの1000ndsを持っていれば面白いです、サーバを大幅に遅くすることができますか? – kostya572

答えて

0

私は現在、一般的なログでトラフィックをキャプチャしていた場合を参照してください:鉱山は、キャプチャされたため

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に名前を変更します。

上記のファイルに含まれるキャプチャのコンテンツとdatetimeの範囲はほとんどあいまいではありません。

は、

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は、新しい接続の接続スタブです。使用しているプログラムのコマンドによって実行されます。プログラムコマンドの前に、あなたは慣れていて、コードを書いています。新しい接続を継続して作成し、コードを実行し、接続を切断している場合、これらはすべて手荷物の一部です。どのような単純な方法でもそれらを最適化することはできません。

プロダクション環境で一般クエリログをオフにすることを検討する必要があります。また、デバッグおよびテスト環境設定中にのみ有効にします。これをオンにすると、あなたの負担が増えます。

0

https://dev.mysql.com/doc/refman/5.7/en/set-names.htmlは言う:

[SET NAMES]文は、指定された文字セットに3つのセッションシステム変数character_set_client、character_set_connection、そしてcharacter_set_resultsを設定します。 character_set_connectionをcharset_nameに設定すると、collat​​ion_connectionもcharset_nameのデフォルト照合に設定されます。

SET NAMESの後のステートメントのいくつかをスキップできます。それは葉:

SET NAMES utf8; 
SET character_set_database="utf8"; 
SET character_set_server="utf8"; 
SET character_set_system="utf8"; 

あなたはこれらの変数にmanualをお読みください:

character_set_database

デフォルトデータベースで使用される文字セット。デフォルトのデータベースが変更されると、サーバはこの変数を設定します。デフォルトのデータベースがない場合、変数はcharacter_set_serverと同じ値を持ちます。

これは設定する必要はありません。

character_set_server

、サーバのデフォルトの文字セット。

セッションのコンテキストでこれを設定する必要はありません。 my.cnfファイルにグローバルに設定しておきます。唯一の目的は、CREATE DATABASEを使用するときにデフォルトを確立し、指定されたデータベースの文字セットを明示的に定義しないことです。

character_set_system

識別子を格納するためにサーバによって使用される文字セット。値は常にutf8です。

実際にはこれを変更する方法はありません。唯一残さ

SET NAMES utf8; 
関連する問題