Sto scrivendo un'applicazione in C ++ usando libpq come interfaccia per postgresql. Attualmente sto mettendo insieme una piccola libreria di funzioni di supporto per aiutare a gestire la conversione da C ++ a C per un'applicazione da utilizzare su un PC o un dispositivo ARM (RAM da 2 GB a 2 GB).
Per quanto riguarda il prelievo di dati dal database, sono preoccupato di dover estrarre tutti i risultati dal database in una volta sola, o utilizzare un cursore per leggerne uno o alcuni alla volta.
Il set di risultati restituito potrebbe probabilmente essere nelle centinaia e presumo:
- se tiro tutti i risultati, sarà un colpo di memoria per l'applicazione
- se estraggo una tupla alla volta tramite un cursore, potrebbe essere un grosso onere per il server del database (attualmente localhost per lo sviluppo)
Non capisco come potrei ottenere alcune metriche adatte per determinare quale sarebbe il migliore, quindi le mie domande sono:
- Esiste una best practice quando si tratta di recuperare i risultati dal database nel mondo reale (tutto in una volta / una riga alla volta / poche righe alla volta)
- Come potrei determinare una qualche forma di metrica per testare l'efficienza? Immagino che dovrei prendere in considerazione sia l'utilizzo della memoria dell'applicazione che il carico del database insieme al tempo di risposta.
- Se è meglio tirare qualche tupla alla volta, come faccio a determinare la quantità ottimale da tirare in una volta?