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

Database, der kan håndtere>500 millioner rækker

MSSQL kan fint klare så mange rækker. Forespørgselstiden er fuldstændig afhængig af mange flere faktorer end blot simpel rækkeoptælling.

For eksempel kommer det til at afhænge af:

  1. hvor mange tilmeldinger gør disse forespørgsler
  2. hvor godt er dine indekser sat op
  3. hvor meget ram er der i maskinen
  4. hastighed og antal processorer
  5. type og spindelhastighed på harddiske
  6. størrelsen på rækken/mængden af ​​data, der returneres i forespørgslen
  7. Netværksgrænsefladehastighed/forsinkelse

Det er meget nemt at have en lille (mindre end 10.000 rækker) tabel, som ville tage et par minutter at udføre en forespørgsel mod. For eksempel ved at bruge masser af joins, funktioner i where-klausulen og nul indekser på en Atom-processor med 512 MB samlet ram.;)

Det kræver lidt mere arbejde at sikre, at alle dine indekser og udenlandske nøglerelationer er gode, at dine forespørgsler er optimeret til at eliminere unødvendige funktionskald og kun returnere de data, du faktisk har brug for. Du har også brug for hurtig hardware.

Det hele koger ned til, hvor mange penge du vil bruge, kvaliteten af ​​udviklerteamet og størrelsen af ​​de datarækker, du har med at gøre.

OPDATERING Opdatering på grund af ændringer i spørgsmålet.

Mængden af ​​information her er stadig ikke nok til at give et svar fra den virkelige verden. Du bliver bare nødt til at teste det og justere dit databasedesign og hardware efter behov.

For eksempel kunne jeg meget nemt have 1 milliard rækker i en tabel på en maskine med disse specifikationer og køre en "select top(1) id from tableA (nolock)"-forespørgsel og få et svar på millisekunder. På samme måde kan du udføre en "vælg * fra tablea"-forespørgsel, og det tager et stykke tid, fordi selvom forespørgslen blev udført hurtigt, tager det et stykke tid at overføre alle disse data over ledningen.

Pointen er, at du skal teste. Hvilket betyder at opsætte serveren, oprette nogle af dine tabeller og udfylde dem. Derefter skal du gennemgå ydeevnejustering for at få dine forespørgsler og indekser rigtige. Som en del af ydelsesjusteringen vil du ikke kun afdække, hvordan forespørgslerne skal omstruktureres, men også præcis hvilke dele af maskinen, der muligvis skal udskiftes (dvs.:disk, mere ram, cpu osv.) baseret på låsen og ventetyper.

Jeg vil stærkt anbefale, at du hyrer (eller kontrakterer) en eller to DBA'er til at gøre dette for dig.



  1. Vil du først oprette lagrede procedurer ved hjælp af Entity Framework Code?

  2. AVG() – Beregn den gennemsnitlige værdi af en kolonne i MySQL

  3. Hvordan kan jeg løse inkompatibel med sql_mode=only_full_group_by i laravel veltalende?

  4. Top 115 SQL-interviewspørgsmål, du skal forberede i 2022