Pregunta

¿Cómo pongo toda mi base de datos PostgreSql en la RAM para un acceso más rápido? Tengo 8 GB de memoria y quiero dedicar 2 GB para la base de datos. He leído sobre la configuración de los buffers compartidos, pero solo almacena en caché el fragmento más visitado de la base de datos. Necesitaba una solución en la que todo el DB se pusiera en la RAM y cualquier lectura sucedería desde el RAM DB y cualquier operación de escritura primero escribiría en el RAM DB y luego en el DB en el disco duro (algo como el valor predeterminado fsync = con buffers compartidos en la configuración de configuración de postgresql).

¿Fue útil?

Solución

Me he hecho la misma pregunta por un tiempo. Una de las desventajas de PostgreSQL es que no parece admitir motores de almacenamiento IN MEMORY como MySQL ...

De todos modos, me encontré con un artículo hace un par de semanas que describe cómo se puede hacer esto; aunque solo parece funcionar en Linux. Realmente no puedo garantizarlo porque no lo he intentado yo mismo, pero parece tener sentido ya que un espacio de tabla PostgreSQL tiene asignado un repositorio montado.

Sin embargo, incluso con este enfoque, no estoy seguro de que pueda poner sus índices en RAM también; No creo que MySQL fuerce el uso del índice HASH con su tabla IN MEMORY para nada ...

También quería hacer algo similar para mejorar el rendimiento porque también estoy trabajando con grandes conjuntos de datos. Estoy usando python; tienen tipos de datos de diccionario que son básicamente tablas hash en forma de pares {clave: valor}. Usar estos es muy eficiente y efectivo. Básicamente, para obtener mi tabla PostgreSQL en RAM, la cargo en un diccionario de Python, trabajo con ella y la persisto en db de vez en cuando; vale la pena si se usa bien.

Si no está utilizando Python, estoy bastante seguro de que es una estructura de datos de mapeo de diccionario similar en su idioma.

Espero que esto ayude!

Otros consejos

si está extrayendo datos por id, use memcached - http://www.danga.com/memcached / + postgresql.

Quizás algo así como un caché de coherencia de Tangosol si está utilizando Java .

Con solo una base de datos de 8GB, si ya ha optimizado toda la actividad de SQL y está listo para resolver problemas de consulta con hardware, le sugiero que esté en problemas. Esto no es una solución escalable a largo plazo. ¿Está seguro de que no hay nada que pueda hacer para hacer diferencias sustanciales en el lado del software y el diseño de la base de datos?

Configure un RAMdisk antiguo y dígale a pg que almacene sus datos allí.

Asegúrese de hacer una copia de seguridad bien.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top