Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Administrar índices
importante
Aviso de fin de soporte: los clientes actuales podrán usar Amazon QLDB hasta que finalice el soporte, el 31 de julio de 2025. Para obtener más información, consulte Migración de un Amazon QLDB Ledger a Amazon Aurora SQL Postgre
En esta sección se describe cómo crear, describir y eliminar índices en AmazonQLDB. La cuota del número de índices por tabla que puede crear se define en Cuotas y límites en Amazon QLDB.
Creación de índices
Como también se describe enCreación de tablas e índices, puede usar la CREATEINDEXinstrucción para crear un índice en una tabla para un campo de nivel superior específico, de la siguiente manera. Tanto el nombre de la tabla como el nombre del campo indexado distinguen entre mayúsculas y minúsculas.
CREATE INDEX ON VehicleRegistration (VIN)
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
Cada índice que cree en una tabla tiene un identificador único asignado por el sistema. Para encontrar este identificador de índice, consulte la siguiente sección Describir índices.
importante
QLDBrequiere un índice para buscar un documento de forma eficaz. Sin un índice, QLDB necesita escanear una tabla completa al leer los documentos. Esto puede provocar problemas de rendimiento en tablas grandes, como conflictos de concurrencia y tiempos de espera de las transacciones.
Para evitar el escaneado de tablas, debe ejecutar las instrucciones con una cláusula de predicado WHERE
usando un operador de igualdad (=
o IN
) en un campo indexado o en un ID de documento. Para obtener más información, consulte Optimización del rendimiento de las consultas.
Tenga en cuenta las siguientes restricciones al crear índices:
-
Solo se puede crear un índice en un único campo de nivel superior. No se admiten índices compuestos, anidados, únicos ni basados en funciones.
-
Puede crear un índice en cualquier tipo de datos de Ion, incluidos
list
ystruct
. Sin embargo, solo puede realizar la búsqueda indexada igualando el valor total de Ion, independientemente del tipo de Ion. Por ejemplo, cuando se utiliza un tipolist
como índice, no se puede realizar una búsqueda indexada por un elemento de la lista. -
El rendimiento de las consultas solo mejora cuando se utiliza un predicado de igualdad; por ejemplo,
WHERE indexedField = 123
oWHERE indexedField IN (456, 789)
.QLDBno respeta las desigualdades en los predicados de las consultas. Como resultado, no se implementan los escaneos filtrados por rango.
-
Los nombres de los campos indexados distinguen entre mayúsculas y minúsculas y pueden tener 128 caracteres como máximo.
-
La creación del índice en QLDB es asíncrona. La cantidad de tiempo que tarda en crearse un índice en una tabla que no está vacía varía según el tamaño de la tabla. Para obtener más información, consulte Administrar índices.
Describir índices
La creación del índice en QLDB es asíncrona. La cantidad de tiempo que tarda en crearse un índice en una tabla que no está vacía varía según el tamaño de la tabla. Para comprobar el estado de la creación de un índice, puede consultar la tabla del catálogo del sistema information_schema.user_tables.
Por ejemplo, la siguiente instrucción consulta todos los índices de la tabla VehicleRegistration
en el catálogo del sistema.
SELECT VALUE indexes
FROM information_schema.user_tables info, info.indexes indexes
WHERE info.name = 'VehicleRegistration'
{ indexId: "Djg2nt0yIs2GY0T29Kud1z", expr: "[VIN]", status: "ONLINE" }, { indexId: "4tPW3fUhaVhDinRgKRLhGU", expr: "[LicensePlateNumber]", status: "FAILED", message: "aws.ledger.errors.InvalidEntityError: Document contains multiple values for indexed field: LicensePlateNumber" }
Campos de índice
-
indexId
: el ID exclusivo del índice. -
expr
: la ruta del documento indexado. Este campo es una cadena en formato:[fieldName]
. -
status
: el estado actual del índice. El estado puede ser uno de los siguientes valores:-
BUILDING
: está creando activamente el índice de la tabla. -
FINALIZING
: ha terminado de crear el índice y está empezando a activarlo para su uso. -
ONLINE
: está activo y listo para usarse en consultas. QLDBno usa el índice en las consultas hasta que el estado esté en línea. -
FAILED
: no puede crear el índice debido a un error irrecuperable. Los índices en este estado siguen contando para su cuota de índices por tabla. Para obtener más información, consulte Errores comunes. -
DELETING
: elimina activamente el índice después de que un usuario lo haya descartado.
-
-
message
: el mensaje de error que describe el motivo por el que el índice tiene un estadoFAILED
. Este campo solo se incluye para índices fallidos.
También puede utilizar el AWS Management Console para comprobar el estado de un índice.
Para comprobar el estado de un índice (consola)
Inicia sesión y abre la AWS Management Console QLDB consola de Amazon en https://console.aws.amazon.com/qldb
. -
En el panel de navegación, elija Libros mayores.
-
En la lista de libros mayores, seleccione el nombre del libro mayor cuyos índices desee administrar.
-
En la página de detalles del libro mayor, en la pestaña Tablas, seleccione el nombre de la tabla cuyo índice desee comprobar.
-
En la página de detalles de la tabla, busque la tarjeta Campos indexados. La columna Estado del índice muestra el estado actual de cada índice de la tabla.
Eliminar índices
Use la instrucción DROP INDEX para descartar un índice. Cuando descarta un índice, se elimina permanentemente de la tabla.
En primer lugar, busque el identificador del índice en information_schema.user_tables
. Por ejemplo, la siguiente consulta devuelve indexId
del campo LicensePlateNumber
indexado de la tabla VehicleRegistration
.
SELECT indexes.indexId
FROM information_schema.user_tables info, info.indexes indexes
WHERE info.name = 'VehicleRegistration' and indexes.expr = '[LicensePlateNumber]'
A continuación, utilice este identificador para descartar el índice. A continuación, se muestra un ejemplo en el que se descarta el identificador del índice 4tPW3fUhaVhDinRgKRLhGU
. En este caso, el identificador del índice es un identificador único que se escribe entre comillas dobles.
DROP INDEX "4tPW3fUhaVhDinRgKRLhGU" ON VehicleRegistration WITH (purge = true)
nota
La cláusula WITH (purge = true)
es obligatoria para todas las instrucciones DROP
INDEX
y actualmente true
es el único valor admitido.
La palabra clave purge
distingue entre mayúsculas y minúsculas y debe escribirse completamente en minúsculas.
También puedes usar el AWS Management Console para eliminar un índice.
Cómo descartar un índice (consola)
Inicia sesión y abre la AWS Management Console QLDB consola de Amazon en https://console.aws.amazon.com/qldb
. -
En el panel de navegación, elija Libros mayores.
-
En la lista de libros mayores, seleccione el nombre del libro mayor cuyos índices desee administrar.
-
En la página de detalles del libro mayor, en la pestaña Tablas, elija el nombre de la tabla cuyo índice desee descartar.
-
En la página de detalles de la tabla, busque la tarjeta Campos indexados. Seleccione el índice que desee descartar y, a continuación, elija Descartar índice.
Errores comunes
En esta sección, se describen los errores más frecuentes que se pueden encontrar al crear índices y se sugieren posibles soluciones.
nota
Los índices con estado FAILED
siguen contando para su cuota de índices por tabla. Un índice erróneo también impide modificar o eliminar cualquier documento de la tabla que haya provocado un error en la creación del índice.
Debe descartar el índice de forma explícita para eliminarlo de la cuota.
- El documento contiene varios valores para el campo indexado:
fieldName
. -
QLDBno puede crear un índice para el nombre de campo especificado porque la tabla contiene un documento con varios valores para el mismo campo (es decir, nombres de campo duplicados).
Primero debe descartar el índice fallido. A continuación, asegúrese de que todos los documentos de la tabla tengan solo un valor para cada nombre de campo antes de volver a intentar crear el índice. También puede crear un índice para otro campo que no tenga duplicados.
QLDBtambién devuelve este error si intenta insertar un documento que contiene varios valores para un campo que ya está indexado en la tabla.
- Se ha superado el límite de índices: tabla
tableName
ya tienen
índices y no puede crear más. -
QLDBimpone un límite de cinco índices por tabla, incluidos los índices fallidos. Debe descartar un índice existente antes de crear uno nuevo.
- No hay un índice definido con un identificador:
indexId
. -
Intentó eliminar un índice que no existe para la combinación especificada de tabla e identificador de índice. Para obtener información sobre cómo comprobar los índices existentes, consulte Describir índices.