|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité de passage
![]() Inscription : avril 2003 Messages : 9 ![]() |
Bonjour à tout le monde !
J'ai lu l'excellent article de SQLPro concernant la représentation intervallaire des listes arborescentes http://sqlpro.developpez.com/cours/arborescence/. Je me suis d'abord intéressé à la problématique de l'accès concurrent dans le cas de l'insertion (je ne suis pas allé plus loin) et il me semble avoir trouvé une faille dans la manière de faire et je soumets à votre sagacité ma réflexion (qui, je l'espère, n'est pas foireuse Dans le code la procédure SP_INS_NOMENCLATURE, il y a dès le début le commencement d'un transaction : Code :
Code :
Code :
1°) la première est que faire SELECT @OK=count(*)... pour savoir si le parent existe toujours n'est pas suffisant car l'enregistrement peut être modifié (bornes modifiées par exemple) ou supprimé entre temps quand on fait le SELECT @bgp=... suivant. Il faudrait faire un SELECT WITH HOLDLOCK (ou un SELECT FOR UPDATE en Oracle) 2°) en conséquence du 1°) les UPDATE pour modifier les bornes peuvent être faux. Vos avis ? |
||||||
|
|
00
|
|
|
#2 | ||
![]() ![]() ![]() Frédéric BROUARDExpert SGBDR & SQL Inscription : mai 2002 Messages : 10 959 ![]() |
Citation:
Ce niveau d'isolation assure que les données seront stable pendant toute la transaction. La seule chose qui importe est deonc la valeur de la clef que l'on veut mouvoir ! Faire un HOLDLOCK en plus est non seulement d'une grande bétise mais prouve que vous ne comprenez pas le concept de transaction et que vous ne maitrisez pas les verrous ! En l'occurence rajouter des verrous dans une transaction alors qu'on y pilote un niveau d'isolation qui fait que c'est le serveur qui décide des verrous à poser est franchement abérant et ne peut que conduire à une application pourrie ! Dans le principe on ne devrait JAMAIS utilsier directement les verrous. En 15 ans de carrière dans l'informatique et an tant qu'expert en SQL et bases de données, je n'ai jamais eût besoin de le faire et cette technique intervallaire je l'ai expérimentée sur des volumes de données considérables en environnement à forte charge (plusieurs milliers d'utilisateur et réplication). Citation:
Commencez par apprendre le SQL, mettez en pratique les bons conseils et évitez de douter des choses que vous ne maitrisez pas ! A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/ Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp. Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation * * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * * |
||
|
00
|
Copyright © 2000-2012 - www.developpez.com