sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2008 partitionerad tabell och parallellism

Partitionering är aldrig ett alternativ för att förbättra prestandan. Det bästa du kan hoppas på är att ha samma prestanda med icke-partitionerade bord. Vanligtvis får man en regression som ökar med antalet partitioner. För prestanda behöver du index, inte partitioner. Partitioner är till för datahanteringsoperationer:ETL, arkivering etc. Vissa hävdar att partitionseliminering är möjlig prestandavinst, men för allt kan partitionseliminering ge att placera den ledande indexnyckeln på samma kolumn som partitioneringskolumnen ger mycket bättre resultat.

Den frågan behöver ett index på State . Annars är en tabellskanning, och kommer att skanna hela tabellen. En tabellsökning över en partitionerad tabell är alltid långsammare än en skanning över en icke-partitionerad tabell av samma storlek. Själva indexet kan justeras på samma partitionsschema, men den ledande nyckeln måste vara State .

Parallellism har inget med partitionering att göra, trots den vanliga missuppfattningen om motsatsen. Både partitionerade och icke-partitionerade intervallsökningar kan användas med en parallelloperator, det kommer att vara Query Optimizer-beslutet.

Nej

Ett index hjälper. Om indexet måste justeras måste det partitioneras. Ett icke-partitionerat index kommer att vara snabbare än ett partitionerat, men kravet på indexjustering för in-/utkopplingsoperationer kan inte kringgås.

Om du tittar på partitionering bör det bero på att du behöver göra snabba inkopplingsoperationer för att radera gamla data efter lagringspolicyperioden eller något liknande. För prestanda måste du titta på index, inte på partitionering.



  1. Misslyckades med konfigurationen av MySQL-serverinstallationen

  2. Hur säkerhetskopierar man en postgresql-databas inifrån psql?

  3. ORA-01438:värde större än specificerad precision tillåter denna kolumn - Hur får jag fram vilken kolumn den syftar på?

  4. Ruby on Rails-servern startar inte:dyld:lat symbolbindning misslyckades:Symbol hittades inte:_mysql_get_client_info