Mientras trabajamos en la base de datos PostgreSQL, podemos encontrar situaciones en las que algunos de los procesos se detienen o ahorcan, y ya no los queremos. Cada usuario de la base de datos intentará eliminar o terminar dichas conexiones del sistema de base de datos en tal situación. PostgreSQL ha presentado instrucciones simples para hacerlo. Proporciona la función PG_CANCEL_BACKED () y PG_TERMINATE_BACKEND () para utilizar la ID de proceso para una consulta en particular para cancelarla y termina junto con la conexión que tiene en unos segundos. Dentro de esta guía, discutiremos el uso de ambas funciones en nuestras consultas de base de datos para matar las consultas.
Uso de PostgreSQL Pgadmin GUI:
Comencemos con la simple ilustración de matar una sesión de una base de datos PostgreSQL utilizando la ID de proceso en la consulta. Comenzaremos desde la interfaz GUI PGADMIN de la base de datos PostgreSQL. Ábrelo usando la barra de búsqueda de su sistema Windows 10. Agregue la contraseña para su servidor y base de datos. En nuestro caso, la base de datos es "Aqsayasin". Debe abrir la "Herramienta de consulta" de su base de datos utilizando el icono de la herramienta de consulta que se mantiene en la parte superior de PGADmin GUI.
Mostraron todas las sesiones o procesos de PostgreSQL en el área de consulta. Para eso, debe usar la consulta de selección con el signo "*" junto con la palabra clave "PG_STAT_ACTIVITY". Ejecute esta consulta usando el letrero "Triángulo" en la barra de tareas de Pgadmin Consuly. Todos los procesos actuales se mostrarán en su área de salida de datos de Pgadmin como se muestra a continuación. Se han encontrado un total de 8 registros.
Matamos un proceso de identificación "908". Necesitamos utilizar dos funciones dentro de la consulta selecta en el área de consulta para matar un proceso. El primero es la función PG_CANCEL_BACKEND () y la segunda es la función PG_MINTED_BACKEND (). La función PG_CANCEL_BACKEND () se usa para cancelar simplemente la consulta de una base de datos utilizando la ID de proceso para una consulta particular. No termina la conexión de la base de datos. Mientras que la función PG_TERMINATE_BACKEND () cancela la consulta utilizando la ID de proceso para la consulta y cierra la base de datos conectada. Por lo tanto, hemos estado utilizando ambas consultas simultáneamente en la misma herramienta de consulta para matar el proceso que tiene ID "908". En la ejecución, tenemos el valor booleano "verdadero" debajo de la columna "PG_TERMINATE_BACKGROUNT". Esto significa que la consulta y la conexión se han terminado con éxito.
Veamos si la consulta seleccionada de su ID de proceso ha sido terminado o no. Para esto, hemos usado la consulta SELECT nuevamente con la palabra clave "PG_STAT_ACTIVITY". La cuadrícula de salida muestra que la consulta "908" se ha ido.
Hagamos más claro seleccionando solo las consultas que tienen un estado iguales a "inactivo". La misma consulta se utilizará con la cláusula WHERE para poner la condición de "estado = 'inactivo'". A cambio, tenemos solo dos resultados para consultas que tienen un estado 'inactivo'. Matamos la identificación del proceso "7316".
Para matar la consulta de ID de proceso "7316", debemos cancelarla primero utilizando la misma consulta "Seleccionar" con la función "PG_CANCEL_BACKEND", tomando el ID de proceso como argumento. Ejecute la consulta que se muestra en el área de consulta con el botón Ejecutar sostenido en la barra de tareas pgadmin gui. La salida muestra el valor booleano "verdadero" en la columna de la columna "PG_CANCEL_BACKEND". Esto significa que la consulta para un proceso en particular ha sido cancelado finalmente.
Terminemos la consulta junto con la conexión de la base de datos. Por lo tanto, la instrucción SELECT se ha utilizado una vez más hasta ahora con la función "PG_TERMINATE_BACKEND" ". La ID del proceso se ha mencionado en el argumento de la función "PG_MINTINATE_BACKEND" ". La salida para este programa muestra el valor booleano "verdadero" bajo la columna "PG_MINTINATE_BACKEND". Esto significa que la consulta que tiene ID de proceso "7316" finalmente ha terminado, y la conexión para esta consulta se cancela junto con ella.
Veamos si podemos encontrar la consulta recién cancelada y finalizada que tiene ID de proceso 7316 en el área de salida o no. Por lo tanto, hemos utilizado la misma consulta de selección con la palabra clave "PG_STAT_ACTIVITY" y la ejecutamos en la herramienta de consulta de PostRegsql Pgadmin. No muestra la ID de consulta/ proceso especificada en la salida, que establece que ya ha ido.
Uso de la consola de shell PostgreSQL:
Todo lo que hemos hecho es matar la consulta con su conexión dentro de la GUI PGADMIN de PostgreSQL. También podemos lograrlo usando el terminal de carcasa PostgreSQL. Búscalo en la aplicación Windows 10 usando la barra de búsqueda en su escritorio. Escriba "PSQL" y haga clic en él al mostrar. Se abrirá como una pantalla negra pidiéndole que agregue el nombre del host local que posee. Agregue eso y presione Entrar. Solicitará el nombre de la base de datos en el que desea trabajar. Si no es ninguno, use el "Postgres" predeterminado. Hemos estado utilizando la base de datos "Aqsayasin" hasta ahora y el número de puerto 5432. Hemos agregado el nombre de usuario y su contraseña ya creada en nuestra base de datos, yo.mi., aqsayasin. Si no tiene algún creación de usuario, vaya con el nombre de usuario "Postgres" predeterminado ". Después de que se hayan agregado todas las credenciales, su shell PostgreSQL está listo para usarse.
Antes de matar cualquier consulta específica con su ID de proceso, necesitamos ver las consultas y sesiones de nuestra base de datos "Aqsayasin" actualmente. Por lo tanto, utilizaremos un comando "Seleccionar" en el shell junto con las columnas de información que queremos mostrar para la consulta específica a través de la utilidad PG_STAT_ACTIVITY de la base de datos PostgreSQL.
Digamos que desea ver la identificación del proceso de una consulta, el nombre de usuario por el cual se ha ejecutado esta consulta, la base de datos en la que se ha utilizado esta consulta y el estado de una consulta. Hemos declarado todos los nombres de columnas que queremos buscar consultas. La instrucción de selección ha devuelto 9 registros. Tenemos un total de 1 consulta activa y 3 consultas/actividades inactivas.
Intentemos eliminar las consultas que tienen un estado "inactivo". Por lo tanto, hemos estado utilizando la identificación del proceso "10892" para eliminar la consulta relacionada con ella. Hemos utilizado el método "PG_CANCEL_BACKEND" primero para cancelarlo y luego la función "PG_MINTINATE_BACKEND ()" para terminarlo junto con la conexión. Ambas consultas devuelven "T" como verdadera para cancelarlo y eliminarlo.
Después de eliminar 1 consulta de estado "inactiva", eliminemos la consulta con el ID del proceso "12488" también. Los mismos comandos se han utilizado aquí por separado en el terminal hasta ahora. Ambos devuelven el valor booleano "verdadero", lo que implica que la consulta y la conexión específicas se han ido.
El mismo proceso se ha utilizado nuevamente para la consulta con ID del proceso "11164" como se muestra.
Después de matar 3 consultas 'inactivas' con sus identificaciones de proceso, veamos si ha sido exitoso o no. Use la misma instrucción de selección utilizando la utilidad "PG_STAT_ACTIVITY" para mostrar la lista de todas las consultas/procesos del sistema de base de datos. La salida muestra que todas las consultas "inactivas" se han eliminado y terminado permanentemente hasta ahora.
Conclusión:
Este tutorial es una guía simple para usar la función PG_CANCEL_BACKEND () y PG_TERMINATE_BACKEND () para matar la consulta específica y su conexión. El objetivo principal de usar estas funciones en las consultas es simplemente eliminar las consultas no deseadas o las sesiones de la base de datos, I.mi., inactivo. Por lo tanto, este artículo ha explicado bien la idea de limpiar el sistema de su base de datos de consultas y conexiones "inactivas" no deseadas y "inactivas" en segundos en segundos.