|
|
Veröffentlicht am 11.2.2022, 13:59:18
|
|
|

Optimierte die Leistung der Konfigurationen rewriteBatchedStatements von Java JDBC, allowPublicKeyRetrieval, allowMultiQueries und sslMode.
jdbc Alle Konfigurationseigenschaften Dokumentation:Der Hyperlink-Login ist sichtbar.
Rezension:
allowPublicKeyRetrieval
Wenn Sie MySQL 8.0 verwenden, werden Sie nach dem Neustart der App mit com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException aufgefordert: Public Key Retrieval ist nicht erlaubt
Der einfachste Workaround ist, es nach der Verbindung hinzuzufügenallowPublicKeyRetrieval=true
Wenn der Benutzer sha256_password Authentifizierung verwendet, muss das Passwort während der Übertragung mit dem TLS-Protokoll geschützt werden, aber wenn der öffentliche RSA-Schlüssel nicht verfügbar ist, kann der vom Server bereitgestellte öffentliche Schlüssel verwendet werden; Der öffentliche RSA-Schlüssel des Servers kann in der Verbindung über ServerRSAPublicKeyFile oder den Parameter AllowPublicKeyRetrieval=True angegeben werden, um dem Client zu ermöglichen, den öffentlichen Schlüssel vom Server zu erhalten; Es sollte jedoch beachtet werden, dass AllowPublicKeyRetrieval=True dazu führen kann, dass böswillige Agenten durch Man-in-the-Middle-Angriffe (Man-in-the-Middle-Angriffe) Klartextpasswörter erhalten, weshalb es standardmäßig deaktiviert und explizit aktiviert werden muss.
rewriteBatchedStatements
Um eine leistungsstarke Batch-Einfügung zu erreichen, indem der Parameter rewriteBatchedStatements zur URL der JDBC-Verbindung in MySQL hinzugefügt und sichergestellt wird, dass die Treiberversion 5.1.13 oder später garantiert ist. Standardmäßig ignoriert der MySQL-JDBC-Treiber die executeBatch()-Anweisung, teilt eine Reihe von SQL-Anweisungen auf, die wir in Batches ausführen sollen, und sendet sie einzeln an die MySQL-Datenbank. Nur durch Einstellung des rewriteBatchedStandards-Parameters auf true führt der Treiber das SQL in Batchs aus Diese Option gilt auch für INSERT/UPDATE/DELETE
Standardmäßig ignoriert der MySQL Jdbc-Treiber die executeBatch()-Anweisung, zerlegt eine Reihe von SQL-Anweisungen, die wir in Batches ausführen sollen, und sendet sie einzeln an die MySQL-Datenbank, was direkt zu niedriger Leistung führt.
Nur indem du den Parameter rewriteBatchedStatements auf true setzt, hilft dir der Treiber, SQL in großen Mengen auszuführen (jdbc:mysql://ip:port/db?)rewriteBatchedStatements=true)
allowMultiQueries
Erlaubnis zur Nutzung'; ' Trennt mehrere Abfragen (wahr/falsch) in einer Aussage. Der Standardwert ist "false", was die Methoden addBatch() und executeBatch() nicht beeinflusst, die von rewriteBatchStatements abhängen.
Wenn MySQL sich mit einer Datenbank verbindet, fügen Sie die Anweisung hinzu:allowMultiQueries=trueDie Rolle von ":
1. Man kann ein Semikolon nach der SQL-Anweisung tragen, um eine Ausführung mit mehreren Anweisungen zu erreichen. 2. Es kann Batch-Verarbeitung durchgeführt werden und mehrere SQL-Anweisungen gleichzeitig ausgegeben werden.
sslMode
Standardmäßig sind Netzwerkverbindungen SSL-verschlüsselt; Diese Eigenschaft ermöglicht es Ihnen, die sichere Verbindung auszuschalten oder eine andere Sicherheitsstufe auszuwählen. Folgende Werte sind erlaubt: "DEAKTIVIERT" – eine unverschlüsselte Verbindung wird hergestellt; "BEVORZUGT" – (Standard) Wenn der Server verschlüsselte Verbindungen aktiviert, wird eine verschlüsselte Verbindung hergestellt, ansonsten fällt sie auf eine unverschlüsselte Verbindung zurück; "ERFORDERLICH" – Eine sichere Verbindung herstellen, wenn der Server sie aktiviert hat, andernfalls schlägt sie fehl; "VERIFY_CA" – Ähnlich wie "REQUIRED", validiert jedoch zusätzlich das Server-TLS-Zertifikat gegen das konfigurierte Certificate Authority (CA)-Zertifikat; "VERIFY_IDENTITY" – wie "VERIFY_CA",
Dieses Attribut ersetzt die veralteten alten Attribute "useSSL", "requireSSL" und "verifyServerCertificate", die weiterhin akzeptiert, aber in den Wert "sslMode" umgewandelt werden, wenn "sslMode" nicht explizit gesetzt ist: "useSSL=false" wird in "sslMode=disabled" umgewandelt; {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"} wird als "sslMode=PREFERRED" übersetzt; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"} wird als "sslMode=REQUIRED" übersetzt; {"useSSL=true" UND "verifyServerCertificate=true"} werden übersetzt als "Die Standardeinstellung für "sslMode" ist "BEVORZUGT", was den traditionellen Einstellungen "useSSL=true", "requireSSL=false" und "verifyServerCertificate=false" entspricht, die mit dem Connector übereinstimmen. Die Standardeinstellungen für J 8.0.12 und frühere Versionen unterscheiden sich in einigen Fällen. Anwendungen, die weiterhin die alten Attribute verwenden und auf deren alte Standardwerte angewiesen sind, sollten überprüft werden. Die Standardeinstellung für "sslMode" ist "BEVORZUGT", was den traditionellen Einstellungen "useSSL=true", "requireSSL=false" und "verifyServerCertificate=false" entspricht, was sich in einigen Fällen von der Standardeinstellung für Connector/J 8.0.12 und früher unterscheidet. Anwendungen, die weiterhin die alten Attribute verwenden und auf deren alte Standardwerte angewiesen sind, sollten überprüft werden. In manchen Fällen ist es 12 oder früher. Anwendungen, die weiterhin die alten Attribute verwenden und auf deren alte Standardwerte angewiesen sind, sollten überprüft werden. In manchen Fällen ist es 12 oder früher. Anwendungen, die weiterhin die alten Attribute verwenden und auf deren alte Standardwerte angewiesen sind, sollten überprüft werden.
Wenn "sslMode" explizit gesetzt ist, wird die alte Eigenschaft ignoriert. Wenn "sslMode" oder "useSSL" nicht explizit gesetzt ist, wird die Standardeinstellung "sslMode=PREFERRED" angewendet.
JDBC-Einstellungen zum Ausschalten sicherer Verbindungen:sslmode=deaktiviert
|
Vorhergehend:Wie man Dateien in Batches unter Linux umbenenntNächster:Wie man taiwanesische Nutzer daran hindert, sich zu registrieren, Informationen nach Belieben zu posten und um Rat beim Schreiben zu bitten.
|