Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Da cosa dipendono la query del database e la velocità di inserimento?

Per avere un confronto approssimativo:il record del benchmark TPC-C per SQL Server è a circa 1,2 milioni di transazioni al minuto ed è stato così negli ultimi 4 anni circa (limitato dal limite di 64 CPU OS). Questo è qualcosa nel balpark di ~16.000 transazioni al secondo . Questo è su macchine di fascia alta, 64 CPU, molta RAM, client affini per nodo NUMA e un sistema I/O con stripping corto dal server (viene utilizzato solo circa l'1-2% di ciascun mandrino). Tieni presente che si tratta di transazioni TPC-C, quindi consistono in diverse operazioni (penso siano 4-5 letture e 1-2 scritture ciascuna in media).

Ora dovresti ridurre questo hardware top di gamma alla tua distribuzione effettiva e otterrai il campo di gioco in cui impostare le tue aspettative per l'elaborazione delle transazioni OLTP complessive .

Per il caricamento dei dati, l'attuale record mondiale riguarda 1 TB in 30 minuti (se è ancora attuale...). Diverse decine di migliaia di inserti al secondo sono piuttosto ambiziosi, ma realizzabili, se eseguiti correttamente su hardware serio. L'articolo nel collegamento contiene suggerimenti e trucchi per l'alto troughput ETL (ad es. utilizzare più flussi di caricamento e associarli ai nodi NUMA).

Per la tua situazione consiglierei prima di tutto misura quindi scopri i colli di bottiglia e poi chiedi a specifici domande su come risolvere i colli di bottiglia specifici. Un buon punto di partenza è il White paper Attese e code .