データベースへの接続が開いているプロセスを強制終了したい。プロセスを強制終了した場合、データベースのロックが解除されていることを確認できますか?
「呼び出しプロセスで開いているすべてのファイル記述子、ディレクトリストリーム、変換記述子、およびメッセージカタログ記述子を閉じる必要があります」。これは、シグナルが原因でプロセスが終了している場合(つまり、「強制終了」によって)に発生するはずだとPOSIXが言っていることです。
したがって、サーバーにアクセスするプロセスであるクライアントは、ネットワーク接続の終了を確実に閉じます。 client( "your process")が強制終了されたときのserver( "database")の動作はサーバー次第です決定する(検出し、それに基づいて行動する)。
ネットワーク接続はクライアント側で確実に閉じられますが、この場合、サーバーがセッションで何をするかはわかりません。テーブルまたはテーブルの行にロックがある場合、いつ解放する必要がありますか?
MySQLにはアイドルセッションタイムアウトがあり、その後、消えるクライアントによって保持されているロックを解放します( このStackOverflowの質問 を参照)。使用する特定のデータベースのドキュメントを調べて、何が起こるかを確認する必要がありますが、ほとんどの場合、何らかの形のアイドルタイマーが関係していると思います。
はい、でも...
プロセスを強制終了するとファイルが閉じますが、ソケットまたはその他の接続を介して接続されたプロセスのkill
がすぐに成功しないことは珍しくありませんnetwork接続(たとえばデータベースで使用)- killingプロセス。たとえば、ps
を使用して閉じるのを待っているプロセスが表示されます。
通常、このプロセスで開かれたすべてのファイルを強制終了します。ただし、一部のファイル記述子がどこかで使用されている場合、それは確実に閉じられません。