Tengo problemas con el rendimiento de las inserciones sqlite incluso con transacciones. Mi aplicación para Android recibe aproximadamente 23,000 filas de un servicio web y tengo que insertarlas en una sola tabla.Las inserciones SQLite se vuelven más lentas incluso con transacciones
El servicio web está particionado de modo que reciba aproximadamente 2000 filas en cada solicitud al WS y envuelva las 2000 inserciones dentro de una transacción. Después de que esas inserciones estén listas, envío la nueva solicitud al WS y de nuevo utilizo una nueva transacción para las nuevas 2000 filas.
Al principio funciona bien. Hace muchas inserciones por segundo. pero con el tiempo se vuelve más lento y finalmente termina con 4 o 3 inserciones por segundo hasta que completa las 23000 filas.
¿Hay algún problema con el tamaño de la tabla? Cuando se hace más grande, las inserciones se vuelven más lentas ¿Hay alguna manera de mejorar el rendimiento de esa gran cantidad de datos?
Gracias por su ayuda.
¿Tiene algún índice que podría estar ralentizándolo? ¿Y está seguro de que solo está insertando 2000 a la vez y no (todos los datos recibidos hasta ahora) cada vez? –
Esto suena como un conjunto de trabajo de transacción que se expande en ausencia de un COMPROMISO. – DaveE
Bueno, todo depende de los datos que está insertando también, las cadenas ralentizarán su db. ¿Cuál es el tamaño de esas 2000 filas en términos de bytes? ¿Cuál es la diferencia de tamaño en el archivo DB después de insertar 2000 filas? Tengo un db con 388000 filas y su 64M en tamaño de archivo pero todos los datos son dobles. – JPM