Inserimento dati di connessione socket

1

Ho lavorato a un'applicazione ad alte prestazioni in cui ho identificato un collo di bottiglia. Il collo di bottiglia è in realtà quando l'applicazione deve inserire messaggi da un socket, li registra in un database. Il problema è che la velocità di trasmissione dei messaggi è talmente veloce che l'applicazione non riesce a recuperare a causa della scarsa pianificazione architettonica. Chiaramente, l'inserimento deve essere migliorato.

Quindi ecco la domanda: qual è il formato più ottimale per eseguire inserimenti di singoli record?

Ho dato un'occhiata a questo link su revisione inserti ad alte prestazioni 4 e ha scoperto che fare qualcosa di questa natura richiederebbe una ristrutturazione completa dell'applicazione rispetto al suo attuale tentativo di concatenare una stringa insieme come questo :

INSERT INTO table (col1,col2,col3) VALUES (val1,val2,val3),(val4,val5,val6),(val7,val8,val9)

Qualcuno ha qualche informazione su quale sia meglio, inserimento datatable vs concatenazione di stringhe ?

    
posta osoclever 10.02.2014 - 23:21
fonte

1 risposta

1

Bene, grazie per chiunque abbia letto e considerato cosa fare, ma ho deciso di provare a ristrutturare l'applicazione perché il tempo a mia disposizione è scaduto.

Vincitore per un miglio: inserimento DataTable come parametro della stored procedure

La concatenazione delle stringhe mi permetteva solo di creare e inviare circa 750 record alla volta quando causava il rallentamento dell'applicazione a sufficienza per essere sopraffatto e generare un'eccezione. L'utilizzo di un'inserimento datatable descritto nel link mi ha consentito di superare in modo sicuro oltre 3.000 record alla volta. Knock on wood, la mia applicazione non si è ancora arrestata durante i test. Sembra che io possa bere da una manichetta antincendio.

Solo per aggiungere alcune statistiche, il mio tavolo aveva 18 milioni di record prima di rivedere l'applicazione. In circa 1 ora, ho inserito 1,3 milioni di record in più provenienti dal socket uno alla volta. Sembra che il metodo potrebbe richiedere molto più di quello che sto testando con.

    
risposta data 11.02.2014 - 04:19
fonte

Leggi altre domande sui tag