mysqlグローバル変数とローカル変数

1567 ワード

グローバル変数とローカル変数
サーバが起動すると、各グローバル変数がデフォルト値に初期化されます(コマンドラインまたはオプションファイルで指定したオプションでデフォルト値を変更できます).次に、サーバは、接続されたクライアントごとにセッション変数のセットを維持し、クライアントのセッション変数は、接続時に対応するグローバル変数の現在の値を使用して初期化されます.
たとえば、サーバの起動時にdefaultという名前の初期化が行われます.storage_Engine、作用範囲GLOBALのシステム変数.その後、クライアントがサーバに接続されるたびに、サーバはdefault_という名前のクライアントを個別に割り当てます.storage_Engineは、現在の作用範囲GLOBALの同名システム変数値に従って初期化されるSESSIONのシステム変数である.
起動オプションで設定されたシステム変数の役割範囲はGLOBALであることは明らかです.つまり、システム起動時にクライアントプログラムが接続されていないため、すべてのクライアントに有効です.システム変数のGLOBALとSESSIONの作用範囲を理解した後、サーバープログラムの実行中にクライアントプログラムを通じてシステム変数を設定する構文を見てみましょう.
SET [GLOBAL|SESSION]       =  ;

あるいはこう書いてもいいです.
SET [@@(GLOBAL|SESSION).]var_name = XXX;

たとえば、サーバの実行中にGLOBALのシステム変数default_storage_Engineの値をMyISAMに変更します.つまり、サーバに新しく接続したクライアントにデフォルトのストレージエンジンとしてMyISAMを使用させたい場合は、次の2つの文のいずれかを選択して設定できます.
   :SET GLOBAL default_storage_engine = MyISAM;
   :SET @@GLOBAL.default_storage_engine = MyISAM;

本クライアントのみを有効にする場合は、次の3つの文のいずれかを選択して設定することもできます.
   :SET SESSION default_storage_engine = MyISAM;
   :SET @@SESSION.default_storage_engine = MyISAM;
   :SET default_storage_engine = MyISAM;

上の文3からも分かるように,システム変数を設定する文で役割範囲を省略すると,デフォルトの役割範囲がSESSIONとなる.すなわちSET系変数名=値とSET SESSION系変数名=値は等価である.
異なる作用範囲のシステム変数を表示システム変数に作用範囲がある以上、私たちのSHOW VARIABLES文はどのような作用範囲のシステム変数を表示していますか?
 :      SESSION         。

もちろん、システム変数を表示する文に、どの役割範囲を表示するシステム変数を加えることもできます.
SHOW [GLOBAL|SESSION] VARIABLES [LIKE      ];