ホームページ  >  記事  >  データベース  >  mysqlのグローバル変数とローカル変数の詳しい説明

mysqlのグローバル変数とローカル変数の詳しい説明

王林
王林転載
2020-01-27 20:39:042624ブラウズ

mysqlのグローバル変数とローカル変数の詳しい説明

通常、サーバーが起動すると、各グローバル変数はデフォルト値に初期化されます (これらのデフォルト値は、コマンド ラインまたはオプション ファイルで指定されたオプションを通じて変更できます)。次に、サーバー セッション変数のセットも、接続されているクライアントごとに維持され、クライアントのセッション変数は、対応するグローバル変数の現在の値を使用して接続時に初期化されます。

例は次のとおりです:

サーバーが起動すると、GLOBAL のスコープを持つ default_storage_engine という名前のシステム変数が初期化されます。その後、クライアントが接続するたびに、サーバーがインストールされると、サーバーは SESSION のスコープを持つdefault_storage_engine という名前のシステム変数をクライアントに個別に割り当てます。SESSION のスコープを持つシステム変数の値は、同じスコープを持つシステム変数の値に従って初期化されます。現在 GLOBAL のスコープを持つ名前。

(無料の学習ビデオ チュートリアルの推奨: mysql ビデオ チュートリアル)

明らかに、起動オプションを通じて設定されるシステム変数のスコープはすべてグローバルです。つまり、すべてのクライアントが対象です。システムの起動時にクライアントプログラムが接続されていないため、これらは有効です。システム変数の GLOBAL および SESSION スコープを理解した後、サーバー プログラムの実行中にクライアント プログラムを通じてシステム変数を設定するための構文を見てみましょう:

SET [GLOBAL|SESSION] 系统变量名 = 值;

または次の記述:

SET [@@(GLOBAL|SESSION).]var_name = XXX;

例: サーバーの実行中に、GLOBAL のスコープを持つシステム変数default_storage_engine の値を MyISAM に変更したいと考えています。つまり、サーバーに接続されているすべての新しいクライアントが MyISAM をデフォルトのストレージ エンジンとして使用するようにしたいと考えています。次に、次の 2 つを選択できます ステートメントのいずれかを使用して設定します:

ステートメント 1:

SET GLOBAL default_storage_engine = MyISAM;

ステートメント 2:

SET @@GLOBAL.default_storage_engine = MyISAM;

有効にするだけの場合このクライアントでは、次の 3 つのステートメントのいずれかを選択することもできます。いずれかを設定します:

ステートメント 1:

SET SESSION default_storage_engine = MyISAM;

ステートメント 2:

SET @@SESSION.default_storage_engine = MyISAM;

ステートメント 3:

SET default_storage_engine = MyISAM;

上記のステートメント 3 を使用することもできます。システム変数を設定するステートメントでスコープが省略されている場合、デフォルトのスコープは SESSION であることがわかります。つまり、SET システム変数名 = 値と SET SESSION システム変数名 = 値は同等です。

さまざまなスコープのシステム変数を表示する

システム変数にはさまざまなスコープがあるため、SHOW VARIABLES ステートメントはシステム変数のどのスコープをチェックしますか?

回答: デフォルトでは、SESSION スコープ内のシステム変数が表示されます。

もちろん、次のように、システム変数をチェックするステートメントにチェックしたいスコープのシステム変数を追加することもできます。

SHOW [GLOBAL|SESSION] VARIABLES [LIKE 匹配的模式];

おすすめの関連記事とチュートリアル: mysql チュートリアル

以上がmysqlのグローバル変数とローカル変数の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。