Ottieni e metti test delle prestazioni su Google BigTables (e altri DB integrati)


17

Quali sono alcuni modi efficaci per eseguire test programmatici delle prestazioni sulle operazioni del database, specialmente in ambienti in cui i database stessi non offrono strumenti dedicati?

Ad esempio, in Google App Engine, i caricamenti di tutte le pagine vengono valutati come un'unica operazione che può includere operazioni specifiche sul database. Questo problema è probabilmente presente anche in SQLite e altri DB integrati. Poiché è difficile estrarre completamente le selezioni e gli inserti (equivalenti a) che devono essere testati, esistono strumenti di database consigliati per eseguire una diagnostica più approfondita su questo tipo di query?


Hai accesso diretto al database in questione?
Stingervz,

Sì, sono io a scrivere l'app. E mentre le prestazioni delle app sono una domanda diversa, sto ottenendo risultati piuttosto gravi in ​​una brutta query che ho scritto.
Brian Ballsun-Stanton,

A volte una dozzina di paia di occhi è una diagnostica migliore di un analizzatore di query ... (ok, non così spesso)
jcolebrand

@Brian Penso che faresti meglio su Stackoverflow con questo tipo di domanda in quanto è più una domanda di programmazione che una DBA.
IamIC

@IanC Drat. Sto cercando di ottenere il bigtable underlay piuttosto che la performance nel suo insieme. Ma eliminerò se la gente non ritiene la domanda adatta. (Sto anche cercando di assicurarmi che il sito non sia oracle / sql-server / mysql per tutto il tempo)
Brian Ballsun-Stanton

Risposte:


1

Mi sembra che il tuo problema sia che stai provando a testare le metriche delle prestazioni che non sono ben supportate nel db sottostante. Ciò rende molto difficile confrontare le prestazioni tra i sistemi perché gli approcci sottostanti sono molto diversi. Non penso che sia possibile fare confronti mele a mele così come non penso che si possa fare un confronto mele a mele degli approcci di tipo ORDBMS agli approcci di tipo RDBMS. Le preoccupazioni in termini di prestazioni sono troppo diverse e se Stonebraker ha ragione nel ritenere che l'ottimizzazione di un ORDBMS per i test TPC-C non rispecchi il punto, allora per i sistemi che sono ancora più distanti sarà impossibile. (Penso che sia proprio lì, tuttavia, solo dove entra in gioco la funzionalità ORDBMS.)

Penso che ciò che devi essere sincero sia guardare a come useresti ciascun sistema e costruire uno strumento di riferimento basato sull'approccio che avresti adottato con ciascuno di essi. Quindi puoi dire almeno per quel flusso di lavoro che il benchmark mostra qualcosa di specifico. Non vedo come puoi generalizzare comunque. È possibile eseguirlo ulteriormente in un profiler al fine di ottenere ulteriori informazioni su dove viene trascorso il tempo nell'esecuzione del test su vari motori.

Tuttavia, il benchmarking dei database è molto difficile da rendere significativo nelle migliori circostanze e quando si confrontano sistemi diversi diventa impossibile generalizzare.


0

Appstats è lo strumento chiave per misurare le prestazioni su App Engine. Mostrerà il tempo utilizzato per ogni RPC, inclusi archivio dati, memcache, urlfetch e richieste di posta in un grafico. Normalmente le richieste appaiono come una "scala" dove ogni richiesta inizia nel punto in cui la richiesta precedente è terminata, nella riga successiva in basso.

Se usi le richieste asincrone avanzate in ndb, puoi effettivamente vedere le richieste accadere in parallelo.

Questo strumento mi è stato di grande aiuto nel vedere dove viene speso il tempo e come ottimizzare le query.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.