Κοινοποίηση μέσω


Συναλλαγές στην αποθήκη δεδομένων Fabric

Ισχύει για:✅ Τελικό σημείο ανάλυσης SQL και Αποθήκη στο Microsoft Fabric

Παρόμοια με τη συμπεριφορά τους στον SQL Server, οι συναλλαγές σάς επιτρέπουν να ελέγχετε την δέσμευση ή την επαναφορά ερωτημάτων ανάγνωσης και εγγραφής.

Το Fabric Data Warehouse υποστηρίζει συναλλαγές συμβατές με το ACID. Κάθε συναλλαγή είναι ατομική, συνεπής, απομονωμένη και ανθεκτική (ACID). Όλες οι λειτουργίες σε μια μεμονωμένη συναλλαγή αντιμετωπίζονται ατομικά, όλες πετυχαίνουν ή όλες αποτυγχάνουν. Εάν κάποια δήλωση στη συναλλαγή αποτύχει, ολόκληρη η συναλλαγή επαναφέρεται.

Ρητές συναλλαγές

Μπορείτε να τροποποιήσετε δεδομένα που είναι αποθηκευμένα σε πίνακες σε μια Αποθήκη χρησιμοποιώντας ρητές κινήσεις για να ομαδοποιήσετε τις αλλαγές.

Για παράδειγμα, μπορείτε να καταχωρήσετε εισαγωγές σε πολλούς πίνακες ή, εάν προκύψει σφάλμα, κανένας από τους πίνακες. Εάν αλλάζετε τις λεπτομέρειες σχετικά με μια παραγγελία αγοράς που επηρεάζει τρεις πίνακες, μπορείτε να ομαδοποιήσετε αυτές τις αλλαγές σε μία μόνο συναλλαγή. Αυτό σημαίνει ότι όταν ερωτώνται αυτοί οι πίνακες, είτε έχουν όλες τις αλλαγές είτε καμία από αυτές. Οι συναλλαγές αποτελούν κοινή πρακτική για την περίπτωση που χρειάζεται να εξασφαλίσετε ότι τα δεδομένα σας είναι συνεπή σε πολλούς πίνακες.

Μπορείτε να χρησιμοποιήσετε τυπικούς μηχανισμούς ελέγχου σύνταξης T-SQL (BEGIN TRAN, COMMIT TRAN, και ROLLBACK TRAN) για ρητές συναλλαγές. Για περισσότερες πληροφορίες, δείτε: - ΈΝΑΡΞΗΣΥΝΑΛΛΑΓΉΣ - ΕΠΑΝΑΦΟΡΆΣ ΣΥΝΑΛΛΑΓΉΣ - ΔΈΣΜΕΥΣΗΣ

Υποστήριξη συναλλαγών ερωτήματος μεταξύ βάσεων δεδομένων

Η Αποθήκη στο Microsoft Fabric υποστηρίζει συναλλαγές που εκτείνονται σε αποθήκες που βρίσκονται στον ίδιο χώρο εργασίας, συμπεριλαμβανομένης της ανάγνωσης από το τελικό σημείο ανάλυσης SQL του Lakehouse. Για παράδειγμα, ανατρέξτε στο θέμα Σύνταξη ερωτήματος SQL μεταξύ βάσεων δεδομένων.

Κατανόηση του κλειδώματος και του αποκλεισμού στην αποθήκη δεδομένων Fabric

Η Αποθήκη δεδομένων Fabric χρησιμοποιεί κλείδωμα σε επίπεδο πίνακα, ανεξάρτητα από το αν ένα ερώτημα αγγίζει μία γραμμή ή πολλές. Ο παρακάτω πίνακας παρέχει μια λίστα με τα κλειδώματα που χρησιμοποιούνται για διαφορετικές λειτουργίες T-SQL.

Τύπος πρότασης Κλείδωμα που λαμβάνεται
ΟΘΔ
ΔΙΑΛΈΓΩ Schema-Stability (Sch-S)
ΕΝΘΈΤΩ Αποκλειστική πρόθεση (IX)
ΔΙΑΓΡΆΦΩ Αποκλειστική πρόθεση (IX)
ΕΝΗΜΕΡΏΝΩ Αποκλειστική πρόθεση (IX)
ΕΝΏΝΩ Αποκλειστική πρόθεση (IX)
ΑΝΤΙΓΡΑΦΗ ΣΤΟ Αποκλειστική πρόθεση (IX)
ΔΔΛ
ΔΗΜΙΟΥΡΓΙΑ ΠΙΝΑΚΑΣ Schema-Modification (Sch-M)
ΕΝΑΛΛΑΚΤΙΚΌ ΤΡΑΠΈΖΙ Schema-Modification (Sch-M)
ΤΡΑΠΈΖΙ ΠΤΏΣΗΣ Schema-Modification (Sch-M)
ΠΕΡΙΚΟΜΜΕΝΟΣ ΠΙΝΑΚΑΣ Schema-Modification (Sch-M)
ΔΗΜΙΟΥΡΓΊΑ ΠΊΝΑΚΑ Ως ΕΠΙΛΟΓΉ Schema-Modification (Sch-M)
ΔΗΜΙΟΥΡΓΊΑ ΠΊΝΑΚΑ ΩΣ ΚΛΏΝΟΣ ΤΟΥ Schema-Modification (Sch-M)

Μπορείτε να υποβάλετε ερωτήματα που διατηρούνται αυτήν τη στιγμή με τη δυναμική προβολή διαχείρισης (DMV) sys.dm_tran_locks.

Για περισσότερες πληροφορίες σχετικά με τα κλειδώματα, την κλιμάκωση κλειδώματος και τη συμβατότητα κλειδώματος, ανατρέξτε στο θέμα Κλείδωμα συναλλαγών και οδηγός διαχείρισης εκδόσεων γραμμών.

Απομόνωση στιγμιότυπου

Το Fabric Data Warehouse επιβάλλει απομόνωση στιγμιότυπου σε όλες τις συναλλαγές. Η απομόνωση στιγμιότυπου είναι ένα επίπεδο απομόνωσης βάσει γραμμών που παρέχει συνέπεια σε επίπεδο συναλλαγής για δεδομένα και χρησιμοποιεί εκδόσεις γραμμών που είναι αποθηκευμένες για tempdb την επιλογή γραμμών προς ενημέρωση. Η συναλλαγή χρησιμοποιεί τις εκδόσεις γραμμής δεδομένων που υπάρχουν κατά την έναρξη της συναλλαγής. Αυτό διασφαλίζει ότι κάθε συναλλαγή λειτουργεί σε ένα συνεπές στιγμιότυπο των δεδομένων όπως υπήρχαν στην αρχή της συναλλαγής.

Στην απομόνωση στιγμιότυπου, τα ερωτήματα στη συναλλαγή βλέπουν την ίδια έκδοση ή στιγμιότυπο, με βάση την κατάσταση της βάσης δεδομένων κατά την έναρξη της συναλλαγής. Στην απομόνωση στιγμιότυπου, οι συναλλαγές που τροποποιούν δεδομένα δεν αποκλείουν τις συναλλαγές που διαβάζουν δεδομένα και οι συναλλαγές που διαβάζουν δεδομένα δεν αποκλείουν τις συναλλαγές που εγγράφουν δεδομένα. Αυτή η αισιόδοξη συμπεριφορά χωρίς αποκλεισμό μειώνει επίσης σημαντικά την πιθανότητα αδιεξόδων για πολύπλοκες συναλλαγές.

Εάν χρησιμοποιείτε T-SQL για να αλλάξετε το επίπεδο απομόνωσής σας, η αλλαγή παραβλέπεται κατά την εκτέλεση του ερωτήματος και εφαρμόζεται απομόνωση στιγμιότυπου.

Στην απομόνωση στιγμιότυπου, είναι δυνατές οι διενέξεις εγγραφής-εγγραφής ή ενημέρωσης, για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Κατανόηση των διενέξεων εγγραφής-εγγραφής στο Fabric Data Warehouse.

Κλειδώματα σχήματος

Τα κλειδώματα σχήματος αποτρέπουν τις διενέξεις σε προτάσεις DDL, όπως η αλλαγή του σχήματος ενός πίνακα κατά την ενημέρωση των γραμμών σε μια συναλλαγή. Λάβετε υπόψη ότι οι λειτουργίες DDL, όπως οι αλλαγές σχήματος και οι μετεγκαταστάσεις, μπορούν να αποκλείσουν ή να αποκλειστούν από ενεργούς φόρτους εργασίας ανάγνωσης.

  • Κατά τη διάρκεια των λειτουργιών γλώσσας ορισμού δεδομένων (DDL), η μηχανή βάσης δεδομένων χρησιμοποιεί κλειδώματα τροποποίησης σχήματος (Sch-M). Κατά τη διάρκεια του χρόνου που κρατιέται, η Sch-M κλειδαριά εμποδίζει κάθε ταυτόχρονη πρόσβαση στο τραπέζι μέχρι να απελευθερωθεί η κλειδαριά.
  • Κατά τη διάρκεια των λειτουργιών γλώσσας χειρισμού δεδομένων (DML), η μηχανή βάσης δεδομένων χρησιμοποιεί κλειδώματα σταθερότητας σχήματος (Sch-S). Οι λειτουργίες που αποκτούν Sch-M κλειδαριές μπλοκάρονται από τις Sch-S κλειδαριές. Άλλες συναλλαγές συνεχίζουν να εκτελούνται κατά τη μεταγλώττιση ενός ερωτήματος, αλλά οι λειτουργίες DDL αποκλείονται μέχρι να αποκτήσουν αποκλειστική πρόσβαση στο σχήμα.
  • Οι λειτουργίες DDL αποκτούν επίσης ένα αποκλειστικό κλείδωμα (X) σε σειρές σε προβολές συστήματος όπως sys.tables και sys.objects σχετίζονται με τον πίνακα προορισμού, για τη διάρκεια της συναλλαγής. Αυτό αποκλείει τις ταυτόχρονες SELECT δηλώσεις στο sys.tables και sys.objects.

Βέλτιστες πρακτικές για την αποφυγή αποκλεισμού

  • Αποφύγετε μακροχρόνιες συναλλαγές ή προγραμματίστε σε περιόδους χαμηλής ή καθόλου ταυτόχρονης δραστηριότητας.
  • Προγραμματίστε τις λειτουργίες DDL μόνο κατά τη διάρκεια των παραθύρων συντήρησης για να ελαχιστοποιήσετε το μπλοκάρισμα.
  • Αποφύγετε την τοποθέτηση δηλώσεων DDL μέσα σε ρητές συναλλαγές χρήστη (BEGIN TRAN). Οι μακροχρόνιες συναλλαγές που τροποποιούν πίνακες μπορούν να προκαλέσουν προβλήματα αποκλεισμού για άλλες λειτουργίες και SELECT ερωτήματα DML, τόσο σε πίνακες χρηστών όσο και σε προβολές καταλόγου συστήματος, όπως sys.tables. Για να παρακολουθήσετε και να αντιμετωπίσετε πιθανές διενέξεις κλειδώματος, χρησιμοποιήστε το sys.dm_tran_locks.
  • Παρακολουθήστε κλειδαριές και συγκρούσεις στην αποθήκη.
    • Χρησιμοποιήστε sys.dm_tran_locks για να επιθεωρήσετε τις τρέχουσες κλειδαριές.
  • Το Fabric Data Warehouse υποστηρίζει ορισμένες προτάσεις DDL μέσα σε συναλλαγές που ορίζονται από τον χρήστη, αλλά δεν συνιστώνται σε μακροχρόνιες συναλλαγές. Εντός των συναλλαγών, οι δηλώσεις DDL μπορούν να αποκλείσουν ταυτόχρονες συναλλαγές ή να προκαλέσουν διενέξεις εγγραφής-εγγραφής.

Κατανόηση των διενέξεων εγγραφής-εγγραφής στο Fabric Data Warehouse

Οι διενέξεις εγγραφής-εγγραφής μπορεί να προκύψουν όταν δύο συναλλαγές επιχειρούν να UPDATE, DELETE, MERGEή TRUNCATE στον ίδιο πίνακα.

Οι διενέξεις εγγραφής-εγγραφής ή οι διενέξεις ενημέρωσης είναι δυνατές σε επίπεδο πίνακα, καθώς το Fabric Data Warehouse χρησιμοποιεί κλείδωμα σε επίπεδο πίνακα. Εάν δύο συναλλαγές επιχειρήσουν να τροποποιήσουν διαφορετικές γραμμές στον ίδιο πίνακα, εξακολουθούν να βρίσκονται σε διένεξη.

Οι συγκρούσεις εγγραφής-εγγραφής προκύπτουν κυρίως από δύο σενάρια:

  • Διενέξεις φόρτου εργασίας που προκαλούνται από τον χρήστη
    • Πολλοί χρήστες ή διεργασίες τροποποιούν ταυτόχρονα τον ίδιο πίνακα.
    • Μπορεί να συμβεί σε αγωγούς ETL, ενημερώσεις παρτίδων ή επικαλυπτόμενες συναλλαγές.
  • Συγκρούσεις που προκαλούνται από το σύστημα
    • Οι εργασίες του συστήματος παρασκηνίου, όπως η αυτόματη συμπίεση δεδομένων, ξαναγράφουν αρχεία με κακή ποιότητα.
    • Αυτά μπορεί να έρχονται σε διένεξη με τις συναλλαγές των χρηστών, αν και η πρόληψη συμπίεσης δεδομένων αποτρέπει ενεργά τις διενέξεις εγγραφής-εγγραφής αυτού του τύπου.

Εάν προκύψει διένεξη εγγραφής-εγγραφής, ενδέχεται να εμφανιστούν μηνύματα σφάλματος όπως:

  • Σφάλμα 24556: Η συναλλαγή απομόνωσης στιγμιότυπου ματαιώθηκε λόγω διένεξης ενημέρωσης. Η χρήση της απομόνωσης στιγμιότυπου για πρόσβαση στον πίνακα '%.*ls' άμεσα ή έμμεσα στη βάση δεδομένων '%.*ls' μπορεί να προκαλέσει διενέξεις ενημέρωσης, εάν οι γραμμές σε αυτόν τον πίνακα έχουν διαγραφεί ή ενημερωθεί από άλλη ταυτόχρονη συναλλαγή. Δοκιμάστε ξανά τη συναλλαγή.
  • Σφάλμα 24706: Η συναλλαγή απομόνωσης στιγμιότυπου ματαιώθηκε λόγω διένεξης ενημέρωσης. Δεν μπορείτε να χρησιμοποιήσετε την απομόνωση στιγμιότυπου για να αποκτήσετε πρόσβαση στον πίνακα '%.*ls' άμεσα ή έμμεσα στη βάση δεδομένων '%.*ls' για να ενημερώσετε, να διαγράψετε ή να εισαγάγετε τη γραμμή που έχει τροποποιηθεί ή διαγραφεί από άλλη συναλλαγή. Δοκιμάστε ξανά τη συναλλαγή.

Εάν αντιμετωπίσετε αυτά τα μηνύματα σφάλματος, μία ή περισσότερες συναλλαγές ολοκληρώθηκαν με επιτυχία και μία ή περισσότερες συναλλαγές σε διένεξη απέτυχαν. Δοκιμάστε ξανά τις συναλλαγές που απέτυχαν.

Σημείωμα

Ακόμη και όταν MERGE οι συναλλαγές οδηγούν μόνο σε αλλαγές μόνο προσάρτησης, εξακολουθούν να δημιουργούν μια διένεξη εγγραφής-εγγραφής. Όταν MERGE η συναλλαγή επηρεάζει διαφορετικές γραμμές από άλλες ταυτόχρονες συναλλαγές DML, ενδέχεται να αντιμετωπίσει αυτό το σφάλμα εάν MERGE δεν είναι η πρώτη συναλλαγή που διαπράττεται: «Η συναλλαγή απομόνωσης στιγμιότυπου ματαιώθηκε λόγω διένεξης ενημέρωσης».

Βέλτιστες πρακτικές για την αποφυγή διενέξεων εγγραφής-εγγραφής

Για να αποφύγετε τις διενέξεις εγγραφής-εγγραφής:

  • Αποφύγετε τις ταυτόχρονες UPDATE, DELETE, MERGE πράξεις στον ίδιο πίνακα.
    • Δώστε ιδιαίτερη προσοχή στις UPDATE, DELETE, MERGE λειτουργίες στο πλαίσιο συναλλαγών πολλαπλών βημάτων.
  • Χρησιμοποιήστε το Retry Logic σε όλες τις εφαρμογές και τα ερωτήματα.
    • Εφαρμόστε τη λογική επανάληψης σε αποθηκευμένες διαδικασίες και αγωγούς ETL.
    • Προσθέστε λογική επανάληψης με καθυστέρηση σε διοχετεύσεις ή εφαρμογές για να χειριστείτε παροδικές διενέξεις.
      • Χρησιμοποιήστε εκθετική οπισθοδρόμηση για να αποφύγετε καταιγίδες επανάληψης που επιδεινώνουν τις παροδικές διακοπές δικτύου. Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Επανάληψη μοτίβου.
  • Οι διενέξεις εγγραφής-εγγραφής με την υπηρεσία συμπίεσης δεδομένων παρασκηνίου της αποθήκης δεδομένων Fabric Data Warehouse είναι δυνατές, αλλά συνήθως αποτρέπονται από τη δυνατότητα προτίμησης συμπίεσης δεδομένων .

Αποκλεισμός αρχείων τραπεζιού και παρκέ

Οι διενέξεις από δύο ή περισσότερες ταυτόχρονες συναλλαγές που ενημερώνουν μία ή περισσότερες γραμμές σε έναν πίνακα αξιολογούνται στο τέλος της συναλλαγής. Η πρώτη συναλλαγή που ολοκληρώθηκε με επιτυχία και οι άλλες συναλλαγές επιστρέφονται με ένα σφάλμα που επιστρέφεται. Αυτές οι διενέξεις αξιολογούνται σε επίπεδο πίνακα και όχι σε επίπεδο μεμονωμένου αρχείου parquet.

Οι προτάσεις ΕΙΣΑΓΩΓΉς δημιουργούν πάντα νέα αρχεία parquet, το οποίο σημαίνει λιγότερες διενέξεις με άλλες συναλλαγές εκτός από την DDL, επειδή το σχήμα του πίνακα θα μπορούσε να αλλάζει.

Περιορισμοί

  • Οι κατανεμημένες συναλλαγές δεν υποστηρίζονται, για παράδειγμα, BEGIN DISTRIBUTED TRANSACTION.
  • ALTER TABLE δεν υποστηρίζεται στο πλαίσιο ρητής συναλλαγής.
  • Η αποθήκευση σημείων δεν υποστηρίζεται.
  • Δεν υποστηρίζονται επώνυμες συναλλαγές.
  • Οι συναλλαγές με σήμανση δεν υποστηρίζονται.
  • Προς το παρόν, υπάρχει περιορισμένη λειτουργικότητα T-SQL στην αποθήκη. Ανατρέξτε στην επιφάνεια T-SQL στο Fabric Data Warehouse για μια λίστα εντολών T-SQL που δεν είναι διαθέσιμες αυτήν τη στιγμή.
  • Εάν μια συναλλαγή έχει εισαγωγή δεδομένων σε έναν κενό πίνακα και εκδίδει μια SELECT πριν από την επαναφορά της, τα στατιστικά στοιχεία που δημιουργούνται αυτόματα εξακολουθούν να αντικατοπτρίζουν τα μη δεσμευμένα δεδομένα, προκαλώντας ανακριβή στατιστικά στοιχεία. Ανακριβή στατιστικά στοιχεία μπορεί να οδηγήσουν σε μη βελτιστοποιημένα σχέδια ερωτημάτων και χρόνους εκτέλεσης. Εάν επαναφέρετε μια συναλλαγή με SELECTs μετά από μια μεγάλη ΕΙΣΑΓΩΓΉ, ενημερώστε τα στατιστικά στοιχεία για τις στήλες που αναφέρονται στην SELECT.