Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Software >> SQL Server >> Content
Wat zijn de kosten van een soort merge-join-bewerking in een databasequery?
De kosten van een sorteer- en samenvoegbewerking worden doorgaans opgesplitst in de kosten van het sorteren en de kosten van het samenvoegen. De dominante factor is meestal de sortering. Laten we het opsplitsen:

1. Sorteerkosten:

* Algoritme: Doorgaans gebruiken databases een externe samenvoegsortering. Dit komt omdat de relaties die worden samengevoegd vaak te groot zijn om in het geheugen te passen.

* I/O-kosten (dominante factor):

* Bij extern samenvoegen zijn er meerdere passages door de gegevens nodig.

* Aantal passen: Het aantal passages is afhankelijk van de grootte van de relaties en de hoeveelheid beschikbaar geheugen (de "buffer"). Laten we zeggen dat we:

* `B` =Aantal blokken (pagina's) in de relatie.

* `M` =Aantal beschikbare geheugenblokken (buffergrootte).

* Het aantal passages is ongeveer `log_M(B)` of iets meer dan dit als u uiterst nauwkeurig wilt zijn.

* I/O-kosten per pas: Elke passage leest en schrijft de gehele relatie, dus het kost '2B' I/O-bewerkingen (B voor lezen en B voor schrijven).

* Totale I/O-kosten voor sorteren: `2B * aantal passages =2B * log_M(B)`. Meer gedetailleerd zijn de sorteerkosten voor elke relatie `R` en `S`:

* Sorteren(R) =2 * `B(R)` * logM (`B(R)`) (waarbij `B(R)` het aantal blokken is voor relatie R)

* Sorteer(S) =2 * `B(S)` * logM (`B(S)`) (waarbij `B(S)` het aantal blokken is voor relatie S)

* CPU-kosten: Hoewel het sorteren voornamelijk I/O-gebonden is, zijn er CPU-kosten verbonden aan het vergelijken van tupels, het samenvoegen van gesorteerde runs, enz. Deze kosten zijn doorgaans lager dan de I/O-kosten en worden vaak genegeerd in vereenvoudigde kostenmodellen.

2. Kosten samenvoegen:

* I/O-kosten: Nadat de relaties zijn gesorteerd, vereist de samenvoegingsfase dat elk blok van beide gesorteerde relaties één keer wordt gelezen.

* `B(R) + B(S)` (waarbij `B(R)` en `B(S)` respectievelijk het aantal blokken zijn voor relaties R en S)

* CPU-kosten: De CPU-kosten voor het vergelijken van tupels tijdens de samenvoegfase zijn relatief klein vergeleken met de sorteer- en I/O-kosten.

Totale kosten:

De totale kosten van de sorteer-merge-join zijn grofweg de som van de sorteerkosten en de samenvoegingskosten:

Kosten ≈ 2 * B(R) * logM (B(R)) + 2 * B(S) * logM (B(S)) + B(R) + B(S)

Vereenvoudigde kosten (gemeenschappelijke benadering):

Als de sorteerkosten domineren (wat meestal het geval is), is een vereenvoudigde benadering:

Kosten ≈ 2 * B(R) * logM (B(R)) + 2 * B(S) * logM (B(S))

Belangrijke overwegingen:

* Geheugen (M): De hoeveelheid beschikbaar geheugen heeft een aanzienlijke invloed op het aantal passages dat nodig is voor het sorteren. Meer geheugen betekent minder passen en lagere kosten.

* Voorgesorteerde gegevens: Als een van beide relaties *al* is gesorteerd op de join-sleutel, kunt u de sorteerstap voor die relatie overslaan. Dit verlaagt de kosten dramatisch. De kosten worden de kosten van het sorteren van alleen de ongesorteerde relatie plus de samenvoegingskosten.

* Duplicaten: Als de join-sleutels duplicaten bevatten, kan de samenvoegingsfase complexer zijn, waardoor mogelijk extra I/O en CPU nodig zijn. De formule gaat ervan uit dat dubbele afhandeling is opgenomen in elke lezing van een blok.

* Blokgrootte: De blokgrootte (paginagrootte) heeft invloed op het aantal blokken in een relatie.

* Kostenmodel: De exacte formule die wordt gebruikt voor de kostenraming varieert tussen databasesystemen. Sommige kunnen de CPU-kosten explicieter vermelden, de zoektijden van de schijf, enz. Dit is een vereenvoudigd model om de relatieve kosten te begrijpen.

* Hash-join vs. Sort-Merge-join: In veel gevallen is hash join efficiënter dan sort-merge join, vooral als een van de relaties volledig in het geheugen past. Sort-merge join kan echter efficiënter zijn als de gegevens al zijn gesorteerd of als de gegevens niet gelijkmatig zijn verdeeld.

* Hybride benaderingen: Sommige databases gebruiken hybride benaderingen die aspecten van zowel hash join als sort-merge join combineren.

* Werkelijke prestaties: Dit zijn theoretische kosten. De werkelijke prestaties kunnen worden beïnvloed door factoren zoals schijf-I/O-prestaties, CPU-snelheid, gelijktijdigheid en database-afstemming.

Voorbeeld:

Laten we zeggen:

* `B(R) =1000` blokken

* `B(S) =500` blokken

* `M =100` geheugenblokken

Dan:

*log100 (1000) ≈ 1,5

*log100 (500) ≈ 1,35

Geschatte kosten ≈ 2 * 1000 * 1,5 + 2 * 500 * 1,35 + 1000 + 500

≈ 3000 + 1350 + 1500

≈ 5850 I/O-bewerkingen.

Dit is slechts een schatting, en de werkelijke kosten in een echt databasesysteem kunnen afwijken. De relatieve vergelijking is dat de sorteerkosten hoger zijn dan de samenvoegkosten.

Samenvattend worden de kosten van het sorteren en samenvoegen gedomineerd door de I/O-kosten van het sorteren van de relaties. Het aantal benodigde passages voor het sorteren is afhankelijk van de grootte van de relaties en de hoeveelheid beschikbaar geheugen. Het verkleinen van de omvang van de relaties (bijvoorbeeld door filtering of projectie) of het vergroten van het beschikbare geheugen kan de prestaties aanzienlijk verbeteren.

Previous: Next:
  SQL Server
·Wat is SQL -injectie in de ser…
·11. Susan gaat een snuffelnetw…
·SQL Server DTS Tutorial 
·Wat is een vraag die gegevens …
·Hoe SQL Server 2000 Enterprise…
·Wat is de functie Join SQL -cl…
·Wat is het verschil tussen gro…
·Oracle naar SQL Server Migrati…
·Wat is de betekenis van SPOOL …
  Related Articles
Welke maatregelen kunnen worden genomen …
Wat is de worst-case tijdscomplexiteit v…
Wat is de tijdscomplexiteit van vectorin…
Wat is de tijdscomplexiteit van het back…
Wat is de tijdscomplexiteit van het back…
Wat is de tijdscomplexiteit van quicksor…
Wat is de tijdscomplexiteit van het quic…
Wat is de tijdscomplexiteit van het verw…
Wat is de tijdscomplexiteit van backtrac…
  Software Articles
·Is IE8 compatibel met PaperPort ? 
·Hoe maak je een Poster behulp van PowerP…
·Hoe krijg ik een vrije productcode voor …
·Hoe spyware met Windows Defender te verw…
·Maya Netwerk Rendering Tutorial 
·Hoe maak je een poll Website 
·Hoe pas je geluid aan van een computer a…
·Spooler Virussen 
·Wat is een EPS- document ? 
Copyright © Computer Kennis https://www.nldit.com