Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Misstänkta postlåsningar

Postades av 2004-09-15 10:39:09 - Jonas Rembratt, i forum sql-server/msde, Tråden har 3 Kommentarer och lästs av 710 personer

Jag håller på att lägga sista handen vid en asp.net applikation som använder en MSSQL 2000 i botten. Problemet är att det relativt ofta uppstår postlåsningar som blockerar servern. Belastningen på sevren är än så länge mycket låg dessutom så något måste vara mycket fel någonstans.

Ungefär så här ser min arkitektur ut:

I datalagret finns objekt i aggregat (typ: objekt äger andra objekt som äger andra objekt etc) och alla objekt i ett aggregat låter rot-objektet sköta databaskopplingen och transaktionen. När det är dags att spara ett aggregat så anropar man alltså rot-objektet som kopplar upp sig via ett databaslager av klasser (se nedan) och startar en transaktion. Därefter sparas alla obekten i tur och ordning och använder sig av samma transaktion. När allt är klart så "committas" transaktionen i god ordning och om något gårt fel så rullas den tillbaka och så vidare.

Jag har varit mycket noggrann med att alla kopplingar stängs som de ska och jag hittar inga misstänkta fall av ohanterade fel som skulle kunna leda till ofärdiga transaktioner.

För att uppnå en låg grad av teknikberoende så används ett separat "databaslager" som hanterar alla uppkopplingar i form av en "pool". Databaslagret räknar referenser till varje uppkoppling och hanterar situationer där antalet uppkopplingar blir för stort.

Förutom eventuella fel i min kod (vilket jag alltså inte har kunnat hitta) så är frågan: Finns det några särskilda hänsyn eller konfigurationer av MSSQL 2K jag kan ha missat? Efter att ha letat runt på internet efter mer info i saken så ser jag att många tycker att man ska explicit ska bestämma låsmekanismen genom att sätta ROWLOCk eller NOLOCK där det är tillämpligt.

Synpunkter / tips?


Svara

Sv: Misstänkta postlåsningar

Postades av 2004-09-15 14:00:51 - Mikael Wedham

<Förutom eventuella fel i min kod (vilket jag alltså inte har kunnat hitta) så är frågan:
<Finns det några särskilda hänsyn eller konfigurationer av MSSQL 2K jag kan ha missat?

Nej, inte egentligen.

<Efter att ha letat runt på internet efter mer info i saken så ser jag att många tycker
<att man ska explicit ska bestämma låsmekanismen genom att
<sätta ROWLOCk eller NOLOCK där det är tillämpligt.

Absolut inte!!! SQL Server sätter radlås där det är lämpligt. Om SQL Vill sätta någon annan typ av lås, har den goda skäl för det. Om du anser att den gör "fel" skall du nog istället rapportera det som en bugg.
NOLOCK kan man sätta om man inte vill att SQL skall låsa en läsning. Det gör man om det inte spelar någon roll om datat man får tillbaks är korrupt/inkonsekvent - och när vill man ha korrupt data?

Mit bästa tips: Kolla igenom dina transaktioner igen. Det verkar ju som om objekten dör utan att ha committat.

/micke


Svara

Sv: Misstänkta postlåsningar

Postades av 2004-09-15 14:04:06 - Jonas Rembratt

Jo din slutsats är deprimerande nog den enda rimliga skulle jag tro. Min applikation är av den naturen att 95% eller mer är "read only" och där använder jag genomgående NOLOCK, inte bara för att undvika låsningar utan även för prestandans skull; detta för att det inte är kritiskt, eller ens sannolikt, att data-korruption skulle kunna uppstå p g a halvfärdiga transaktioner.

Tillbaka till koden då alltså...


Svara

Sv: Misstänkta postlåsningar

Postades av 2004-09-15 21:39:21 - Mikael Wedham

Nja, jag förstår ditt resonemang, men du saknar en liten bit.

Du uppdaterar priset på 10 produkter i en transaktion.
Detta låser alla produkter tills transaktionen är klar.
Allt är frid och fröjd. Ingen kan läsa förrän transaktionen är klar.

Låt oss nu säga att du läser ut en prislista precis när halva uppdateringen har gått.

Vanlig SELECT: Läsningen väntar tills transaktionen är klar. Alla priser är riktiga.

NOLOCK: Du får läsa allt rakt av. Du får 5 ändrade priser och 5 o-ändrade. Du kan inte se vilka som är ändrade och inte, nästa gång du läser blir det inte likadant. Det är vad jag menar med inkonsekvent data. Du kan alltså få med en halv ändring. Osannolikt, men sannolikheten ökar med belastningen på servern!

/micke


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 619
27 953
271 709
590
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies