SET variable { TO | = } { 'value' | DEFAULT } SET TIME ZONE { 'timezone' | LOCAL | DEFAULT } SET TRANSACTION ISOLATION LEVEL { READ COMMITTED | SERIALIZABLE } |
Parámetro glogal que se quiere fijar.
Nuevo valor del parámetro. Se puede utilizar el valor DEFAULT para especificar que se devuelve el parámetro a su valor de defecto.
Las variables posibles y los valores permitidos son:
Fija la codificación para clientes mult-byte. Los parámetros son:
Fija la codificación de cliente multi-byte a: value. La codificación especificada debe estar soportada por el servidor.
Esta opción solo es utilizable si el soporte MULTIBYE se autorizó durante el paso de configuración en la construcción de Postgres.
Fija el estilo de representación de fecha/hora. Afecta al formato de salida, y en algunos casos puede afectar a la interpretación de la entrada.
utiliza fechas y horas de estilo ISO 8601.
utiliza fechas y horas de estilo Oracle/Ingres.
utiliza el formato tradicional de Postgres.
utiliza dd/mm/yyyy para la representación numérica de las fechas.
utiliza mm/dd/yyyy para la representación numérica de las fechas.
utiliza dd.mm.yyyy para la representación numérica de las fechas.
igual que 'NonEuropean'
recupera los valores de defecto ('US,Postgres')
La inicialización del formato de la fecha se puede hacer:
Fijando la variable de entorno PGDATESTYLE. Si PGDATESTYLE se fija en el ambiente de una aplicación de un cliente basado en libpq, libpq fijará automáticamente DATESTYLE al valor de PGDATESTYLE durante el arranque de la conexión. |
Ejecutando postmastes utilizando la opción -o -e se fijan las fechas a la convención Europea. Nótese que esto afecta sólo a algunas combinaciones de estilos de fechas; por ejemplo, el estily ISO no se ve afectado por este parámetro. |
Cambiando las variables en src/backend/utils/init/globals.c. |
Las variables de globals.c que se pueden cambiar son:
bool EuroDates = false | true |
int DateStyle = USE_ISO_DATES | USE_POSTGRES_DATES | USE_SQL_DATES | USE_GERMAN_DATES |
Fija la codificación multi-byte para el servidor.
Fija la codificación multi-bye para el servidor.
Esta opción sólo está disponible si se habilitó el soporte MULTIBYTE durante el paso de configuración de la construcción de Postgres.
Los valores posibles para timezone dependen de su sistema operativo. Por ejemplo, en Linux /usr/lib/zoneinfo contiene la base de datos de zonas horarias.
Aquí tiene algunos valores válidos para zonas horarias:
situa la zona horaria de California.
sitúa la zona horaria de Portugal.
sitúa la zona horaria de Italia.
fija la zona horaria a su valor local. (el valor de la variable de entorno TZ).
Si se especifica una zona horaria invalida, será fijada a GMT (en la mayoría de sistemas en cualquier caso).
La segunda sistaxis mostrada más arriba, permite fijar la zona horaria con una sintaxis similar a SET TIME ZONE de SQL92. La palabra clave LOCAL es sólo un formato alternativo a DEFAULT para mantener la compatibilidad con SQL92.
Si la variable de entorno PGTZ se fija en el ambiente de la aplicación de un cliente basado en libpq (en el ambiente del frontend), libpq fijará automáticamente TIMEZONE al valor de PGTZ durante el arranque de la conexión.
Fija el nivel de aislamiento para la transacción actual.
Las consultas de la transacción actual leen sólo filas aseguradas (committed) antes de empezar una consulta. READ COMMITTED es el valor de defecto.
El estandar SQL92 requiere que se fije el valor de aislamiento de defecto a SERIALIZABLE. |
Las consultas de la transacción llen sólo fila aseguradas antes de la primera instrucción DML (SELECT/INSERT/DELETE/UPDATE/FETCH/COPY_TO) que se ejecute en esta transacción.
Hay también varios parámetros internos o de optimización que se pueden especificar con el comando SET:
Fija la estimación del optimizador del coste de una página de disco leída no secuencialmente. Eso se mide como un múltiplo del coste de una lectura de página secuencial.
Fija el coste de un acceso aleatorio a un página al valor punto flotante especificado.
Fija la estimación que hará el optimizador del coste de procesar cada tupla durante una consulta. Esto se mide como una fracción del coste de una lectura secuencial de una página.
Fija el coste de proceso de CPU por tupla al valor de de punto flotante especificado.
Fija la estimación que hará el optimizador sobre el coste de procesar cada tupla del índice durante el procesado de un barrido del índice (index scan). Se mide como una fracción del coste de una lectura secuencial de página.
Fija el coste de CPU de procesado por tupla de índice al valor de punto flotante especificado.
Fija la estimación que hará el optimizador del coste de procesar cada operador en una cláusula WHERE. Esto se mide como una fracción del coste de un acceso secuencial a una página.
Fija le coste de CPU para procesar cada operador al valor de punto flotante especificado.
Fija la estimación que hará el optimizador sobre el tamaño efectivo de la caché en disco (es decir, la porción de la caché en disco del kernel que será utilizada por los ficheros de datos de Postgres). Esto se mide en páginas de disco, normalmente en piezas de 8 Kb.
Fija el tamaño estimado de la caché en el valor de punto flotante especificado.
Habilita o inhabilita el uso por el planificador de tipos de planes de barrido secuencial. (No es posible suprimir completamente los barridos secuenciales, pero desactivando esta variable se disuade al planificador de utilizar uno de ellos si dispone de otro método utilizable).
Habilita el uso de barridos secuenciales (valor de defecto).
Inhabilita el uso de barridos secuenciales.
Habilita o inhabilita el uso por el planificador de tipos de planes de barrido de índices.
Habilita el uso de barridos de índices (valor de defecto).
Inhabilita el uso de barridos de índices.
Habilita o inhabilita el uso por el planificador de tipos tipos de planes por barrido TID.
Habilita el uso de barridos TID (valor de defecto).
Inhabilita el uso de barridos TID.
Habilita o inhabilita el uso por el planificador pasos de ordenación explícita. (No es posible suprimir por completo las ordenaciones explititas, pero fijando en OFF esta variable disuade al planificador de usar uno cuando tiene otro método utilizable.)
Habilita el uso de ordenaciones (valor de defecto).
Inhabilita el uso de ordenaciones.
Habilita o inhabilita el uso por el planificador de planes de join de blucle anidado. (No es posible suprimer por completo las joins de bucle anidado, pero fijar en OFF esta variable disuade al planificador de utilizar uno de ellos si dispone de otro método).
Habilita el uso de joins de bucle anidado (valor de defecto).
Inshabilita el uso de joins de bucle anidado.
Habilita o inhabilita el uso por el planificador de planes de tipo "enlace intercalado" (mergejoin).
Habilita el uso de enlaces intercalados (valor de defecto).
Inhabilita el uso de enlaces intercalados.
Habilita o inhabilita el uso por el planificador de planes de tipo enlace hash (hashjoin).
Habilita el uso de enlaces hash (valor de defecto).
Inhabilita el uso de enlaces hash.
Fija el porcentaje de uso del algoritmo genérico del optimizador.
Habilita el algoritmo genérico del optimizador para instrucciones con 11 tablas o más. (Este es también el valor de defecto DEFAULT).
Toma un argumento entero para habilitar el algoritmo genérico para instrucciones con # o más tablas en la consulta.
Inhabilita el algoritmo genérico del optimizador.
Vea el capítulo sobre GEQO de la Guía del Programador para obtener más información sobre la optimización de la consulta.
Si la variable de entorno PGGEQO se fija en el ambiente de usuario de un cliente basado en libpq, libpq automáticamente fijará GEQO al valor de PGGEQO durante el arranque de la conexión.
Key Set Query Optimizer (Optimizador de la Consulta Fijado por Clave) lleva al planificador de la consulta a convertir aquellas consultas cuyas cláusulas WHERE incluyan muchas cláusulas OR y AND (tales como "WHERE (a=1 AND b=2) OR (a=2 AND b=3) ...") en una consulta UNION. Este metodo puede ser más rápido que la implementación de defecto, pero no necesariamente produce exactamente el mismo resultado, puesto que UNION implítitamente añade una cláusula SELECT DISTINCT para eliminar las filas resultantes que sean identicas. KSQO se utiliza habitualmente cuando se trabaja con productos como MicroSoft Access, que tienden a generar las consultas de esta forma.
Habilita esta optimización.
Inhabilita esta optimización (valor de defecto).
Equivalente a especificar SET KSQO='OFF'.
El algoritmo KSQO se utilizaba por ser absolutamente esencial para consultas con muchas cláusulas OR y AND, pero en Postgres 7.0 y posteriores, el planificador estandar manipula estas consultas correctamente.
SET modificará los parámetros de configuración para la variable durante una sesión.
Los valores en vigor se pueden obtener utilizando el SHOW, y los valores pueden devolverse a su situación de defecto utilizando RESET. Valores y parámetros son sensibles a mayúsculas y minúsculas. Nótese que el campo "valor" siempre se especifica como una cadena de caracteres, de modo que se encierra entre comillas simples.
SET TIME ZONE cambia la asignación de zona horaria de defecto de la sesión. Una sesión SQL siempre empieza con un valor inicial de asignación de zona horaria. La instrucción SET TIME ZONE se utiliza para cambiar la asignación de zona horaria para la sesión SQL actual.
Fijar el estilo de la fecha a ISO:
SET DATESTYLE TO 'ISO'; |
SET GEQO ON=4; |
SET GEQO = DEFAULT; |
SET TIME ZONE 'PST8PDT'; SELECT CURRENT_TIMESTAMP AS ahora; ahora ---------------------- 1998-03-31 07:41:21-08 |
SET TIME ZONE 'Europe/Rome'; SELECT CURRENT_TIMESTAMP AS ahora; ahora ---------------------- 1998-03-31 17:41:31+02 |
No hay SET variable general en SQL92 (con la excepción de SET TRANSACTION ISOLATION LEVEL). La sintaxis de SQL92 para SET TIME ZONE es ligeramente diferente, que permite sólo un único valor entero para la especificación de la zona horaria:
SET TIME ZONE { expresión_de_valor_del_intervalo | LOCAL } |