Tengo una página PHP particular que, por diversas razones, necesita guardar ~ 200 campos en una base de datos. Estas son 200 declaraciones separadas de inserción y/o actualización. Ahora lo más obvio es reducir este número pero, como dije, por razones que no me molestaré en abordar, no puedo hacer esto.¿Cómo implementar el almacenamiento en memoria caché de fondo/asíncrono en PHP?
No esperaba este problema. Las selecciones parecen tener un rendimiento razonable en MySQL, pero las inserciones/actualizaciones no lo son (toma aproximadamente 15-20 segundos realizar esta actualización, lo cual es naturalmente inaceptable). He escrito sistemas Java/Oracle que pueden hacer miles de inserciones/actualizaciones al mismo tiempo (en ambos casos ejecutando bases de datos locales, MySQL 5 vs OracleXE).
Ahora en algo como Java o .Net que podía hacer con bastante facilidad una de las siguientes:
- escribir los datos en una memoria en de escritura en segundo caché (es decir, que sería saber cómo persisten a la base de datos y podría hacerlo asincrónicamente);
- Escriba los datos en un caché en memoria y utilice el modelo PaaS (Persistencia como un Servicio) es decir, un detector de caché persistiría en los campos; o
- Simplemente inicie un proceso en segundo plano que podría persistir en los datos.
La solución mínima es tener un caché que simplemente puedo actualizar, que irá separadamente a la base de datos en su propio tiempo (es decir, volverá inmediatamente después de actualizar la caché en memoria). Esto puede ser un caché global o un caché de sesión (aunque un caché compartido global sí atrae de otras maneras).
¿Alguna otra solución a este tipo de problema?
El bit de "optimización prematura" es un buen consejo. Las tablas no son demasiado complicadas, pero tengo un par de cosas que puedo verificar ahora (los índices y el motor de la base de datos). – cletus
¿cómo responde la pregunta con respecto a la inserción asincrónica? – nightograph