1. EinleitungDas Thema, ob Fremdschlüsseleinschränkungen verwendet werden sollen, ist bereits ein Klischee. In der Schule lehren uns unsere Lehrer hauptsächlich, Fremdschlüsseleinschränkungen festzulegen. In der Praxis verwenden wir jedoch häufig keine Fremdschlüssel, sondern steuern sie über die Codelogik. In den JAVA-Spezifikationen von Alibaba ist außerdem Folgendes klar festgelegt: [Obligatorisch] Fremdschlüssel und Kaskaden dürfen nicht verwendet werden und alle Fremdschlüsselkonzepte müssen auf der Anwendungsebene aufgelöst werden. Warum müssen wir solche Regelungen treffen? Sollten Fremdschlüsseleinschränkungen verwendet werden? Wir können zur Veranschaulichung ein Beispiel geben 2. Beispiele Jetzt haben wir zwei Tabellen in der Datenbank erstellt: [Produkt und Projekt]. Das Wenn wir der Tabelle [Projekt] einen Datensatz mit der Es ist ersichtlich, dass die Existenz dieser Einschränkung die Integrität der Beziehung zwischen den Daten in den Tabellen sicherstellt. Die Wahrscheinlichkeit, dass fehlerhafte Daten vorhanden sind, ist geringer. Dies ist ein ganz offensichtlicher Vorteil von Fremdschlüsseleinschränkungen! Zusammenfassend bieten Fremdschlüsseleinschränkungen die folgenden Vorteile:
Es gibt aber auch Nachteile, die nicht außer Acht gelassen werden können: Leistungsprobleme Wir haben gerade zwei Tabellen erstellt, [Projekt] und [Produkt]. Die Tabelle [Projekt] hat über das Feld Zu diesem Zeitpunkt wird jedes Mal, wenn wir Daten in die Tabelle [Projekt] einfügen, zuerst zu [Produkt] gegangen, um zu prüfen, ob entsprechende zugehörige Daten vorhanden sind. Wenn dies vom Programm gesteuert wird, kann diese Abfrage weggelassen werden. Wenn jedoch eine Fremdschlüsseleinschränkung eingerichtet ist, wird die Abfrage auf jeden Fall ausgeführt. Das ist eigentlich überflüssig. Wenn nur wenige verknüpfte Felder vorhanden sind, treten möglicherweise keine Auswirkungen auf. Sobald jedoch mehr verknüpfte Felder vorhanden sind, sind diese Auswirkungen besonders deutlich! Deadlock Fremdschlüssel führen dazu, dass Abfragen von anderen Tabellen abhängig sind, was bedeutet, dass InnoDB nach entsprechenden Werten in der übergeordneten Tabelle (oder verwandten Tabellen) suchen muss. Dadurch wird auch die Zeile in der übergeordneten Tabelle gesperrt, um sicherzustellen, dass die Zeile nicht gelöscht wird, bevor die Transaktion abgeschlossen ist. Dies kann zu unerwarteten Wartezeiten bei Sperren oder sogar zu Deadlocks führen, die schwer zu lokalisieren sind. Schwierigkeiten beim Sharding Eine Datenbank mit Einschränkungen ist besonders schwierig zu verwenden, wenn sie in verschiedene Datenbanken und Tabellen aufgeteilt werden muss. Reduzierte Entwicklungs-/Testeffizienz In unserem täglichen Testprozess stoßen wir häufig auf Situationen, in denen wir einen Fehler finden und ihn reproduzieren oder das Testen vereinfachen möchten. Um das Testen zu vereinfachen, ändern wir die Daten in der Datenbanktabelle direkt. Obwohl dies nicht standardisiert ist, kann es unsere Effizienz tatsächlich erheblich steigern. Das steht außer Zweifel! Allerdings können derartige Vorgänge auch Probleme mit sich bringen. Beispielsweise können durch Daten verursachte Fehler auftreten, bei denen es sich eigentlich nicht um Programmfehler handelt, oder potenzielle Fehler können nicht erkannt werden. Abschluss Derzeit verlangen viele, insbesondere große Internetunternehmen, die Deaktivierung von Fremdschlüsseln. Dies liegt nicht nur an Leistungsproblemen, sondern vor allem daran, dass sich das Internetgeschäft schnell ändert, was indirekt zu Änderungen in der Tabellenstruktur führt. Es ist sehr wahrscheinlich, dass das Vorhandensein von Fremdschlüsseleinschränkungen zu unerwarteten Problemen und einer verringerten Entwicklungseffizienz führt. Daher ist es nicht empfehlenswert, Fremdschlüsseleinschränkungen in nicht unbedingt notwendigen Situationen und Geschäftsszenarien zu verwenden, die keine hohe Zuverlässigkeit erfordern, um offener für Änderungen zu sein. Damit ist dieser Artikel darüber, ob MySQL-Datenbanken Fremdschlüsseleinschränkungen verwenden sollten, abgeschlossen. Weitere Informationen zu Fremdschlüsseleinschränkungen für MySQL-Datenbanken finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: CSS implementiert 0,5px-Zeilen, um Kompatibilitätsprobleme mit Mobilgeräten zu lösen (empfohlen)
Konzept MMM (Master-Master-Replikationsmanager fü...
Inhaltsverzeichnis 1. Sichern Sie die alten MySQL...
Viele Leute haben mich auch gefragt, welche Büche...
Vorwort [root@localhost ~]# cat /etc/fstab # # /e...
1. Fehlerreproduktion Ich kann auf die MySQL-Date...
Linux wird im Allgemeinen als Server verwendet un...
Inhaltsverzeichnis Ändern der Repository-Quelle S...
1. Installationspaket MySQL-Dienst-Downloadadress...
Codebeispiel: öffentliche Klasse JDBCDemo3 { öffe...
In diesem Artikelbeispiel wird der spezifische Co...
In letzter Zeit muss ich im Projekt viele fragmen...
Das Büro benötigt ein Ubuntu-System als Linux-Ent...
Inhaltsverzeichnis 1 Redis-Konfigurationsdatei 2 ...
Die Implementierung eines benutzerdefinierten Kar...
Wie erstelle ich mit HTML, CSS und JS einen einfa...