Utilice el enrutamiento de sentencias eficiente activando ProxySQL en la base de datos de IA autónoma
ProxySQL permite el acceso unificado a varias bases de datos de IA autónomas mediante sentencias de enrutamiento para DML y consultas, y elimina la necesidad de consolidar físicamente todos los datos en una única base de datos.
Temas
- Acerca del enrutamiento eficiente de sentencias con ProxySQL en Autonomous AI Database
ProxySQL en Autonomous AI Database permite utilizar varias instancias de Autonomous AI Database y facilita el acceso y el análisis de datos como si se almacenara en un solo lugar. - Enrutamiento con reconocimiento de contexto
ProxySQL El enrutamiento soporta el enrutamiento con reconocimiento de contexto, un mecanismo que selecciona dinámicamente la instancia de base de datos de IA autónoma de destino para una tabla en tiempo de ejecución de consulta. - Donde el enrutamiento de sentencias con ProxySQL puede proporcionar ventajas de la aplicación
El enrutamiento de sentencias con ProxySQL es más eficaz cuando cada sentencia SQL se puede asignar de forma determinista a una única instancia de base de datos de IA autónoma de destino mediante asignaciones de nivel de esquema o de nivel de objeto. - Activar enrutamiento de sentencias y definir asignación de esquemas
En esta sección se explica cómo configurar ProxySQL para el enrutamiento automático de sentencias de un enrutador principal a una o más instancias de base de datos de destino. - Envío de sentencias mediante ProxySQL
Para aprovechar el enrutamiento automático de sentencias, debe conectarse a la instancia de enrutador gestionada por ProxySQL y enviarlas a ella. - Parada del enrutamiento de sentencias a una instancia de destino
Realice estos pasos en una base de datos de IA autónoma de destino para evitar que esta acepte sentencias enrutadas desde el enrutador ProxySQL. - Eliminación de esquema o asignación de objeto de la instancia de enrutador
Proporciona los pasos para eliminar una asignación específica de la base de datos de enrutador gestionada por ProxySQL. - Desactivar enrutamiento de sentencias
Muestra los pasos para el enrutamiento automático de sentencias desactivando ProxySQL. - Enrutamiento automático de sentencias con ProxySQL notas
Muestra las limitaciones y las notas importantes sobre el enrutamiento automático de sentencias cuando ProxySQL está activado.
Acerca del enrutamiento eficiente de sentencias con ProxySQL en la base de datos de IA autónoma
ProxySQL en Autonomous AI Database te permite utilizar varias instancias de Autonomous AI Database y facilita el acceso y el análisis de datos como si se hubieran almacenado en un solo lugar.
Puede utilizar ProxySQL cuando necesite trabajar con una configuración grande que implique varias bases de datos de IA autónomas. ProxySQL proporciona acceso unificado a diferentes bases de datos y elimina la necesidad de mover físicamente los datos a un solo lugar.
Al activar ProxySQL, designa una instancia de base de datos de IA autónoma como instancia de enrutador y una o más instancias de base de datos de IA autónoma como instancias de destino. La instancia de enrutador incluye una tabla de enrutamiento que determina cómo se distribuye (asigna) una sentencia a una o más instancias de destino. Una instancia de destino incluye una tabla de aceptación. La tabla de aceptación es similar a la tabla de enrutamiento y contiene entradas que especifican que la instancia acepta redireccionamientos de sentencias del enrutador.
Según el método de enrutamiento que seleccione, las sentencias se asignan automáticamente desde la instancia de enrutador a una o más instancias de destino. Una aplicación se conecta a la instancia del enrutador y se ejecuta en la instancia del enrutador, mientras que la base de datos de IA autónoma redirige las sentencias a una o más instancias de destino.
Las siguientes son algunas de las ventajas de activar ProxySQL, en comparación con el uso de una única base de datos de IA autónoma muy grande:
-
ProxySQL proporciona autonomía e independencia de la base de datos para operaciones como la gestión del ciclo de vida y las tareas de administración. Por ejemplo, mediante ProxySQL, las operaciones de base de datos, incluidas la copia de seguridad y la restauración, y funciones como Autonomous Data Guard se gestionan de forma independiente en cada instancia de base de datos de IA autónoma.
-
ProxySQL permite gestionar de forma eficaz bases de datos muy grandes dividiendo los datos entre varias instancias de bases de datos de IA autónomas.
Hay varios términos que se deben conocer al trabajar con ProxySQL:
Instancia de enrutador: al activar ProxySQL, se designa una instancia de enrutador. Una tabla de direccionamiento determina cómo se distribuye (asigna) una sentencia a una o más instancias de destino. Según el método de enrutamiento especificado, las sentencias de la instancia de enrutador se asignan automáticamente a una o más instancias de destino.
Instancia de destino: la instancia de destino se designa al crear una asignación en la instancia de enrutador. Se agrega una tabla de aceptación en cada instancia de destino.
Tabla de enrutamiento: una tabla de enrutamiento contiene entradas de asignación de destino que especifican la instancia a la que se direccionan automáticamente las sentencias.
Tabla de aceptación: una tabla de aceptación contiene entradas que especifican que la instancia acepta redireccionamientos de sentencias desde el enrutador.
Requisitos para utilizar ProxySQL
Los siguientes son los requisitos de ProxySQL:
-
La activación de ProxySQL solo está soportada para instancias de base de datos de IA autónoma que estén en un pool elástico. La instancia del enrutador y todas las instancias de destino deben ser miembros del mismo pool elástico.
-
La instancia del enrutador y todas las instancias de destino deben estar en la misma región.
-
Los metadatos de los objetos que está enrutando deben coincidir en las instancias de enrutador y destino. Es responsabilidad del diseñador de aplicaciones que los metadatos de los objetos presentes en una instancia de destino también estén presentes en la instancia del enrutador. Por ejemplo, si tiene una tabla denominada
EMPLOYEESen la instancia de destino, también debe tener una tabla con metadatos coincidentes denominadosEMPLOYEESen la instancia de enrutador. La tabla de la instancia del enrutador no tiene que estar vacía (solo metadatos).
Recomendación para activar ProxySQL
Las instancias que agregue como enrutador y como destinos pueden ser de cualquier tipo de carga de trabajo de base de datos de IA autónoma. Si hay entradas en la tabla de enrutamiento (asignación), las sentencias de los objetos especificados en esas entradas se direccionan a las instancias de destino correspondientes, independientemente del tipo de carga de trabajo del destino. Oracle recomienda que todas las instancias de Autonomous AI Database utilicen el tipo de carga de trabajo Lakehouse.
Enrutamiento automático de sentencias con ProxySQL activado
Con ProxySQL puede distribuir sentencias entre destinos mediante cualquiera de los métodos de enrutamiento soportados.
Independientemente del método de enrutamiento (asignación) que decida utilizar, es responsabilidad del diseñador de esquemas de aplicación asegurarse de que los metadatos de los objetos colocados en una instancia de destino también estén disponibles en la instancia de enrutador. Por ejemplo, si tiene una tabla denominada
EMPLOYEES en la instancia de destino, también debe tener una tabla con metadatos coincidentes denominados EMPLOYEES en la instancia de enrutador. La tabla de la instancia del enrutador no tiene que estar vacía.
-
Enrutamiento de nivel de esquema: todos los objetos de un esquema se asignan a una única instancia de destino. Puede asignar varios esquemas a una única instancia de destino. Sin embargo, las sentencias de un esquema no se pueden asignar a varias instancias de destino, lo que significa que no se puede utilizar el mismo esquema para el enrutamiento de esquemas y objetos.
Para especificar el enrutamiento de nivel de esquema, llame al procedimiento
DBMS_PROXY_SQL.ADD_MAPPINGcon el parámetroobject_namedefinido en el valor "*".
Descripción de la ilustración proxysql_schema.pngEn este ejemplo, los metadatos de los objetos del esquema A están presentes tanto en la base de datos de IA autónoma de destino 1 como en la instancia del enrutador, y los metadatos de los objetos del esquema B están presentes tanto en la base de datos de IA autónoma de destino 2 como en la instancia del enrutador, etc.
-
Enrutamiento de nivel de objeto: los objetos de un esquema se asignan a varias instancias de destino.
Para especificar el enrutamiento de nivel de objeto, llame al procedimiento
DBMS_PROXY_SQL.ADD_MAPPINGcon el parámetroobject_namedefinido en un nombre de tabla.
Descripción de la ilustración proxysql_object.pngEn este ejemplo, los metadatos de la tabla A están presentes en el destino 1 y en la instancia del enrutador, y los metadatos de la tabla B están presentes en el destino 2 y en la instancia del enrutador, etc.
-
Enrutamiento híbrido: los objetos de un esquema se direccionan mediante una combinación de enrutamiento a nivel de esquema y enrutamiento a nivel de objeto.

Descripción de la ilustración proxysql_hybrid.pngEn este ejemplo, los metadatos para el esquema A están presentes tanto en la base de datos de IA autónoma de destino 1 como en la instancia del enrutador, y los metadatos para la tabla B (en el esquema B) están presentes tanto en la instancia de destino de Autonomous Database 2 como en la instancia del enrutador, etc.
Asignación de servicios con enrutamiento automático de extractos cuando ProxySQL está activado
Cuando la tabla de enrutamiento indica una asignación a una base de datos de destino, se utiliza el mismo servicio que está conectado a la base de datos del enrutador para el acceso a los datos en la base de datos de destino.
Por ejemplo, si una sesión está conectada al servicio HIGH en la instancia del enrutador, una sentencia o fragmento de sentencia enrutado a una instancia de destino también utiliza el servicio HIGH. Del mismo modo, si una sesión está conectada al servicio MEDIUM en la instancia del enrutador, una sentencia enrutada a una instancia de destino utiliza el servicio MEDIUM.
Si el servicio utilizado para conectarse en la instancia del enrutador no está disponible en una instancia de destino, la sentencia o el fragmento de sentencia enrutados a la instancia de destino utiliza el servicio MEDIUM (los servicios disponibles dependen del tipo de carga de trabajo de la base de datos de IA autónoma).
Semántica de usuario actual para consultas enrutadas
Cuando un usuario consulta una tabla o vista que se muestra en la tabla de enrutamiento, ProxySQL se conecta a la base de datos de destino mediante el mismo nombre de usuario de base de datos que el emisor de llamada.
Por ejemplo, si el usuario SCOTT ejecuta un SELECT en una tabla o vista enrutada, la consulta correspondiente se ejecuta en la base de datos de destino como usuario SCOTT. Esto significa que:
-
El usuario SCOTT debe existir en la base de datos de destino.
- El usuario SCOTT debe tener los privilegios necesarios en los objetos de destino de la base de datos de destino. Si el usuario no existe o no tiene privilegios suficientes en la base de datos de destino, la consulta enrutada fallará.
Enrutamiento basado en el contexto
ProxySQL El enrutamiento soporta el enrutamiento consciente del contexto, un mecanismo que selecciona dinámicamente la instancia de base de datos de IA autónoma de destino para una tabla en tiempo de ejecución de consultas.
Cuando una tabla se puede enrutar a varias instancias de destino de Autonomous AI Database, la decisión de enrutamiento final no solo se ve influida por la asignación estática de la tabla, sino también por la estructura y el contexto de la consulta. Si dicha tabla aparece junto con otras tablas enrutadas en el mismo nivel de la consulta, por ejemplo, en la misma subconsulta o cláusula de unión, el enrutamiento ProxySQL prefiere enrutarla al mismo destino que esas otras tablas, siempre que las reglas de asignación lo permitan.
Si, después de aplicar estas reglas, aún hay más de una instancia de base de datos de IA autónoma de destino válida, el enrutamiento ProxySQL selecciona uno de los destinos elegibles de forma aleatoria.
SELECT e.name AS emp_name, d.name AS dept_name
FROM scott.emp e, scott.dept d
WHERE e.deptno = d.deptno;
En este ejemplo, supongamos que SCOTT.EMP se asigna a varias instancias de base de datos de IA autónoma de destino T1 y que T2.SCOTT.DEPT solo se asigna a la instancia de base de datos de IA autónoma de destino T2. Esto se debe a que SCOTT.EMP y SCOTT.DEPT aparecen en el mismo nivel de la consulta, el enrutamiento de ProxySQL enruta SCOTT.EMP a T2 para alinearlo con el enrutamiento de SCOTT.DEPT. Este enrutamiento dinámico de SCOTT.EMP solo se utiliza cuando la tabla se asigna explícitamente a más de un destino. Si SCOTT.EMP no está asignado a ninguna instancia de base de datos de IA autónoma de destino, el enrutamiento ProxySQL ejecuta la consulta para SCOTT.EMP en la propia instancia de base de datos de IA autónoma de enrutador.
WITH
sub1 AS (
SELECT a.c1 r1, b.c1 r2 FROM tab_dup a, tab2 b
),
sub2 AS (
SELECT a.c1 t1, b.c1 t2 FROM tab_dup a, tab1 b
)
SELECT * FROM sub1, sub2 ORDER BY 1, 2, 3, 4;
En el ejemplo anterior, supondrá que TAB_DUP está asignado tanto a T1 como que T2.TAB2 se enruta solo a T2.TAB1, solo a T1. En la subconsulta sub1, TAB_DUP y TAB2 aparecen juntos en el mismo nivel, por lo que el enrutamiento de ProxySQL enruta TAB_DUP a T2 para coubicar la ejecución con TAB2. En la subconsulta sub2, TAB_DUP aparece con TAB1, que solo se asigna a T1, por lo que el enrutamiento de ProxySQL enruta TAB_DUP a T1. Como resultado, TAB_DUP se puede direccionar a diferentes destinos en diferentes partes de la misma sentencia, según el contexto de consulta que lo rodea.
MERGE INTO tab1 t1
USING tab_dup t2
ON (t1.c1 = t2.c1)
WHEN MATCHED THEN
UPDATE SET t1.c2 = t2.c2;En el ejemplo anterior, supondrá que TAB_DUP está asignado a T1 y T2. TAB1 solo se asigna a T1.
Aquí, se hace referencia a AB1 y TAB_DUP en el mismo nivel en la sentencia MERGE. Por lo tanto, el enrutamiento de ProxySQL enruta TAB_DUP a T1 para alinearlo con la ubicación de TAB1. Solo las filas de TAB_DUP que están presentes en T1 participan en la operación MERGE y las actualizaciones de TAB1 se basan en esos valores.
Dónde el enrutamiento de extractos con ProxySQL puede proporcionar beneficios de la aplicación
El enrutamiento de sentencias con ProxySQL es más eficaz cuando cada sentencia SQL se puede asignar de forma determinista a una única instancia de base de datos de IA autónoma de destino mediante asignaciones de nivel de esquema o de nivel de objeto.
Cuando cada sentencia SQL se puede asignar de forma determinista a un único destino y se activa el enrutamiento de sentencias, el trabajo se ejecuta donde residen los objetos a los que se hace referencia. Este patrón es beneficioso en términos de rendimiento de consulta para las siguientes arquitecturas de base de datos:
-
Diseños de inquilino por esquema/base de datos
-
Particiones regionales
-
Borrar límites de dominio (por ejemplo,
INVENTORYyBILLING)
Al utilizar el enrutamiento de sentencias con ProxySQL, puede escalar propiedades muy grandes detrás de una única instancia de base de datos de IA autónoma de destino, sin consolidar físicamente los datos.
Si los análisis requieren que combine objetos asignados a diferentes bases de datos de destino en una sola consulta ad hoc, debe utilizar enfoques complementarios, en lugar de confiar en el enrutamiento de sentencias con ProxySQL. Los enfoques alternativos complementarios incluyen:
- Utilizar vistas materializadas o de agregación previa
- Utilizar trabajos por destino con un paso de fusión
- Utilizar un almacén de informes
A continuación se describe un caso en el que el enrutamiento de sentencias es adecuado y un caso en el que el uso del enrutamiento de sentencias no es adecuado:
-
Un ejemplo adecuado: una aplicación SaaS multiinquilino donde la aplicación incluye
tenant_idy el esquema de cada inquilino se asigna a su propia instancia de base de datos de IA autónoma de destino (asignación de nivel de esquema conobject_name => '*'). En este caso, cada solicitud de un inquilino se enruta al destino correcto de forma transparente a través de la tabla de asignación del enrutador. -
Un ejemplo que no es adecuado: panel de control de nivel superior que emite una sentencia SQL que une datos para "todos los inquilinos a la vez", cuando esos inquilinos se asignan a destinos diferentes. Debido a que el enrutamiento de sentencias asigna sentencias/objetos a destinos específicos, una aplicación o informe con una unión entre destinos no es una buena opción para el enrutamiento de sentencias. En este tipo de aplicación, debe ejecutar varias consultas por destino y fusionar los resultados o alimentar un área de informes consolidada en su lugar.
Activar enrutamiento de sentencias y definir asignación de esquemas
En esta sección se explica cómo configurar ProxySQL para el enrutamiento automático de sentencias de un enrutador principal a una o más instancias de base de datos de destino.
- Activación del enrutamiento de sentencias y definición de la asignación de objetos del enrutador a las instancias de destino
Para configurar el enrutamiento de sentencias, active ProxySQL en la instancia del enrutador y defina el esquema u objetos cuyas sentencias se asignen (envíen) a las bases de datos de destino. - Aceptación de enrutamiento de sentencias en instancias de destino
Debe aceptar el enrutamiento de sentencias en una instancia de destino para permitir la asignación desde la instancia de enrutador.
Activar enrutamiento de extractos y definir asignación de objetos de enrutador a instancias de destino
Para configurar el enrutamiento de sentencias, active ProxySQL en la instancia del enrutador y defina el esquema u objetos cuyas sentencias se asignan (envían) a las bases de datos de destino.
A continuación se muestran los requisitos para activar el enrutamiento automático de sentencias:
-
Cree la instancia de base de datos de IA autónoma que planea utilizar para la instancia de enrutador o identifique una instancia de base de datos de IA autónoma existente como la instancia de enrutador.
-
Cree las instancias de destino o identifique las instancias de destino a partir de las instancias de base de datos de IA autónoma existentes.
-
Asegúrese de que la instancia del enrutador y cualquier instancia de destino en la que redirija consultas tengan metadatos coincidentes para los objetos que está asignando del enrutador a un destino.
Independientemente del método de enrutamiento (asignación) que decida utilizar, es responsabilidad del diseñador de esquemas de aplicación asegurarse de que los metadatos de los objetos colocados en una instancia de destino también estén disponibles en la instancia del enrutador. Por ejemplo, si tiene una tabla denominada
EMPLOYEESen la instancia de destino, también debe tener una tabla con metadatos coincidentes denominadosEMPLOYEESen la instancia de enrutador. La tabla de la instancia del enrutador no tiene que estar vacía. -
En las opciones disponibles, determine el tipo de enrutamiento de sentencias que desea utilizar: enrutamiento de nivel de esquema, enrutamiento de nivel de objeto o enrutamiento híbrido.
Para activar el enrutamiento automático de sentencias y agregar entradas de asignación de destino a la tabla de enrutamiento:
Puede consultar la vista DBA_PROXY_SQL_MAPPINGS para mostrar los registros en la tabla de enrutamiento. Consulte DBA_PROXY_SQL_MAPPINGS View para obtener más información.
Aceptar enrutamiento de extracto en instancias de destino
Debe aceptar el enrutamiento de sentencias en una instancia de destino para permitir la asignación desde la instancia de enrutador.
Para permitir (aceptar) redireccionamientos de sentencias de la instancia de enrutador a una instancia de destino:
Enviar sentencias a través de ProxySQL
Para aprovechar el enrutamiento automático de sentencias, debe conectarse y enviar las sentencias a la instancia de enrutador gestionada por ProxySQL.
Cuando envía consultas y DML con ProxySQL activado, necesita conectarse a la instancia del enrutador para aprovechar el enrutamiento automático de sentencias.
Parada del Direccionamiento de Sentencias a una Instancia de Destino
Realice estos pasos en una base de datos de IA autónoma de destino para evitar que acepte sentencias enrutadas desde el enrutador ProxySQL.
Consulte REJECT_MAPPING Procedure para obtener más información.
Eliminar esquema o asignación de objetos de la instancia del enrutador
Proporciona los pasos para eliminar una asignación específica de la base de datos de enrutador gestionada por ProxySQL.
Desactivar enrutamiento de extracto
Muestra los pasos para el enrutamiento automático de sentencias desactivando ProxySQL.
Ejecute DBMS_PROXY_SQL.DISABLE_ROUTING en la instancia del enrutador para desactivar ProxySQL y para desactivar el enrutamiento automático de sentencias a las instancias de destino.
Por ejemplo:
BEGIN
DBMS_PROXY_SQL.DISABLE_ROUTING;
END;
/
Esto desactiva ProxySQL y desactiva el enrutamiento automático de sentencias en el enrutador.
Al desactivar ProxySQL, las entradas de asignación de sentencias de la tabla de enrutamiento de la instancia de enrutador no se suprimen. Esto significa que si vuelve a activar ProxySQL y la tabla de direccionamiento tiene entradas existentes, el direccionamiento automático de sentencias direcciona las sentencias a las instancias de destino, como se especifica en la tabla de direccionamiento. Utilice el procedimiento DBMS_PROXY_SQL.REMOVE_MAPPING si desea eliminar las entradas existentes de la tabla de enrutamiento antes de volver a activar ProxySQL.
Consulte DISABLE_ROUTING Procedure para obtener más información.
Enrutamiento automático de extractos con notas ProxySQL
Muestra las limitaciones y las notas importantes sobre el enrutamiento automático de sentencias cuando ProxySQL está activado.
-
El usuario
ADMINtiene los privilegios para gestionar ProxySQL. Si desea activar otro usuario, debe otorgar los siguientes privilegios-
privilegio
EXECUTEen el paqueteDBMS_PROXY_SQL. -
Privilegio
READen la vistaDBA_PROXY_SQL_MAPPINGS. -
Privilegio
READen la vistaDBA_PROXY_SQL_ACCEPTED_MAPPINGS.
-
-
El enrutamiento automático de sentencias se reanuda sin problemas cuando:
-
La instancia de base de datos de IA autónoma de destino realiza un failover a una base de datos en espera de Autonomous Data Guard local.
-
Puede realizar un switchover para una instancia de base de datos de IA autónoma de destino a una base de datos en espera de Autonomous Data Guard local.
Sin embargo, el enrutamiento automático de sentencias se para después de un failover o switchover a una base de datos en espera de Autonomous Data Guard entre regiones.
-