|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
Programvara
  • Adobe Illustrator
  • animation Software
  • antivirusprogram
  • ljudprogram
  • Säkerhetskopiera data
  • Bränn CD-skivor
  • Bränn DVD
  • Data Compression
  • Database Software
  • Desktop Publishing
  • Desktop Video
  • Digital Video Software
  • Drupal
  • Educational Software
  • Engineering Software
  • Filtillägg Typer
  • Financial Software
  • Freeware , Shareware & Abandonware
  • GIMP
  • Graphics Software
  • Home Recording Software
  • Microsoft Access
  • Microsoft Excel
  • Microsoft Publisher
  • Microsoft Word
  • Open Source Code
  • Andra datorprogram
  • PC-spel
  • Photoshop
  • Portable Document Format
  • PowerPoint
  • presentationsprogram
  • Produktivitet Software
  • quicktime
  • Remote Desktop Management
  • SQL Server
  • Skype
  • Programvara betaversioner
  • Programvara Konsulter
  • Software Development Companies
  • Software Licensing
  • Spreadsheets
  • Skatt förberedelse programvara
  • Utility Software
  • Web Clip Art
  • Windows Media Player
  • Ordbehandlingsprogram
  • Facebook
  • Twitter
  • Instagram
  • LinkedIn
  • TikTok
  • WhatsApp
  • WordPress
  • Chrome
  • Discord
  • Amazon
  • * Dator Kunskap >> Programvara >> SQL Server >> Content

    Vad är kostnaden för ett slags sammanfogningsoperation i databasfrågan?

    Kostnaden för en sorts-sammanslagning är vanligtvis uppdelad i kostnaden för sortering och kostnaden för sammanslagning. Den dominerande faktorn är vanligtvis sorteringen. Låt oss bryta ner det:

    1. Sorteringskostnad:

    * algoritm: Vanligtvis använder databaser en extern sammanslagningssortering. Detta beror på att relationerna som förenas ofta är för stora för att passa i minnet.

    * I/O -kostnad (dominerande faktor):

    * Externt sammanslagningssortering involverar flera pass genom data.

    * Antal pass: Antalet pass beror på storleken på relationerna och mängden tillgängliga minne ("bufferten"). Låt oss säga att vi har:

    * `B` =Antal block (sidor) i relationen.

    * `M` =Antal tillgängliga minnesblock (buffertstorlek).

    * Antalet pass är ungefär `log_m (b)` eller något mer än detta om du vill vara extremt korrekt.

    * i/o Kostnad per pass: Varje pass läser och skriver hela relationen, så det kostar "2B" I/O -operationer (B för läsning och B för att skriva).

    * Totalt I/O -kostnad för sortering: `2b * Antal pass =2b * log_m (b)`. Mer detaljerat är sorteringskostnaden för varje relation `r` och` s`:

    * Sort (r) =2 * `b (r)` * log m (`B (r)`) (där `b (r)` är antalet block för relation r)

    * Sortering (s) =2 * `b (s)` * log m (`B (s)`) (där `b (s)` är antalet block för relation s)

    * CPU -kostnad: Medan sortering främst är I/O -bundet, finns det CPU -kostnader för att jämföra tuples, sammanslagning av sorterade körningar, etc. Denna kostnad är vanligtvis lägre än I/O -kostnaden och ignoreras ofta i förenklade kostnadsmodeller.

    2. Sammanslagningskostnad:

    * i/o Kostnad: När relationerna har sorterats kräver sammanslagningsfasen att läsa varje block av båda sorterade relationerna en gång.

    * `B (r) + B (s)` (där `b (r)` och `b (s)` är antalet block för relationerna r respektive s))

    * CPU -kostnad: CPU -kostnaden för att jämföra tuples under sammanslagningsfasen är relativt liten jämfört med sorteringen och I/O -kostnaderna.

    Total kostnad:

    Den totala kostnaden för sorteringsfästet är ungefär summan av sorteringskostnaderna och sammanslagningskostnaden:

    Kostnad ≈ 2 * B (r) * log m (B (R)) + 2 * B (S) * log m (B (S)) + B (R) + B (S)

    Förenklad kostnad (vanlig approximation):

    Om sorteringskostnaden dominerar (vilket vanligtvis är fallet) är en förenklad tillnärmning:

    Kostnad ≈ 2 * B (r) * log m (B (R)) + 2 * B (S) * log m (B (s))

    Viktiga överväganden:

    * Memory (M): Mängden tillgängligt minne påverkar antalet pass som krävs för sortering avsevärt. Mer minne betyder färre pass och lägre kostnad.

    * Försorterade data: Om endera relationen är * redan * sorterad på anslutningsnyckeln kan du hoppa över sorteringssteget för den relationen. Detta minskar dramatiskt kostnaden. Kostnaden blir kostnaden för att bara sortera den osorterade relationen plus sammanslagningskostnaden.

    * duplikat: Om anslutningsnycklarna innehåller duplikat kan sammanslagningsfasen vara mer komplex och potentiellt kräva ytterligare I/O och CPU. Formeln antar att duplicerad hantering är införlivad i varje läsning av ett block.

    * Blockstorlek: Blockstorleken (sidstorlek) påverkar antalet block i en relation.

    * Kostnadsmodell: Den exakta formeln som används för kostnadsberäkning varierar mellan databassystem. Vissa kan inkludera CPU -kostnad mer uttryckligen, skivsökningstider osv. Detta är en förenklad modell för att förstå de relativa kostnaderna.

    * Hash Join vs. Sort-Merge Join: I många fall är Hash Join effektivare än Sort-Merge Join, särskilt när en av relationerna passar helt i minnet. Men sorteringssätt kan vara mer effektiva när data redan är sorterade, eller när data inte jämnt uppdelar.

    * hybridmetoder: Vissa databaser använder hybridmetoder som kombinerar aspekter av både hash-sammanfogning och sortering.

    * Faktisk prestanda: Dessa är teoretiska kostnader. Den faktiska prestandan kan påverkas av faktorer som disk I/O -prestanda, CPU -hastighet, samtidighet och databasinställning.

    Exempel:

    Låt oss säga:

    * `B (r) =1000" block

    * `B (s) =500" block

    * `M =100 'minnesblock

    Sedan:

    * log 100 (1000) ≈ 1,5

    * log 100 (500) ≈ 1,35

    Uppskattad kostnad ≈ 2 * 1000 * 1,5 + 2 * 500 * 1,35 + 1000 + 500

    ≈ 3000 + 1350 + 1500

    ≈ 5850 I/O -operationer.

    Detta är bara en uppskattning, och den faktiska kostnaden i ett verkligt databassystem kan vara annorlunda. Den relativa jämförelsen är att sorteringskostnaden är högre än sammanslagningskostnaden.

    Sammanfattningsvis domineras kostnaden för sorteringssnöd av I/O-kostnaden för att sortera relationerna. Antalet pass som krävs för sortering beror på storleken på relationerna och mängden tillgängliga minne. Att minska storleken på relationerna (t.ex. genom filtrering eller projektion) eller öka det tillgängliga minnet kan förbättra prestandan avsevärt.

    Tidigare:

    nästa:
    relaterade artiklar
    ·SQL Server Query Verktyg
    ·Hur du ändrar Autentiseringsläge på SQL Server 2008
    ·Hur man bygger en webbsida Microsoft SQL Server
    ·Hur man ansluter till en databas på en annan dator med…
    ·Vad är vikten av Oracle 9i?
    ·Vad är kolumn i exacel?
    ·Hur många poster kan Oracle -databas hålla?
    ·Hur man flyttar en Microsoft SQL-databas
    ·Hur man installerar Microsoft SQL Server 2000
    ·Full form av DBA i Oracle?
    Utvalda artiklarna
    ·Inaktivera en Print Screen i Flash
    ·Hur man öppnar en WPS filtillägg Med MS Word
    ·Skäl att använda Excel
    ·Hur man fixar en Boot Virus
    ·Vad är filändelsen Patch
    ·Hur konvertera en BUP -fil till AVI format
    ·Vad är filändelsen smil
    ·Hur man bränner en Mac-kompatibel skiva i Nero
    ·Hur man gör ifyllningsbara PDF-formulär i Adobe Stand…
    ·Hur till Se en Pal DVD på en dator
    Copyright © Dator Kunskap https://www.dator.xyz