Tengo una tabla DB con 25M filas, ~ 3K cada una (es decir ~ 75GB), que junto con múltiples índices que uso (15-20GB adicionales) no encajar completamente en la memoria (64 GB en la máquina). Una consulta típica localiza 300 filas a través de un índice, opcionalmente las filtra a ~ 50-300 filas utilizando otros índices, y finalmente busca las filas correspondientes. Los tiempos de respuesta varían entre 20ms en un DB cálido a 20 segundos en un DB frío. Tengo dos preguntas relacionadas:Caché Postgresql (memoria) rendimiento + cómo calentar el caché
en un momento dado, ¿cómo puedo comprobar qué parte (%) de las tablas e índices específicos se almacena en caché en la memoria?
¿Cuál es la mejor manera de calentar la caché antes de abrir la base de datos a las consultas? P.ej. "select *" fuerza un escaneo secuencial (~ 15 minutos en DB frío) pero los tiempos de respuesta siguen siendo pobres. ¿Hay una manera integrada para realizar esta acción en lugar de a través de consultas de un
Gracias, no dude en responder también por correo electrónico ([email protected]])
- Shaul
El problema es que no puedo adivinar las consultas de los usuarios, piense en "Amazon": ¿cuáles serán las próximas 10000 consultas? Así que me hubiera gustado ejecutar algo que extraiga tablas e índices específicos en el caché. –
No adivine. Tome un registro real de los últimos 5 minutos o las últimas 10 000 consultas. He trabajado en "un proveedor líder de motores de búsqueda" y esto funciona muy bien. O si tiene servidores en funcionamiento y quiere calentar uno nuevo, puede duplicar las consultas al servidor que se va a calentar. – Thomas