En este documento, se proporcionan recomendaciones de carga de trabajo y de implementación para ajustar el tamaño de las instancias de AlloyDB para PostgreSQL en cargas de trabajo de procesamiento de transacciones en línea (OLTP) y de procesamiento analítico en línea (OLAP).
Descripción general
Para ayudarte a lograr un mejor rendimiento de la base de datos, AlloyDB para PostgreSQL proporciona las siguientes funciones integradas:
- Administración automática de la memoria
- Autovacuum adaptable
- Configuración de rendimiento integrada optimizada
- Retraso de replicación bajo
- Mantenimiento no disruptivo con un tiempo de inactividad inferior a un segundo para la instancia principal y sin tiempo de inactividad para los nodos del grupo de lectura durante las operaciones de escalamiento
El ajuste de tu instancia de AlloyDB para PostgreSQL para mejorar el rendimiento incluye la administración de lo siguiente:
- Ajusta el tamaño de tus instancias principales y de grupo de lectura correctamente
- Actualización de marcas que afectan el rendimiento
Consideraciones sobre el tamaño
Antes de determinar el tamaño de tu instancia de AlloyDB para PostgreSQL, determina lo siguiente:
- Tipo de carga de trabajo: OLTP, OLAP o HTAP
- Requisitos de rendimiento: requisitos de latencia y capacidad de procesamiento
- Tamaño de datos esperado: Es el tamaño de los datos que planeas almacenar en AlloyDB para PostgreSQL y el tamaño del conjunto de datos activo.
- Escala de tu carga de trabajo: Un aumento o crecimiento en el tamaño de los datos con el tiempo
Cargas de trabajo OLTP
Puedes implementar tu base de datos de AlloyDB para PostgreSQL como una instancia zonal (un solo nodo) o como una instancia de alta disponibilidad (dos nodos en cada zona). De forma opcional, también puedes agregar instancias de grupos de lectura y un clúster secundario en otra región para cargas de trabajo distribuidas geográficamente o para la recuperación ante desastres (DR).
AlloyDB para PostgreSQL se implementa con una arquitectura distribuida a gran escala en la nube con procesamiento y almacenamiento disgregados. Las operaciones de escritura se confirman en cuanto los archivos de registros de escritura anticipada (WAL) se conservan en el almacenamiento regional, mientras que la materialización de bloques se transfiere al almacenamiento.
Del mismo modo, con la arquitectura de caché de varios niveles, los datos se colocan automáticamente entre la caché del búfer, la caché ultrarrápida y el motor de almacenamiento inteligente. Debido a esta arquitectura de caché de varios niveles que se usa en AlloyDB para PostgreSQL, las operaciones de entrada y salida por segundo (IOP) no son relevantes en el contexto de AlloyDB para PostgreSQL para compararlas con otros sistemas de bases de datos.
Sin embargo, usar transacciones por segundo (TPS) o transacciones por minuto (TPM) puede proporcionar una comparación significativa para comprender la cantidad de datos que puede controlar AlloyDB para PostgreSQL.
La métrica de tamaño principal es TPS. Para estimar el tamaño requerido de AlloyDB para PostgreSQL, sigue estos pasos:
- Identifica tu carga de trabajo existente. Si migras desde tu PostgreSQL autoadministrado o desde otras bases de datos comerciales, es posible que ya tengas el valor de TPS para tu carga de trabajo existente.
- Analiza tus consultas. Identifica las consultas más importantes de tu carga de trabajo y determina sus requisitos de rendimiento.
- Usa una herramienta como
HammerDB
opgbench
. Estas herramientas ayudan a comparar AlloyDB para PostgreSQL y determinar si el tamaño de la máquina satisface tus requisitos de TPS. - Usa la Guía de comparativas de OLTP de AlloyDB para PostgreSQL. En esta guía, se proporcionan datos de rendimiento de varias configuraciones de AlloyDB para PostgreSQL para encontrar una que cumpla con tus requisitos de TPS.
- Elige un tamaño adecuado de AlloyDB para PostgreSQL. Ten en cuenta el tamaño de tus datos actuales y las expectativas de crecimiento futuras.
Lineamientos de tamaño de la máquina
En la siguiente tabla de ejemplo, se muestran las recomendaciones para los datos con comparativas de TPC-C que tienen una proporción de operaciones de lectura y escritura de aproximadamente un 65% de operaciones de lectura y un 35% de operaciones de escritura. Cuando definas el tamaño de una instancia de AlloyDB para PostgreSQL, debes intentar tener un uso de CPU en estado estable de alrededor del 60% al 70% para evitar la sobrecarga de programación del sistema operativo. Esto permite un margen para los aumentos repentinos en el uso de recursos por parte de las aplicaciones cliente.
vCPU/Mem | Rango recomendado de transacciones por segundo (30% almacenado en caché) |
Tamaño de datos de trabajo recomendado (hasta 128 TB de tamaño total) |
max_connections recomendado |
---|---|---|---|
2 / 16 GB | Hasta 1,000 | Hasta 100 GB | 1000 |
4 GB / 32 GB | Hasta 2,500 | Hasta 250 GB | 2000 |
8/ 64 GB | Hasta 4,000 | Hasta 500 GB | 4000 |
16 GB / 128 GB | Hasta 8,000 | Hasta 1 TB | 5000 |
32 GB / 256 GB | Hasta 14,000 | Hasta 3 TB | 5000 |
64 GB / 512 GB | Hasta 20,000 | Hasta 8 TB | 5000 |
96 GB / 768 GB | Hasta 25,000 | Hasta 16 TB | 5000 |
128 / 864 GB | Mayor que 20,000 | Hasta 32 TB | 5000 |
Tipos de Deployment
Según tu carga de trabajo, puedes implementar AlloyDB para PostgreSQL solo como instancia principal o como instancia principal con grupo de lectura.
Solo principal
Elige la implementación solo principal para las siguientes cargas de trabajo:
- Operaciones de escritura intensivas con operaciones de lectura bajas o medias
- Consultas con muchas operaciones de lectura y pocas de escritura
- Operaciones de lectura y escritura típicas de OLTP (entre 60 y 70% de lecturas y entre 30 y 40% de escrituras)
Para obtener más información sobre los tipos de máquinas, consulta el Lineamiento general sobre el tamaño de las máquinas.
Principal con instancia de grupo de lectura
Si decides implementar una instancia principal con un grupo de lectura, ten en cuenta lo siguiente:
- Si tienes lecturas sensibles a la latencia, considera descargar tus consultas de lectura a instancias de grupo de lectura que ofrecen un retraso de réplica 25 veces menor en comparación con PostgreSQL estándar. Puedes configurar hasta 20 nodos en todas las instancias del grupo de lectura.
- Configura varias instancias de grupo de lectura si tienes más de una base de datos, por ejemplo, CRM o Finanzas en la misma instancia. El uso de esta estrategia ayuda a mejorar el rendimiento de las consultas y el almacenamiento en caché.
- Puedes ajustar el tamaño de tus instancias principales y de grupo de lectura de forma diferente según tus requisitos. Para obtener más información sobre las prácticas recomendadas para las instancias de grupos de lectura, consulta Prácticas recomendadas para mejorar el rendimiento y la disponibilidad de AlloyDB.
- Agrega más de un nodo por instancia de grupo de lectura para obtener alta disponibilidad.
- Habilita el motor de columnas de forma selectiva en instancias específicas del grupo de lectura para mejorar el rendimiento de las consultas de lectura. Esto no requiere habilitar el motor de columnas en la instancia principal.
Considera usar funciones integradas, como el asesor de índices, para ayudarte a agregar índices que puedan mejorar el rendimiento de las consultas.
Cargas de trabajo de OLAP
Para las cargas de trabajo de OLAP, la métrica de tamaño principal es el rendimiento de las consultas, en especial, las que requieren análisis completos de la tabla o agregaciones. AlloyDB para PostgreSQL incluye un motor de columnas integrado que ayuda a acelerar las consultas analíticas. Habilitar el motor de columnas de forma predeterminada consume el 30% de la memoria y usa automáticamente datos de caché ultrarrápidos.
Para obtener más información sobre cómo medir el rendimiento de OLAP con AlloyDB para PostgreSQL con la carga de trabajo TPC-H, consulta la Guía de comparativas de OLAP de AlloyDB para PostgreSQL.
Tipos de Deployment
Según tu carga de trabajo, puedes implementar AlloyDB para PostgreSQL solo como instancia principal o como instancia principal con grupo de lectura.
Solo principal
Si implementas una instancia solo principal, ten en cuenta lo siguiente:
- Usa esta implementación para las transacciones con consultas analíticas (HTAP).
- Habilita el motor de columnas para ayudar con las consultas OLAP.
- Considera implementar con 16 CPU virtuales o una máquina más grande que proporcione más memoria para almacenar datos de columnas.
Principal con grupo de lectura
Si implementas una instancia principal con un grupo de lectura, ten en cuenta lo siguiente:
- Si tienes muchas operaciones de escritura y también lecturas analíticas sensibles a la latencia con requisitos de baja demora, implementa la instancia principal con la HA habilitada y con instancias del grupo de lectura.
- Habilita el motor de columnas en las instancias de grupo de lectura en las que ejecutas tus consultas analíticas.
- Configura varias instancias de grupo de lectura si tienes más de una base de datos, por ejemplo, CRM o Finanzas en la misma instancia. El uso de esta estrategia ayuda a mejorar el rendimiento de las consultas y el almacenamiento en caché.
- Puedes ajustar el tamaño de tus instancias principales y de grupo de lectura de forma diferente según tus requisitos. Para obtener más información sobre las prácticas recomendadas para las instancias de grupos de lectura, consulta Prácticas recomendadas para mejorar el rendimiento y la disponibilidad de AlloyDB.
- Agrega más de un nodo por instancia de grupo de lectura para obtener alta disponibilidad.
- Habilita el motor de columnas de forma selectiva en instancias específicas del grupo de lectura para mejorar el rendimiento de las consultas de lectura. Esto no requiere habilitar el motor de columnas en la instancia principal.
¿Qué sigue?
- Obtén información sobre las prácticas recomendadas para mejorar el rendimiento y la disponibilidad.
- Guía de comparativas de OLTP de AlloyDB para PostgreSQL.
- Guía de comparativas de OLAP de AlloyDB para PostgreSQL.