sql >> Database >  >> RDS >> Sqlserver

SQL Server 2008 gepartitioneerde tabel en parallellisme

Partitioneren is nooit een optie om de prestaties te verbeteren. Het beste waar u op kunt hopen, is dat u vergelijkbare prestaties levert met een niet-gepartitioneerde tabel. Meestal krijg je een regressie die toeneemt met het aantal partities. Voor prestaties heb je indexen nodig, geen partities. Partities zijn voor gegevensbeheerbewerkingen:ETL, archivering enz. Sommigen beweren dat partitie-eliminatie een mogelijke prestatiewinst is, maar voor alles kan partitie-eliminatie het plaatsen van de leidende indexsleutel op dezelfde kolom als de partitioneringskolom veel betere resultaten opleveren.

Die zoekopdracht heeft een index nodig op State . Anders is het een tafelscan en wordt de hele tafel gescand. Een tabelscan over een gepartitioneerde tabel is altijd langzamer dan een scan over een niet-gepartitioneerde tabel van hetzelfde formaat. De index zelf kan worden uitgelijnd op hetzelfde partitieschema, maar de leidende sleutel moet State zijn .

Parallellisme heeft niets te maken met partitionering, ondanks de algemene misvatting van het tegendeel. Zowel gepartitioneerde als niet-gepartitioneerde bereikscans kunnen een parallelle operator gebruiken, dit zal de beslissing van de Query Optimizer zijn.

Nee

Een index helpt daarbij. Als de index moet worden uitgelijnd, moet deze worden gepartitioneerd. Een niet-gepartitioneerde index is sneller dan een gepartitioneerde index, maar de vereiste voor indexuitlijning voor in-/uitschakelen kan niet worden omzeild.

Als u naar partitionering kijkt, zou dit moeten zijn omdat u snelle inschakel-uitschakelbewerkingen moet uitvoeren om oude gegevens te verwijderen na een bewaarbeleidsperiode of iets dergelijks. Voor prestaties moet je naar indexen kijken, niet naar partitionering.



  1. Zullen indexen worden gebruikt als u een subset van de kolommen van de index opvraagt?

  2. REGEXP met PDO Mysql

  3. mysql opgeslagen procedure aanroepen vanuit c#?

  4. Oracle-tabelgroei voorspellen