Saltar al contenido

SQL, Postgres OIDs, ¿Qué son y por qué son útiles?

Agradecemos tu ayuda para difundir nuestras reseñas referente a las ciencias informáticas.

Solución:

Los OID básicamente le brindan una identificación integrada para cada fila, contenida en una columna del sistema (a diferencia de una columna de espacio de usuario). Eso es útil para las mesas en las que no tiene un primario keytener filas duplicadas, etc. Por ejemplo, si tiene una tabla con dos filas idénticas y desea eliminar la más antigua de las dos, puede hacerlo usando la columna oid.

Los OID se implementan mediante enteros sin signo de 4 bytes. Ellos son no único: el contador OID se ajustará a 2³²-1. Los OID también se utilizan para identificar tipos de datos (ver /usr/include/postgresql/server/catalog/pg_type_d.h).

En mi experiencia, la función generalmente no se usa en la mayoría de las aplicaciones respaldadas por Postgres (probablemente en parte porque no son estándar), y su uso está esencialmente obsoleto:

En PostgreSQL 8.1, default_with_oids está desactivado de forma predeterminada; en versiones anteriores de PostgreSQL, estaba activado de forma predeterminada.

El uso de OID en las tablas de usuarios se considera obsoleto, por lo que la mayoría de las instalaciones deberían dejar esta variable deshabilitada. Las aplicaciones que requieren OID para una tabla en particular deben especificar CON OID al crear la tabla. Esta variable se puede habilitar para compatibilidad con aplicaciones antiguas que no siguen este comportamiento.

Los OID todavía están en uso para Postgres con objetos grandes (aunque algunas personas argumentarían que los objetos grandes generalmente no son útiles de todos modos). También se utilizan ampliamente en las tablas del sistema. Son utilizados, por ejemplo, por TOAST, que almacena más de 8 KB de BYTEA (etc.) en un área de almacenamiento independiente (transparente) que se utiliza de forma predeterminada por todas las mesas. Su uso directo asociado con las tablas de usuario “normales” está básicamente en desuso.

El tipo oid se implementa actualmente como un entero de cuatro bytes sin signo. Por lo tanto, no es lo suficientemente grande para proporcionar unicidad en toda la base de datos en bases de datos grandes, o incluso en tablas individuales grandes. Entonces, usar la columna OID de una tabla creada por el usuario como principal key está desanimado. Los OID se utilizan mejor solo para referencias a tablas del sistema.

Aparentemente, la secuencia OID “se ajusta” si excede 4B 6. Entonces, en esencia, es un contador global que puede ajustarse. Si se ajusta, puede comenzar a producirse una desaceleración cuando se usa y se “busca” valores únicos, etc.

Ver también https://wiki.postgresql.org/wiki/FAQ#What_is_an_OID.3F

Los OID están siendo eliminados

El equipo central responsable de Postgres está eliminando gradualmente los OID.

Postgres 12 elimina el comportamiento especial de las columnas OID

El uso de OID como una columna de sistema opcional en sus tablas ahora se eliminó de Postgres 12. Ya no puede usar:

  • CREATE TABLE … WITH OIDS mando
  • default_with_oids (boolean) configuración de compatibilidad

el tipo de datos OID permanece en Postgres 12. Puede crear explícitamente una columna del tipo OID.

Después de migrar a Postgres 12, cualquier columna del sistema definida opcionalmente oid ya no será invisible por defecto. realizando un SELECT * ahora incluirá esta columna. Tenga en cuenta que esta columna adicional de “sorpresa” puede romper el código SQL escrito ingenuamente.

Eres capaz de apoyar nuestro quehacer poniendo un comentario y dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *