Gå til innhold

Hva er bedre med MSSQL contra MYSQL?


Anbefalte innlegg

Dette er ikke stedet å mene, her må man vite... 100% sikkert :p

 

Akkurat denne biten er litt vanskelig. Det er store versjonsforskjeller, og den tekniske detaljdokumentasjonen står ofte ikke i forhold. Det som var riktig på Oracle 9.2.0.1 eller MySQL 4.0.27 er kanskje ikke riktig for Oracle 9.2.0.4 eller MySQL 4.0.29. Og da har jeg ikke kommet inn på hovedversjoner.

 

Alle operasjoner som innebærer lesing eller skriving til en rad vil medføre at en lock må settes. Husk at en lock ikke nødvendigivis betyr "lås slik at ingen andre kan lese". Ved lesing settes en shared lock.

*snip*

 

Stemmer, derfor referansen til blokkerende lås. Hvordan dette faktisk fungerer fysisk er avhengig av datamotor og isolasjonsnivå. Terminologien varierer også.

 

 

At InnoDB kun benytter row-level locking høres ut som noe som kan skape problemer ved store recodsets. Det må da sluke mye minne å plassere en million låser istedet for en table lock, selv om concurrency selvfølgelig blir høyere. *snip*

 

Her er det mulig jeg er for rask, og at det finnes andre muligheter - spesielt i nyere versjoner. Tidligere var saken at selv når man ba om en hel tabell ble det satt låser på hver enkelt rad. Beste eksempelet er kanskje

delete from TABLE where field like '%pattern%' \

.

Ettersom MySQL må låse radene på InnoDB nivå, før LIKE kan evalueres, resulterer dette i en lås på hver enkelt rad i hele tabellen. Det er mulig et delte låser (mener MySQL kaller dem SHARED MODE LOCK) kan gjøres på andre nivåer.

Endret av deviant
Lenke til kommentar
Videoannonse
Annonse
At InnoDB kun benytter row-level locking høres ut som noe som kan skape problemer ved store recodsets. Det må da sluke mye minne å plassere en million låser istedet for en table lock, selv om concurrency selvfølgelig blir høyere.

Liker bedre SQL Server sin måte å gjøre det på, nemlig å eskalere locks til en table-lock når antall row/key/page locks overskrider en grenseverdi.

Sprettert vs. pil og bue :p

Endret av Frank2004
Lenke til kommentar
Det er derfor jeg lurer på om MySQL og PostgreSQL har løst problemet med høy offset på en effektiv måte, eller om en støter på samme problemene som ved bruk av ROW_NUMBER() OVER() på SQL Server.

 

Roac, her har du en god ide til neste artikkel på mssql.no. Finn ut hvordan dette håndtere i de nevnte DBMS.

Da er jeg så smått i gang, det vil si at jeg i det minste har kommet i gang med planleggingen. Jeg søker å gjøre en relativt grundig test, der alle serverene kjører under samme betingelser, som blir et uniprosessorsystem med 512MB minne med Windows Server 2003 som OS. De databaseserverene som jeg planlegger å gjøre testene på er:

  • SQL Server 2005
  • SQL Server 2008
  • DB2 9
  • DB2 9.5
  • MySQL 5
  • MySQL 6
  • PostgreSQL 8
  • Oracle 10g
  • Oracle 11g

Lenke til kommentar
  • 2 uker senere...

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...