プリペアドステートメントとMySQLユーザー変数の共通点とは?
セッション有効期間における共通点
MySQLのユーザー変数は、それを使用するクライアント接続に固有のものであり、その接続が継続している間のみ存在します。接続が終了すると、その接続に関連付けられたすべてのユーザー変数は失われます。
同様に、プリペアドステートメントも、作成されたセッションの期間中のみ存在し、そのセッション内でのみ参照可能です。セッションが終了すると、そのセッションで作成されたすべてのプリペアドステートメントは自動的に破棄されます。つまり、両者とも「接続(セッション)スコープで管理される」という点で共通しているのです。
大文字・小文字を区別しないという共通点
もう一つの重要な類似点として、プリペアドステートメントもMySQLユーザー変数と同じく、名前の大文字・小文字が区別されないことが挙げられます。例えば、「stmt11」と「STMT11」は同一のものとして扱われます。以下の例で実際に確認してみましょう。
mysql> Select * from student; +------+-------+ | Id | Name | +------+-------+ | 1 | Ram | | 2 | Shyam | | 3 | Rohan | +------+-------+ 3 rows in set (0.00 sec) mysql> SET @A = 'Sohan', @B = 3; Query OK, 0 rows affected (0.00 sec) mysql> EXECUTE Stmt11 USING @A, @B; Query OK, 1 row affected (0.12 sec) mysql> Select * from Student; +------+-------+ | Id | Name | +------+-------+ | 1 | Ram | | 2 | Shyam | | 3 | Sohan | +------+-------+ 3 rows in set (0.00 sec) mysql> SET @A = 'Gaurav', @B = 3; Query OK, 0 rows affected (0.00 sec) mysql> EXECUTE STMT11 USING @A, @B; Query OK, 1 row affected (0.04 sec) mysql> Select * from Student; +------+--------+ | Id | Name | +------+--------+ | 1 | Ram | | 2 | Shyam | | 3 | Gaurav | +------+--------+ 3 rows in set (0.00 sec)
上記の例では、まず小文字の「stmt11」を実行し、次に大文字の「STMT11」を実行しています。しかし、どちらの場合も同じプリペアドステートメントが実行され、テーブルの内容が正しく更新されました。このように、プリペアドステートメントは大文字・小文字を区別しないため、表記ゆれがあっても問題なく動作します。
-
MySQL 8.0で非推奨となったオプションとシステム変数の一覧
MySQL 8.0では、機能の統合や仕様変更に伴い、多くのオプションおよびシステム変数が非推奨(deprecated)となりました。これらは将来のリリースで削除される可能性があるため、新規の設定や既存環境のメンテナンス時には代替手段への移行を検討することが重要です。以下に、MySQL 8.0で非推奨となった主なオプションと変数をまとめます。Compression:クライアント/サーバープロトコルにおいて、クライアント接続が圧縮を使用しているかどうかを示します。MySQL 8.0.18以降で非推奨となりました。expire_logs_days:指定された日数が経過したバイナリログを自動的に削除(
-
MySQL 8.0で新たに導入されたオプションと変数の一覧
MySQL 8.0で新たに追加されたオプション・変数とは MySQL 8.0では、パフォーマンスの向上や運用管理の柔軟性を高めるために、数多くの新しいオプションおよびシステム変数が導入されました。ここでは、その中から代表的なものを紹介します。各項目には、変数の意味と、追加されたバージョンを併記しています。 ステータス変数(Com_*系) Com_clone: 実行されたCLONEステートメントの数を示します。MySQL 8.0.2で追加されました。 Com_create_role: 実行されたCREATE ROLEステートメントの数を示します。MySQL 8.0.0で追加されました。 Co