La función Elastic Parallel Query permite acelerar la creación de índices B-tree y de índices globales de tipo B-tree. En este tema se explica por qué esta función acelera dichos procesos y cómo utilizarla para crear estos índices.
Funcionamiento
Cuando crea índices, el servicio examina la tabla heap sobre la que se van a generar los índices y construye las entradas indexadas. Después, genera un árbol B-tree de índice a partir de esas entradas.
Al usar esta función para acelerar la creación de índices, el sistema genera automáticamente un proceso coordinador de consultas (QC) que examina la tabla heap en paralelo. Luego, el proceso encargado de crear los índices recibe los resultados del examen enviados por el QC y construye los índices.
Precauciones
Esta función solo acelera la creación de índices en columnas generales. No es posible utilizarla cuando se emplean sintaxis como CONCURRENTLY o INCLUDE para crear los índices.
No se pueden crear índices en columnas definidas mediante expresiones.
Parámetros
Para usar la función Elastic Parallel Query y acelerar la creación de índices, configure los siguientes parámetros.
Parámetro | Descripción |
polar_px_enable_btbuild | Indica si se usa esta función para acelerar la creación de índices. Valor predeterminado: off. Valores válidos:
|
polar_px_dop_per_node | Define el grado de paralelismo aplicado al acelerar la creación de índices con esta función. El valor predeterminado es 1. Se recomienda establecer el valor en 8 o 16. Este parámetro también define el grado de paralelismo de Elastic Parallel Query. Para obtener más información, consulte . También puede configurar este parámetro en on para un rol de base de datos específico. |
polar_px_enable_replay_wait | Si establece polar_px_enable_btbuild en on, el parámetro polar_px_enable_replay_wait entra en vigor automáticamente para la sesión actual. Esto garantiza que las entradas más recientes de la tabla se incluyan en el índice. Una vez creados los índices, el sistema restablece el parámetro a su valor predeterminado en la base de datos. |
polar_bt_write_page_buffer_size | Define la política de operaciones de E/S de escritura durante la creación de índices. De forma predeterminada, el parámetro tiene el valor 0. Este valor indica que las entradas indexadas se escriben en disco por bloques al crear los índices. La unidad de medida es el bloque. El valor máximo es 8192. Se recomienda establecer el valor en 4096.
|
Ejemplos
Contexto
Ejecute la siguiente instrucción para crear una tabla llamada test:
CREATE TABLE test(id int,id2 int);
Consulte el esquema de la tabla:
\d test
Table "public.test"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer | | |
id2 | integer | | |
Siga estos pasos para usar Elastic Parallel Query y acelerar la creación de índices en la tabla test:
-
Establezca el parámetro polar_px_enable_btbuild en on para usar la función Elastic Parallel Query y acelerar la creación de índices.
Ejecute la siguiente instrucción:
SET polar_px_enable_btbuild=on;Compruebe que la configuración haya surtido efecto.
SHOW polar_px_enable_btbuild;Se devuelve el siguiente resultado:
polar_px_enable_btbuild ------------------------- on (1 row) -
Ejecute la siguiente instrucción para crear los índices:
CREATE INDEX t ON test(id) WITH(px_build=on);Consulte el esquema de la tabla:
\d test Table "public.test" Column | Type | Collation | Nullable | Default --------+---------+-----------+----------+--------- id | integer | | | id2 | integer | | | Indexes: "t" btree (id) WITH (px_build=finish)
Para usar la función Elastic Parallel Query y acelerar la creación de índices, agregue la opción px_build en la instrucción CREATE INDEX.
Una vez creados los índices, la información del tipo de índice incluye el campo (px_build=finish). Este campo indica que los índices se crearon mediante la función Elastic Parallel Query.
Si polar_px_enable_btbuild está configurado en on, pero no se agrega la opción px_build en la instrucción CREATE INDEX, se utiliza el método nativo de para crear los índices. Ejemplo:
CREATE INDEX t ON test(id);
Consulte el esquema de la tabla:
\d test
Table "public.test"
Column | Type | Collation | Nullable | Default
--------+---------+-----------+----------+---------
id | integer | | |
Indexes:
"t" btree (id)
Datos de rendimiento
Crear índices en una tabla grande con la función Elastic Parallel Query es aproximadamente cinco veces más rápido que hacerlo con el método nativo de .