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.
Administración de índices
En esta sección, se describen los pasos necesarios para crear, describir y eliminar índices en Amazon QLDB. La cuota del número de índices por tabla que puede crear está definida enCuotas y límites en Amazon QLDB.
Creación de índices
Como también se describe enCreación de tablas e índices, puede utilizar la sentencia CREATE INDEX para crear un índice en una tabla para un campo de nivel superior especificado, de la siguiente manera. Tanto el nombre de la tabla como el nombre del campo indexado distinguen mayúsculas de minúsculas.
CREATE INDEX ON VehicleRegistration (VIN)
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
Cada índice que se crea en una tabla tiene un identificador único asignado por el sistema. Para encontrar este ID de índice, consulte la siguiente secciónDescripción de índices.
importante
QLDB requiere un índice para buscar un documento de manera eficiente. Sin un índice, QLDB necesita realizar un escaneo completo de la tabla al leer documentos. Esto puede provocar problemas de rendimiento en tablas grandes, incluidos conflictos de concurrencia y tiempos de espera de las transacciones.
Para evitar el escaneo de tablas, debe ejecutar sentencias con una cláusula deWHERE
predicado mediante un operador de igualdad (=
oIN
) en un campo indexado o en un identificador 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 los índices compuestos, anidados, únicos ni basados en funciones.
-
Puede crear un índice en cualquier tipo de datos de iones, incluidos
list
ystruct
. Sin embargo, solo puede realizar la búsqueda indexada por la igualdad del valor total del ion, independientemente del tipo de ion. Por ejemplo, al utilizar unlist
tipo como índice, no 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)
.QLDB no 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 deben tener 128 caracteres como máximo.
-
La creación de índices en QLDB es asincrónica. 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 Administración de índices.
Descripción de índices
La creación de índices en QLDB es asincrónica. 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 sentencia consulta todos los índices de laVehicleRegistration
tabla 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 único del índice. -
expr
— La ruta del documento indexado. Este campo es una cadena con el formato:[fieldName]
. -
status
— El estado actual del índice. El estado de un índice puede tener 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. QLDB no usa el índice en las consultas hasta que el estado esté en línea. -
FAILED
— No se puede crear el índice debido a un error irrecuperable. Los índices en este estado siguen teniendo en cuenta tu 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 eliminado.
-
-
message
— El mensaje de error que describe el motivo por el que el índice tiene unFAILED
estado. Este campo solo se incluye para índices fallidos.
También puede utilizar laAWS Management Console para comprobar el estado de un índice.
Para comprobar el estado de un índice (consola)
Inicie sesión en y abra la consola de Amazon QLDB en https://console.aws.amazon.com/qldb
.AWS Management Console -
En el panel de navegación, elija Ledgers.
-
En la lista de libros de contabilidad, elija el nombre del libro mayor cuyos índices desea administrar.
-
En la página de detalles del libro mayor, en la pestaña Tablas, elija 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
Usa laDROP INDEX sentencia para eliminar un índice. Cuando eliminas un índice, se elimina permanentemente de la tabla.
Primero, busque el ID del índice deinformation_schema.user_tables
. Por ejemplo, la siguiente consulta devuelve elLicensePlateNumber
campo indexadoindexId
de laVehicleRegistration
tabla.
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 eliminar el índice. El siguiente es un ejemplo en el que se elimina el ID del índice4tPW3fUhaVhDinRgKRLhGU
. El ID del ID del índice es un ID único que debe estar incluido entre comillas dobles.
DROP INDEX "4tPW3fUhaVhDinRgKRLhGU" ON VehicleRegistration WITH (purge = true)
nota
La cláusulaWITH (purge = true)
es obligatoria para todasDROP
INDEX
las sentencias y actualmentetrue
es el único valor admitido.
La palabra clavepurge
distingue entre mayúsculas y minúsculas y debe escribirse completamente en minúsculas.
También puede utilizar elAWS Management Console para eliminar un índice.
Para eliminar un índice (consola)
Inicie sesión en y abra la consola de Amazon QLDB en https://console.aws.amazon.com/qldb
.AWS Management Console -
En el panel de navegación, elija Ledgers.
-
En la lista de libros de contabilidad, elija el nombre del libro mayor cuyos índices desea administrar.
-
En la página de detalles del libro mayor, en la pestaña Tablas, elija el nombre de la tabla cuyo índice desea eliminar.
-
En la página de detalles de la tabla, busque la tarjeta Campos indexados. Seleccione el índice que desee eliminar y, a continuación, elija Eliminar índice.
Errores comunes
En esta sección se describen los errores más comunes que se pueden encontrar al crear índices y se sugieren posibles soluciones.
nota
Los índices que tienen el estado deFAILED
siguen contabilizándose para la cuota de índices por tabla. Un índice fallido también impide modificar o eliminar cualquier documento que haya provocado un error en la creación del índice en la tabla.
Debe eliminar el índice de forma explícita para eliminarlo de la cuota.
- El documento contiene varios valores para el campo indexado:
fieldName
. -
QLDB no 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 eliminar 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.
QLDB también devuelve este error si intenta insertar un documento que contiene varios valores para un campo que ya está indexado en la tabla.
- Límite de índices superado:
Table TableName
ya tienen
índices y no puede crear más. -
QLDB impone un límite de cinco índices por tabla, incluidos los índices fallidos. Debe eliminar un índice existente antes de crear uno nuevo.
- No hay un índice definido con identificador:
indexID
. -
Intentó eliminar un índice que no existe para la combinación de tabla e ID de índice especificada. Para obtener información sobre cómo comprobar los índices existentes, consulteDescripción de índices.