Glorf.it

Glorf IT

Bedenkliches aus dem IT-Alltag

5. Dezember 2007 um 19:17

Blockierungen bei Updates auf unterschiedlichen Datensätzen

Die Frage lautete:

Auf Verbindung 1 wird in einer etwas längeren Transaktion (ja, macht man nicht, aber nur mal angenommen..) der Datensatz mit ID "0815″ geändert.

Auf Verbindung 2 wird jetzt ein UPDATE-Befehl auf den Datensatz mit der ID "4711″ abgesetzt (… WHERE ID = 4711).

Geht der UPDATE auf der Verbindung 2 glatt durch oder wird er von Verbindung 1 blockiert?

Das kommt darauf an….

Tabelle ohne Index

Gehen wir mal davon aus, die Tabelle ist ein Heap, also eine Tabelle ohne Clustered Index, außerdem sind gar keine Indexes darauf. Dann muss der SQL-Server wohl oder übel einen Table-Scan durchführen um die betroffenen Sätze zu finden. Dazu liest er jeden Satz durch. Auf den gerade untersuchten Satz wird eine Update-Sperre (U) gesetzt. Ist der Datensatz betroffen, dann wird sie ein eine Exklusiv-Sperre (X) umgewandelt, sonst sofort wieder freigegeben.

Wegen des Table-Scan versucht Verbindung 2 auch den Satz mit ID 0815 zu lesen (er liest alle Sätze der Tabelle). Der ist schon gesperrt, daher wird die Verbindung blockiert. Der zweite muss warten und versteht nicht warum… 😉

Der SQL-Server-2005 verwendet hier übrigens Satz-Sperren, während der 2000er generell beim Table-Scan Seitensperren verwendete. In den anderen unten genannten Fällen verhalten sich die Systeme gleich.

Tabelle mit Index

Hat die Tabelle einen Index auf dem Suchfeld (hier ID), dann sieht es anders aus. Sowohl bei einem Clustered-Index als auch einem normalen Index kann der SQL-Server den Datensatz direkt mittels Index-Seek anspringen.

Daher tritt hier keine Blockierung auf.

Tabelle mit Index, Suche über zwei Felder

Angenommen wir filtern nicht über die ID, sondern über zwei Felder, z.B. Kundennummer und laufende-Nummer (… WHERE KDNR=4711 AND LFDNR=10). Nur auf einem davon ist ein Index: Auf der Kundennummer liegt ein nicht-eindeutiger Index, pro Kundennummer kann es zig laufende Nummern geben.

Dann macht der SQL-Server zwar einen Index-Seek auf alle Sätze mit KDNR=4711, aber er muss für alle potentiell betroffenen Sätze nachsehen, welchen Wert LFDNR hat. Daher wird auch hier eine Blockierung auftreten, wenn zufällig ein anderer Satz mit der gleichen Kundennummer schon exklusiv gesperrt ist.

Resümee

Ob es bei zwei UPDATEs auf unterschiedlichen Datensätzen zu einer Blockierung kommt oder nicht, hängt ganz allein vom Zugriffsplan des "Zweiten" ab. Der Nutzen der richtigen Indexe kann gar nicht hoch genug bewertet werden.

Und wie schon Cato sagte: Transaktionen müssen immer so kurz wie möglich sein.

Ausschlussklauseln

  • Das Geschriebene gilt auch für DELETEs.
  • Man kann die Blockierung nicht wirklich umgehen. Man kann lediglich mittels READPAST angeben, dass gesperrte Datensätze übersprungen werden. Das macht aber wirklich nur dann Sinn, wenn es wirklich egal ist, ob alle vom UPDATE oder DELETE betroffenen Datensätze geändert werden.
  • Wenn man den Isolation-Level "SNAPSHOT" verwendet, dann könnte es anders sein, das habe ich nicht ausprobiert.
  • Wenn man SERIALIZABLE verwendet, dann ist es ähnlich nur schlimmer, weil dann jede Menge RangeS-U-Locks gesetzt werden. Aber wann macht man schon SERIALIZABLE bei UPDATEs oder DELETEs?
5. Dezember 2007 um 19:03

Gulp bleibt Gulp

Als Kind las ich sehr gerne die Walt-Disney-Taschenbücher. Dort machte Donald immer dann "GULP", wenn er schwer schlucken musste, weil ihm etwas Schlimmes bevorstand. Heute ist das vermutlich nicht mehr so, denn heute heisst eine Firma "Gulp". Die Firma wurde verkauft und deswegen bekam ich eine Mail, die so endete (Name entfernt):

Fazit: GULP bleibt GULP. In diesem Sinne freue ich mich auf die weitere
erfolgreiche Zusammenarbeit mit Ihrem Hause.

Vielen Dank und beste Grüße.

K… T…..<http://www.gulp.de/mailings/images/ct_unterschrift.jpg>

Wenn man unter der angegebenen Mailadresse nachschaut, dann sieht man tatsächlich die Unterschrift des Absenders. Das haut mich total von den Socken. Der Absender riskiert damit, dass jemand mit einfachsten Mitteln Dokumente mit seiner Unterschrift produziert. Wenn er sie dann auch noch faxt, dann kann der Empfänger zunächst mal nicht feststellen, dass es sich um eine Fälschung handelt! Da würde ich auch "GULP" machen… 😉

Oder kann man bei solchen Gelegenheiten (also öffentlich im Internet) so unterschreiben, dass das nicht als geschäftsfähige Unterschrift gilt, z.B. indem man das Ende des Namens sehr undeutlich schreibt?

30. November 2007 um 21:10

Stored-Procedure-Generator

In seinem Artikel "SqlProcedure – Improve Database Performance, Eliminate Errors and Reduce Code" stellt "adambl" ein Werkzeug vor mit dem man automatisiert Stored-Procedures für seine Datenzugriffsschicht generieren lassen kann.

This article includes a utility to generate wrappers for stored procedures that improve performance and eliminate certain run-time errors, and a Framework for unit testing of the wrappers.

Background

If you are using an ORM Framework for managing data persistence (like NHibernate), then you don't have the problem this article tackles, but if your code has a hand-crafted data access layer and executes stored procedures with SqlDataReader, then read on.

In der Vergangenheit musste ich leider sehr oft erleben, dass generierter Code häufig genug suboptimal war. Andererseits sollte eine mittelmäßige Prozedur für 80% der Fälle reichen, vielleicht sogar für 95%, je nach Anforderungen. Wir bedienen beispielsweise eher kleine und mittlere Büros, da sind es bestimmt 90%. Wenn man an die Fälle geht, die den Hotspot bedienen, dann kann man ja immer noch Hand anlegen. Sollte man allerdings Anwendungen für massive-parallele Bearbeitungen schreiben, dann empfehle ich für alles durchdachte Handarbeit…

Ein unschätzbarer Vorteil: Wenn man bei Änderungen in der Datenbank nur auf das Knöpfchen drücken muss und die meisten Prozeduren sind automatisch angepasst, dann ist das natürlich ein riesen Produktivitätsgewinn.

Wer sowas braucht, der sollte sich das Teil mal ansehen, bevor er sich selber ans Werk macht. Vielleicht ist es ja parametrisierbar oder über Templates steuerbar (geht aus dem Artikel nicht hervor). "Not invented here" ist mega-out. 😉

Da geht lang.

22. November 2007 um 19:02

XPath Syntax

Für den Abendschulkurs letzten Samstag musste ich mir im Schnelldurchlauf mal wieder die XPath-Syntax ansehen. Dazu eignet sich die Seite "XPath Syntax" auf w3schools.com sehr gut.

Um sich mal die Wirkung von XPATH-Ausdrücken vor Augen zu führen (ohne gleich ein teures Tool kaufen zu müssen), eignet sich der XPATH-Visualizer besonders gut.

18. November 2007 um 15:17

automatische Erkennung von Kfz-Kennzeichen

Es ist ja schon mal erfreulich, dass solche Vorkommen inzwischen diskutiert werden. Leider erst nachdem das Verfahren eingesetzt wurde. Das sollte eigentlich nicht mehr vorkommen. Worum es geht:

Die Polizei in Hessen fotografiert mit neuen automatischen Kennzeichenlesegeräten Autokennzeichen und gleicht diese automatisch mit Fahndungsdatenbanken ab.

Jetzt ist die aufregende Frage: Ist das in Ordnung oder nicht
Für mich ist die Sache eindeutig:

  • Wenn die gescannten Kennzeichen nur mit der Fahndungsdatenbank verglichen und danach nirgend gespeichert werden, also nur in Hauptspeicher aber nicht in Protokollen vorhanden sind, dann ist gegen das Verfahren nichts einzuwenden. Es ist dann für mich wie bei einer normalen Verkehrskontrolle.
  • Wenn hingegen alle Nummern erst mal gespeichert und danach verglichen werden – also danach alle Nummern noch persistent sind, dann ist das eindeutig nicht in Ordnung.

Laut Polizei werden die Nummern, die in der Datenbank nicht gefunden wurden, nicht gespeichert.

Da steht es: "Polizei scannt eine Million Auto- Kennzeichen"

9. November 2007 um 23:20

Vorratsdatenspeicherung

Da ich heute mehrfach mit dem Auto unterwegs war, hörte ich heute im Radio mehrfach Berichte über das heute verabschiedete Gesetz zur Vorratsdatenspeicherung und TK-Überwachung. Mein Eindruck ist, dass weder die Radio-Sprecher noch die Nicht-Computerfachleute – also die normalen Menschen – einen blassen Schimmer haben, was da tatsächlich gespeichert wird und was man mit diesen Daten alles anstellen kann.

Da sich damit die Beweislast quasi umkehrt, muss man sich dagegen wappnen, dass man zu Unrecht irgendwelcher Dinge beschuldigt wird. Das passiert ja heute schon. Aber auch wenn es nicht um Zahlendreher bei der IP-Adresse geht, dann könnte man den Protokollen des Providers nur glauben, wenn die Software garantiert keine Fehler hat. Und Software ohne Fehler? Ich bin selber Softwareentwickler – daher traue ich derartigen Unfehlbarkeitsgeschichten nicht. Das gilt übrigens auch für die Mär, dass diese Daten vor Hackern sicher seien. Oder dass diese Daten bestimmt nicht mit anderen verknüpft werden, um ein Profil herzustellen.

Aber auch nur die Internet-Kommunikation oder einfach nur die Google-Recherchen würde bei den jungen Menschen schon reichen: Wer sich heutzutage ansehen kann, was jemand in den letzten 6 Monate im Internet gemacht hat, der kann ziemlich gut abschätzen, was das für ein Mensch ist und welche geheimen Interessen er/sie hat.

Aber was red ich… Der Pfarrer predigt nur vor den Frommen. Ich glaube nicht, dass jemand ohne Computer-Schimmer diese Seite lesen würde. 😉

2. November 2007 um 17:01

Commonality – Color Schemes in SQL 2005 Management Studio

Man kann nicht nur sein Visual-Studio ganz schick in schwarz kleiden, sondern auch das SQL-Server-2005 Management-Studio. Eigentlich nahe liegend, aber ich bin trotzdem nicht selber drauf gekommen.

Wie das geht beschreibt Tomas Restrepo (ob der wirklich so heißt?) auf seinem Blog: "Color Schemes in SQL 2005 Management Studio".

Einfach klasse! Den Font Inconsolata lud ich zu diesem Zweck mir ja schon gestern runter. Der wird in obigen Artikel nicht mehr explizit erwähnt, macht meiner Ansicht nach aber einen ordentlichen Teil des Flair aus…

23. Oktober 2007 um 19:15

Was da auf uns zu kommt…

Auf PC World kann man derzeit lesen, was da im nächsten Jahr auf uns zu kommt: Die 10 strategisch wichtigsten IT-Technologien (wie Gartner sie sieht).

Die Liste enthält ein paar sichere Annahmen, ein paar sind aber für mich eher überraschend:

  • Green IT – IT für die Umwelt (oder meinen die vielleicht Glorf IT?), glaube ich nicht wirklich.
  • Unified communications – alle Macht dem TCP/IP. OK, das Thema kommt langsam, aber der Durchbruch kommt meiner Ansicht nach erst in 2009.
  • Business process management – Geschäftsprozesse? Ich dachte die seinen schon wieder passé?
  • Metadata management – Meta ist immer gut
  • Virtualization – ziemliche sichere Annahme, die hätte ich weiter hoch gesetzt.
  • Mashups – stimmt, das trifft ja jetzt schon zu.
  • The Web platform – 42?
  • Computing fabric – nie gehört
  • Real World Web – alle Net, oder was?
  • Social software – also Blogs, Podcasts, Wikis, usw., eher verwunderlich, dass die zuletzt kommen.

Da frage ich mich natürlich, welche Themen ich im kommenden Jahr ganz oben sehe. Zusätzlich zu den genannten fallen mir eigentlich bloß noch 64-Bit-PCs, insbesondere für Windows und Linux, ein. Das wäre meine Nummer eins, dicht gefolgt von der Virtualisierung.

Schaust Du da: "Top Tech Strategies for 2008"

19. Oktober 2007 um 18:50

.NET BlogBook Ausgabe 4

Die 4te Ausgabe des ".NET BlogBook" ist frisch erschienen. Diese Ausgabe enthält überarbeitete und neue Artikel von Norbert Eder und Kai Gloth zu den Themen Core Framework, ASP.NET, LINQ, WPF und Tools.
Diesmal gibt es sogar etwas zu gewinnen: nämlich fünf Jahresabos der Zeitschrift "ASP.NET Professional" oder "Visual Studio One". Der nächste Update ist übrigens für den 15. Januar geplant.

Mehr Informationen zum Gewinnspiel gibt es hier.

Und hier geht es zum Download der aktuellen Version: .NET BlogBook Ausgabe 4 – PDF (7.6 MB).

Update: Bei Norbert Eder gibt es auch eine inoffizielle HTML-Version, die man ins Visual-Studio integrieren kann.

18. Oktober 2007 um 19:21

Prozessoptimierung?

Die Titelzeile in der aktuellen Ausgabe der Zeitschrift "IT Mittelstand" ist schon sehr zweideutig:

Die IT folgt den Prozessen

Nicht zuletzt Dank SCO denke ich dabei nicht unbedingt an einen Workflow… Die Unterschrift "ÖRAG Rechtschutzversicherungs-AG" lässt mich vermuten, dass das Wortspiel beabsichtigt ist. 🙂

17. Oktober 2007 um 21:56

Fiese Lobbyisten

Habe gerade meine beiden Favoriten für die fiesesten Lobbyisten abgegeben.

Der ‘Worst EU Lobbying’ Award wird an Lobbyisten, Unternehmen oder Interessenverbände vergeben, die 2007 manipulative, irreführende oder andere problematische Lobbytaktiken verwendeten, um Entscheidungen der EU zu beeinflussen. In diesem Jahr wird ein zusätzlicher Preis in der Kategorie ‘Worst EU Greenwash’ vergeben, mit dem Firmen ausgezeichnet werden, deren Werbung, PR- und Lobbyrhetorik im Widerspruch zu den wahren Umweltauswirkungen ihres Kerngeschäfts steht.

Ich bin ja schon mal gespannt, wer gewinnt. Würdig wären ja fast alle, aber insbesondere bei "Worst Lobby" habe ich dennoch einen klaren Spitzenreiter. Ich verrate nicht wen, ich warte mal ab, ob andere auch so denken…

Hier geht es zur Abstimmung: Worst EU Lobbying Awards 2007. Man muss nur seine Mailadresse angeben und die Wahl mittels zugesandtem Link bestätigen.

16. Oktober 2007 um 22:24

Biometrie im Reisepass

Irgendwie habe ich mich schon damit abgefunden, dass wir immer mehr flächendeckender überwacht und erfasst werden. Dabei macht mir weniger Angst, dass mich jemand bei etwas illegalem erwischen könnte – wobei auch? Ich habe nur leider schon viel zu oft erlebt, dass eine Auswertung fehlerhaft erstellt wurde, dass Daten falsch verknüpft wurden oder einfach falsche Schlüsse gezogen wurden. Für mich ist klar, dass mit der Datenflut auch die Anzahl der Fehler steigen wird. Und wie soll man beweisen, dass der vorgelegte Beweis nicht stimmt?

Außerdem scheint es ja zukünftig für gauner auch viel leichter zu werden sich die Daten zu verschaffen, die er braucht, um sich als jemand anderer auszugeben:

Das Ausmaß der Gefahren für die Betroffenen durch biometrische Funkchips in Ausweisdokumenten hat für die Hacker der Präsident des Bundeskriminalamts, Jörg Ziercke, illustriert. Trotz aller Beteuerungen seiner "Experten", dass die biometrischen Daten "sicher" auf dem RFID-Tag seien, trage der Ermittlerchef seinen eigenen Reisepass in einer Abschirmhülle. Auch das Auswärtige Amt traue den Sicherheitsversprechungen des Bundesinnenministeriums nicht. Diplomatenpässe würden "wegen der besonderen Gefährdungslage" keine Funkchips enthalten.

Alle Details bei heise.de im Artikel "CCC warnt vor Risiken und Nebenwirkungen des neuen Reisepasses"