De prestaties van Java JDBC's rewriteBatchedStatements, allowPublicKeyRetrieval, allowMultiQueries en sslMode-configuraties geoptimaliseerd.
jdbc Alle configuratie-eigenschappen documentatie:De hyperlink-login is zichtbaar.
Recensie:
allowPublicKeyRetrieval
Bij gebruik van MySQL 8.0, krijg je na het herstarten van de app de vraag com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Public Key Retrieval is niet toegestaan
De makkelijkste oplossing is om het pas na de verbinding toe te voegenallowPublicKeyRetrieval=waar
Als de gebruiker sha256_password authenticatie gebruikt, moet het wachtwoord tijdens het transport worden beschermd met het TLS-protocol, maar als de RSA publieke sleutel niet beschikbaar is, kan de publieke sleutel die door de server wordt geleverd worden gebruikt; De RSA publieke sleutel van de server kan in de verbinding worden opgegeven via ServerRSAPublicKeyFile, of de parameter AllowPublicKeyRetrieval=True om de client in staat te stellen de publieke sleutel van de server te verkrijgen; Het moet echter worden opgemerkt dat AllowPublicKeyRetrieval=True ervoor kan zorgen dat kwaadwillende agenten platte tekstwachtwoorden verkrijgen via man-in-the-middle-aanvallen (MITM), dus het is standaard uitgeschakeld en moet expliciet worden ingeschakeld.
rewriteBatchedStatements
Om high-performance batchinsertie te bereiken door de parameter rewriteBatchedStatements toe te voegen aan de URL van de JDBC-verbinding in MySQL en ervoor te zorgen dat de driverversie 5.1.13 of later gegarandeerd is. Standaard negeert de MySQL JDBC-driver de executeBatch()-instructie, splitst een set SQL-statements die we verwachten in batches uit te voeren, en stuurt deze één voor één naar de MySQL-database. Alleen door de parameter rewriteBatchedStatements op true te zetten, voert de driver de SQL in batches uit Deze optie geldt ook voor INSERT/UPDATE/DELETE
Standaard negeert de MySQL Jdbc-driver de executeBatch()-instructie, splitst een set SQL-instructies op die we verwachten in batches uit te voeren, en stuurt deze één voor één naar de MySQL-database, wat direct leidt tot lage prestaties.
Alleen door de rewriteBatchedStatements-parameter op true te zetten, helpt de driver je om SQL in bulk uit te voeren (jdbc:mysql://ip:port/db?)rewriteBatchedStatements=waar)
allowMultiQueries
Toestemming om te gebruiken'; ' Scheidt meerdere queries (waar/onwaar) in één stelling. De standaardwaarde is "false", wat geen invloed heeft op de addBatch() en executeBatch() methoden, die afhankelijk zijn van rewriteBatchStatements.
Wanneer MySQL verbinding maakt met een database, voeg dan de instructie toe:"allowMultiQueries=waarDe rol van ":
1. Je kunt een puntkomma achter de SQL-instructie dragen om multi-statements uitvoering te bereiken. 2. Batchverwerking kan worden uitgevoerd en meerdere SQL-instructies kunnen tegelijkertijd worden uitgegeven.
sslMode
Standaard zijn netwerkverbindingen SSL-versleuteld; Deze eigenschap stelt je in staat de beveiligde verbinding uit te schakelen of een ander beveiligingsniveau te selecteren. De volgende waarden zijn toegestaan: "GEDEACTIVEERD" - een niet-versleutelde verbinding wordt tot stand gebracht; "PREFERRED" - (standaard) Als de server versleutelde verbindingen inschakelt, wordt er een versleutelde verbinding tot stand gebracht, anders valt deze terug op een niet-versleutelde verbinding; "VEREIST" - Zet een veilige verbinding tot stand als de server deze heeft ingeschakeld, anders faalt het; "VERIFY_CA" - Vergelijkbaar met "VEREIST", maar valideert daarnaast het server TLS-certificaat tegen het geconfigureerde certificaat van de certificaatautoriteit (CA); "VERIFY_IDENTITY" - zoals "VERIFY_CA",
Deze attribuut vervangt de verouderde oude attributen "useSSL", "requireSSL" en "verifyServerCertificate", die nog steeds worden geaccepteerd maar worden omgezet naar de waarde van "sslMode" als "sslMode" niet expliciet is ingesteld: "useSSL=false" wordt omgezet naar "sslMode=disabled"; {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"} wordt vertaald als "sslMode=PREFERRED"; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"} wordt vertaald als "sslMode=REQUIRED"; {"useSSL=true" EN "verifyServerCertificate=true"} wordt vertaald als "De standaardinstelling voor "sslMode" is "PREFERRED", wat gelijkstaat aan de traditionele "useSSL=true", "requireSSL=false" en "verifyServerCertificate=false" instellingen, die hetzelfde zijn als de Connector/ De standaardinstellingen voor J 8.0.12 en eerdere versies zijn in sommige gevallen anders. Applicaties die de oude attributen blijven gebruiken en vertrouwen op hun oude standaardinstellingen, moeten worden beoordeeld. De standaardinstelling voor "sslMode" is "PREFERRED", wat gelijkwaardig is aan de traditionele instellingen van "useSSL=true", "reproreSSL=false" en "verifyServerCertificate=false", wat in sommige gevallen verschilt van de standaardinstelling voor Connector/J 8.0.12 en eerder. Applicaties die de oude attributen blijven gebruiken en vertrouwen op hun oude standaardinstellingen, moeten worden beoordeeld. In sommige gevallen is het 12 uur of eerder. Applicaties die de oude attributen blijven gebruiken en vertrouwen op hun oude standaardinstellingen, moeten worden beoordeeld. In sommige gevallen is het 12 uur of eerder. Applicaties die de oude attributen blijven gebruiken en vertrouwen op hun oude standaardinstellingen, moeten worden beoordeeld.
Als "sslMode" expliciet is ingesteld, wordt de oude eigenschap genegeerd. Als "sslMode" of "useSSL" niet expliciet is ingesteld, wordt de standaardinstelling "sslMode=PREFERRED" toegepast.
JDBC-instellingen om beveiligde verbindingen uit te schakelen:sslmode=uitgeschakeld
|