[MySQL+ASP.NET] Hoe locking aanpakken?

Pagina: 1
Acties:

  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
Een online ordersysteem draait op de ASP.net architectuur en maakt gebruik van een MySQL-database. Ik ben nu op zoek naar de beste manier om de database-locking aan te pakken.

Ik geef eerst een voorbeeld van een specifieke situatie waarin een goede aanpak van locking essentieel is.

Invoer orderregel
- Eerst wordt gekeken of een bepaald artikel op voorraad is
- Vervolgens moet dit artikel gelocked worden
- De orderregel moet weggeschreven worden en voorraad bijgewerkt
- Tenslotte moet het artikel unlocked worden

Op aspnl.com las ik een artikel over locking, de auteur schrijft het volgende:

"In het Application object wordt bijgehouden welke records in gebruik zijn, en in het Session object wordt bijgehouden welk record de gebruiker in gebruik heeft."

In het artikel wordt dus gebruik gemaakt van de ASP.NET application en session objects om records bij te houden die in gebruik zijn. Dit is slechts één manier om de db-locking aan te pakken. Wat denken jullie van deze wijze? Hebben jullie andere suggesties?

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Ik weet niet of je in MySQL zelf kan specifieren wat voor een lock er moet gebruikt worden op DB niveau per statement.

In MS SQL zou je dit bv kunnen doen door dit:
check of het bepaalde artikel op voorraad is; bv, haal het record voor dit artikel op waarin de voorraad van dit artikel staat. Dan kan je op dit statement gaan specifieren dat je een lock wilt op deze row:
code:
1
 select * from tblArticle (xlock) where articleId = 5

deze row blijft dan exclusief gelocked tot wanneer de transactie beindigd is.

Ik weet niet of zoiets (gelijkaardigs) in mysql mogelijk is ?

https://fgheysels.github.io/


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
whoami schreef op dinsdag 02 januari 2007 @ 13:17:
Ik weet niet of je in MySQL zelf kan specifieren wat voor een lock er moet gebruikt worden op DB niveau per statement.

In MS SQL zou je dit bv kunnen doen door dit:
check of het bepaalde artikel op voorraad is; bv, haal het record voor dit artikel op waarin de voorraad van dit artikel staat. Dan kan je op dit statement gaan specifieren dat je een lock wilt op deze row:
code:
1
 select * from tblArticle (xlock) where articleId = 5

deze row blijft dan exclusief gelocked tot wanneer de transactie beindigd is.

Ik weet niet of zoiets (gelijkaardigs) in mysql mogelijk is ?
En wat gebeurt er bij deze methode bijvoorbeeld als de sessie van de gebruiker onverwacht eindigt?

  • gorgi_19
  • Registratie: Mei 2002
  • Nu online

gorgi_19

Kruimeltjes zijn weer op :9

EmilneM schreef op vrijdag 05 januari 2007 @ 11:08:
[...]


En wat gebeurt er bij deze methode bijvoorbeeld als de sessie van de gebruiker onverwacht eindigt?
Dan wordt Session_OnEnd nog steeds gefired?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


  • EmilneM
  • Registratie: December 2001
  • Laatst online: 15-09-2023
gorgi_19 schreef op vrijdag 05 januari 2007 @ 11:20:
[...]

Dan wordt Session_OnEnd nog steeds gefired?
Wat gebeurt er bij een Session_OnEnd met de gelockte rows/tables van de gebruiker? Kun je bij een Session_OnEnd opvragen wat er gelocked is en de specifieke locks van de gebruiker vrijgeven?

  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Als je db-connectie beëindigd wordt, of je transactie gecommit of gerollbacked wordt, dan worden vziw de locks vrijgegeven.

https://fgheysels.github.io/

Pagina: 1