4

Subquestioning SQL - when should you use “with (nolock)”Quels sont les problèmes de verrouillage et d'impasse dans les opérations financières?

Dans une institution financière locale j'ai été réprimandé par leurs programmeurs pour les exprimer mon opinion que (leur obsession de programmeurs) (b) les problèmes de verrouillage dans leur base de données MS SQL Server 2005 (s) n'a pas fait beaucoup de sens pour moi. Quels sont les problèmes possibles de verrouillage, blocage, blocage si les opérations financières ne sont jamais mises à jour, effacées et même les opérations incorrectes (partie des "transactions"?) Sont corrigées en insérant (ajoutant) de nouveaux enregistrements de correction dans la base de données (s))?
Quel est le terme en anglais? Dans d'autres langues, on l'appelle storno, stornoed (?) Operations/records. Donc, d'après ce que je comprends, les «transactions» ne sont jamais annulées et il n'y a jamais d'enregistrements incorrects/inexistants, seulement des enregistrements non actualisés.

Mise à jour:
J'ai recherché sur storno et je n'ai trouvé aucun résultat avec sa définition en anglais ou son utilisation dans les textes anglais.
J'ai trouvé la définition de storno (en lettres latines) seulement en italien.
Mais la comptabilité a été inventée en Italie et de nombreux termes comptables italiens sont utilisés dans d'autres langues, par exemple, en comptabilité russe (bancaire).
Je pensais aussi que c'était une pratique internationalement acceptée dans la comptabilité des opérations financières, n'est-ce pas?

Update2:
S. Lott m'a donné à créer un lien The way that transactions are reversed in an ERP application is a big deal! disant que storn est opération d'inversion.

Eh bien, ce n'est pas correct. Storno n'est pas seulement une transaction, c'est une opération (partie de transaction) corrigeant un fonctionnement incorrect, bien que 2 opérations combinées puissent sembler inverser la transaction (consistant en 2 opérations - de crédit et de débit sur les comptes cible et source).

Alors, storno n'est pas une pratique courante de comptabilité financière à travers le monde?

Quoi qu'il en soit, Je souhaite éviter toute discussion sur les détails/techniques/termes de la comptabilité et limiter la question au contexte lorsque les enregistrements ne sont jamais supprimés ou mis à jour.

Quels sont les problèmes possibles de verrouillage, de blocage, de super-verrouillage, de performance dans ce contexte?

+0

"autres langues?" Pourriez-vous être précis? –

+1

Parlez-vous de ça? http://richardatopenbravo.blogspot.com/2010/02/way-that-transactions-are-reversed-in.html –

+0

@ S.Lott, Postez votre réponse. Je l'ai surpassé, car cela m'aide. Voir ma mise à jour dans la publication principale –

Répondre

2

"Storno Transactions" ou "Reversing Transactions" sont bien résumés. Dans beaucoup d'endroits.

http://richardatopenbravo.blogspot.com/2010/02/way-that-transactions-are-reversed-in.html

http://help.sap.com/saphelp_46b/helpdata/en/d2/6f921f415e11d182b10000e829fbfe/content.htm

http://forum.wordreference.com/showthread.php?t=1875166

Ne pas confondre avec la mise en œuvre du logiciel de comptabilité. Une mise en œuvre raisonnable peut se faire avec un verrouillage minimal. Cela ne veut rien dire, cependant. Vous avez peut-être obtenu une réprimande parce que le logiciel est (a) mal conçu et (b) nécessite un verrouillage minutieux en raison d'une mauvaise conception.

Quels sont les problèmes possibles ...?

Puisque nous ne savons pas si le logiciel est bien ou mal écrit, il est impossible de le deviner. Ils peuvent savoir quelque chose sur leur système que vous ne saviez pas.

Un simple système de transaction storno devrait être facile à mettre en œuvre. En effet, il devrait être trivial.

Une paire de tables «insérées uniquement» peut toujours rencontrer des blocages si le verrouillage au niveau de la page est utilisé pendant les insertions.

Tableau A, page 1 comporte un insert dans la transaction X.

tableau B, page 2 a un insert dans la transaction Y.

tableau B, page 2 a un insert dans la transaction X.

Le tableau A, page 1, comporte une insertion dans la transaction Y.

La seule façon d'éviter les interblocages consiste à faire en sorte que l'ensemble du système utilise une seule table. Ou avez toutes les transactions limitées à une seule table. Ou utilisez un seul verrou à l'échelle de la base de données.

Si vous avez plusieurs opérations de table (et le verrouillage au niveau de la page), vous aurez toujours des blocages potentiels même avec des opérations d'insertion uniquement. Clairement, c'est rare, mais toujours possible.

+0

"Ou utilisez un seul verrou à l'échelle de la base de données." Euh, c'est ce qu'on appelle un système d'utilisateur unique. Bien sûr, vous avez éliminé les blocages, mais vous avez sérialisé toutes les transactions. – PerformanceDBA

+0

* ... même avec des opérations d'insertion uniquement. Clairement c'est rare, mais toujours possible. * Ce n'est pas "rare". Les inserts provoquent des verrous à divers points: le tas; pages d'index; quand les lignes doivent être déplacées. Lorsque le nombre d'utilisateurs augmente, le blocage des verrous et donc des blocages augmente. C'est ordinaire. – PerformanceDBA

+0

@PerformanceDBA: "SQL Server will lock" n'est pas la même chose qu'un blocage. Avec une seule ressource verrouillable, les blocages sont logiquement impossibles. –

Questions connexes