Diferencias de comandos SQL en el entorno de replicación

En el entorno de replicación, existen diferencias para algunos de los comandos SQL estándar Netezza®. Las diferencias incluyen cambios sintácticos y de comportamiento. Para obtener la referencia completa del comando SQL de Netezza, consulte la documentación del usuario de la base de datos.
Cuando se utiliza Netezza SQL con replicación, se aplican las siguientes reglas:
  • Debe ejecutar los comandos SQL en el primario.
  • En una réplica, los cambios en los objetos replicados (DDL, DML, tablas de base de datos y secuencias) hacen que se aborte la transacción. Las tablas temporales no se consideran objetos replicados; por lo tanto, puede modificarlas.
  • Se admiten todas las referencias a datos, incluso a datos de una base de datos no replicada o del sistema. Las referencias a datos no replicados activan la replicación por valores.

Además, las sentencias no deterministas se gestionan mediante la replicación por valores (replicación de valores de cambio).

Un comando SQL tiene uno de tres resultados cuando se ejecuta dentro de la replicación:
  • Replicado: el comando se ejecuta en el primario y se reproduce en la réplica
  • No replicado: el comando se ejecuta en el nodo primario o en la réplica, pero no se reproduce en otro nodo
  • No compatible: se bloquea la ejecución del comando
La siguiente tabla enumera y describe los comandos SQL que se ven afectados por la replicación.
Tabla 1. Comandos SQL afectados por la replicación
Mandato Notas Consulte también
ALTER DATABASE Sólo puede ejecutar este comando desde una conexión de sesión a una base de datos replicada o SYSTEM. En una base de datos replicada en un primario, el comando ALTER DATABASE se replica en la réplica. En una réplica, el comando ALTER DATABASE sólo está permitido en una base de datos no replicada. Mandato de CREATE DATABASE
BEGIN y COMMIT Se replican las transacciones con consultas de actualización (con sus correspondientes comandos BEGIN y COMMIT ) que afectan a objetos globales o replicados. Las transacciones sin consultas de actualización (sólo lectura, en las que no se realizan cambios en la base de datos) no lo son. Mandato de ROLLBACK
CALL, EXEC, EXECUTE, y SELECT procedimiento almacenado La replicación por SQL o por valor se selecciona en función de si todos los objetos a los que hace referencia un procedimiento almacenado son miembros del conjunto de replicación. Replicación de procedimientos almacenados
COPY FROM Este comando no es compatible.  
CREATE AGGREGATE, CREATE [OR REPLACE] AGGREGATE, DROP AGGREGATE Todos los agregados definidos por el usuario (y las funciones de agregado por ventanas del sistema, que no pueden modificarse) utilizan la replicación por valor.  
CREATE CATEGORY, ALTER CATEGORY y DROP CATEGORY Existen objetos globales relacionados con la seguridad multinivel. Objetos globales
CREATE COHORT, ALTER COHORT, y DROP COHORT Existen objetos globales relacionados con la seguridad multinivel. Objetos globales
CREATE DATABASE REPLICATION SET Un subcomando del comando CREATE DATABASE, crea una nueva base de datos replicada cuando se emite en el primario. Creación de nuevas bases de datos replicadas
CREATE EXTERNAL TABLE Se crea un archivo externo como parte de la ejecución del comando en la réplica, que no es el archivo exacto que existía en el primario. La ruta del directorio debe existir en la réplica; de lo contrario, se suspende la replicación. Creación de tablas externas
CREATE [OR REPLACE] FUNCTION, ALTER FUNCTION y DROP FUNCTION Puede especificar la opción DETERMINISTIC o NOT DETERMINISTIC. Si especifica la opción NOT DETERMINISTIC, se selecciona la replicación por valor cuando se llama a la función. Sincronización
CREATE GROUP, ALTER GROUP y DROP GROUP Objeto global. Objetos globales
CREATE HISTORY CONFIGURATION, ALTER HISTORY CONFIGURATION, DROP HISTORY CONFIGURATION, y SET HISTORY CONFIGURATION Los comandos relacionados con la configuración del historial no se replican. Los nodos de un conjunto de replicación pueden tener configuraciones de historial diferentes o no habilitadas.  
CREATE [OR REPLACE] LIBRARY, ALTER LIBRARY y DROP LIBRARY Las bibliotecas definidas por el usuario son objetos de una base de datos. Los comandos toman dos cláusulas, EXTERNAL HOST OBJECT y EXTERNAL SPU OBJECT, que identifican objetos compilados en el sistema de archivos que se utiliza para ejecutar el código de la biblioteca en el host y la SPU. Debe definir cada biblioteca (incluidas las bibliotecas dependientes opcionales) y objeto compilado en una base de datos replicada; de lo contrario, el comando falla.  
CREATE MATERIALIZED VIEW Consulte CREATE VIEW.  
CREATE PROCEDURE, ALTER PROCEDURE y DROP PROCEDURE   Replicación de procedimientos almacenados
CREATE SECURITY LEVEL, ALTER SECURITY LEVEL y DROP SECURITY LEVEL Objetos globales relacionados con la seguridad multinivel. Objetos globales
CREATE SEQUENCE, ALTER SEQUENCE y DROP SEQUENCE Se utiliza la replicación por valor. Coherencia de secuencias
CREATE SYNONYM, ALTER SYNONYM y DROP SYNONYM Puede crear sinónimos entre bases de datos. La replicación por valor se utiliza para las referencias a una tabla no replicada.  
CREATE TABLE, ALTER TABLE y DROP TABLE Los comandos sólo se replican para las tablas no temporales de una base de datos replicada.  
CREATE TABLE AS SELECT La replicación es por SQL o por valor, dependiendo de si todos los objetos referenciados son miembros del conjunto de replicación.  
CREATE TEMPORARY TABLE Las tablas temporales se comportan de forma idéntica en bases de datos replicadas y no replicadas en el primario. Las tablas temporales no son objetos miembros del conjunto de replicación, y las referencias a tablas temporales dan lugar a una replicación por valor. Normas de aplicación de la replicación SQL
CREATE USER, ALTER USER y DROP USER La ejecución del comando ALTER USER admin es una operación local. Puede emitir el comando en cualquier nodo, y no se replica. Todas las demás operaciones de usuario deben realizarse en el primario, y se replican con otros objetos globales.  
CREATE VIEW y CREATE [OR REPLACE] VIEW El comando puede hacer referencia a objetos de una base de datos replicada o a objetos del sistema. El comando falla si hace referencia a un objeto de una base de datos no replicada. Vistas al inicializar una réplica
DROP DATABASE Cuando se ejecuta el comando contra una base de datos replicada en el primario, la base de datos se elimina en todos los nodos de replicación del conjunto. La caída de una base de datos durante la ejecución de transacciones replicadas concurrentes puede provocar un bloqueo. Si se elimina una base de datos mientras hay sesiones conectadas a ella, el comando falla.  
EXECUTE AS y REVERT Los comandos deben replicarse cuando se encuentran en una transacción de actualización multistatement contra datos replicados o globales. Sin efecto cuando se emite como transacción implícita.  
GRANT y REVOKE   Concesión y revocación de privilegios
GENERATE STATISTICS El comando no modifica los datos, pero afecta al rendimiento de la consulta.

En las versiones de NPS® anteriores a la 7.2.0.4, el comando siempre se replica si se emite en el primario. En NPS 7.2.0.4 o posterior, el comando se replica si se emite en el primario y el parámetro replReplayMaintenance del archivo replrqm.cfg se establece en true. El valor por defecto del parámetro es verdadero ; cámbielo sólo consultando con el Servicio de Atención al Cliente.

Puede emitir el comando contra una base de datos replicada en la réplica, pero el comando no se replica.
 
GROOM TABLE El comando no modifica los datos, pero afecta al rendimiento de la consulta.

En las versiones de NPS anteriores a 7.1.0.4-P2 y 7.2.0.3-P2, un comando GROOM TABLE replicado con la opción RECLAIM BACKUPSET <backupsetid> provoca la suspensión de la réplica.

En NPS 7.1.0.4-P2 y 7.2.0.3-P2 o posteriores, la réplica trata un comando GROOM TABLE replicado con la opción RECLAIM BACKUPSET <backupsetid> como un comando GROOM TABLE sin la opción RECLAIM BACKUPSET <backupsetid>.

En NPS 7.2.0.4 o posterior, el comando GROOM TABLE se replica si se emite en el primario y el parámetro replReplayMaintenance del archivo replrqm.cfg se establece en true. El valor por defecto del parámetro es verdadero ; cámbielo sólo consultando con el Servicio de Atención al Cliente.

Puede emitir el comando GROOM TABLE contra una base de datos replicada en la réplica, pero el comando no se replica. Ejecutar el comando contra una tabla replicada en una réplica no purga los registros eliminados que puedan ser visibles para transacciones replicadas posteriores desde el primario o para transacciones actuales en la réplica.
 
INSERT, UPDATE y DELETE Los comandos se replican si se aplican en una base de datos que está replicada, excepto cuando se dirigen a una tabla temporal o externa (descargar). Los comandos sólo están permitidos en una réplica en una base de datos no replicada o en una tabla temporal de una base de datos replicada. Las descargas no se registran en el primario ni en la réplica, por lo que también están permitidas en una réplica.  
LOCK DATABASE sentencia La sentencia LOCK DATABASE no se replica, pero se permite en el primario para evitar bloqueos y abortos de transacciones.  
LOCK TABLE sentencia No replicado, incluso para tablas en una base de datos replicada. LOCK TABLE y la Guía del usuario de IBM Netezza Database.
ROLLBACK No se reproduce. BEGIN y COMMIT
SELECT consultas Las transacciones implícitas con SELECTs, las transacciones de sólo lectura y las sentencias SELECT que forman parte de una transacción de lectura/escritura no se replican.  
SET y RESET declaraciones Salvo algunas excepciones, no se replica porque el estado de la sesión no se conserva entre el primario y la réplica. Variables de sesión NPS
SHOW sentencia No replicado.  
TRUNCATE TABLE El comando no puede formar parte de una transacción explícita. Si se ejecuta en el primario, el comando se replica si la base de datos está replicada.