sql >> Databasteknik >  >> RDS >> Sqlserver

Databas som kan hantera>500 miljoner rader

MSSQL kan hantera så många rader fint. Frågetiden är helt beroende av många fler faktorer än bara antalet rader.

Till exempel kommer det att bero på:

  1. hur många går med i dessa frågor
  2. hur väl dina index är inställda
  3. hur mycket ram finns i maskinen
  4. hastighet och antal processorer
  5. typ och spindelhastighet för hårddiskar
  6. storleken på raden/mängden data som returneras i frågan
  7. Nätverksgränssnittets hastighet/fördröjning

Det är väldigt lätt att ha en liten (mindre än 10 000 rader) tabell som skulle ta ett par minuter att köra en fråga mot. Till exempel att använda massor av joins, funktioner i where-satsen och noll index på en Atom-processor med 512 MB totalt ram.;)

Det tar lite mer arbete att se till att alla dina index och främmande nyckelrelationer är bra, att dina frågor är optimerade för att eliminera onödiga funktionsanrop och bara returnera den data du faktiskt behöver. Dessutom behöver du snabb hårdvara.

Allt handlar om hur mycket pengar du vill spendera, kvaliteten på utvecklarteamet och storleken på dataraderna du har att göra med.

UPPDATERA Uppdatering på grund av ändringar i frågan.

Mängden information här är fortfarande inte tillräckligt för att ge ett verkligt svar. Du kommer bara att behöva testa det och justera din databasdesign och hårdvara vid behov.

Till exempel skulle jag mycket enkelt kunna ha 1 miljard rader i en tabell på en maskin med dessa specifikationer och köra en "select top(1) id from tableA (nolock)"-fråga och få ett svar på millisekunder. På samma sätt kan du köra en "välj * från tablea"-fråga och det tar ett tag, för även om frågan kördes snabbt, tar det ett tag att överföra all data över tråden.

Poängen är att du måste testa. Vilket innebär att ställa in servern, skapa några av dina tabeller och fylla i dem. Sedan måste du gå igenom prestandajustering för att få dina frågor och index rätt. Som en del av prestandajusteringen kommer du att avslöja inte bara hur frågorna behöver omstruktureras utan också exakt vilka delar av maskinen som kan behöva bytas ut (dvs:disk, mer ram, cpu, etc) baserat på låset och vänta typer.

Jag rekommenderar starkt att du anlitar (eller kontrakterar) en eller två DBA:er för att göra detta åt dig.



  1. Finns det en funktion för att dela en sträng i PL/SQL?

  2. Hur man får gårdagens datum i Oracle

  3. Vad är nytt i ProxySQL 2.0

  4. ExecuteNonQuery returnerar -1 när du använder sql COUNT trots frågesträngen