A optimizat performanța configurațiilor rewriteBatchedStatements, allowPublicKeyRetrieval, allowMultiQueries și sslMode ale Java JDBC.
Documentația tuturor proprietăților de configurare jdbc:Autentificarea cu hyperlink este vizibilă.
Recenzie:
allowPublicKeyRetrieval
Când folosești MySQL 8.0, după repornirea aplicației, ți se cere com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Recuperarea cheii publice nu este permisă
Cea mai simplă soluție este să o adaugi după conexiuneallowPublicKeyRetrieval=true
Dacă utilizatorul folosește sha256_password autentificare, parola trebuie protejată în tranzit folosind protocolul TLS, dar dacă cheia publică RSA nu este disponibilă, cheia publică furnizată de server poate fi folosită; Cheia publică RSA a serverului poate fi specificată în conexiune prin ServerRSAPublicKeyFile sau parametrul AllowPublicKeyRetrieval=True pentru a permite clientului să obțină cheia publică de la server; Totuși, trebuie menționat că AllowPublicKeyRetrieval=True poate determina agenții rău intenționați să obțină parole în text clar prin atacuri man-in-the-middle (MITM), astfel că este dezactivat implicit și trebuie activat explicit.
rewriteBatchedStatements
Pentru a realiza inserarea batch de înaltă performanță, adăugând parametrul rewriteBatchedStatements la URL-ul conexiunii JDBC în MySQL și asigurându-se că versiunea driverului 5.1.13 sau ulterioară este garantată. Implicit, driverul MySQL JDBC ignoră instrucțiunea executeBatch(), împarte un set de instrucțiuni SQL pe care ne așteptăm să le executăm în loturi și le trimite în baza de date MySQL una câte una. Doar setând parametrul rewriteBatchedStatements pe true driverul va executa SQL-ul în loturi Această opțiune este valabilă și pentru INSERT/UPDATE/DELETE
În mod implicit, driverul MySQL Jdbc ignoră instrucțiunea executeBatch(), descompune un set de instrucțiuni SQL pe care ne așteptăm să le executăm în loturi și le trimite una câte una către baza de date MySQL, ceea ce duce direct la performanță scăzută.
Doar setând parametrul rewriteBatchedStatements pe true, driverul te va ajuta să execuți SQL în masă (jdbc:mysql://ip:port/db?)rewriteBatchedStatements=true)
allowMultiQueries
Permisiunea de utilizare'; Separă mai multe interogări (adevărat/fals) într-o singură afirmație. Valoarea implicită este "false", ceea ce nu afectează metodele addBatch() și executeBatch(), care depind de rewriteBatchStatements.
Când MySQL se conectează la o bază de date, adaugă afirmația:allowMultiQueries=trueRolul lui ":
1. Poți purta un punct și virgulă după instrucțiunea SQL pentru a realiza execuția pe mai multe instrucțiuni. 2. Procesarea în loturi poate fi efectuată și mai multe instrucțiuni SQL pot fi emise simultan.
sslMode
În mod implicit, conexiunile de rețea sunt criptate SSL; Această proprietate îți permite să dezactivezi conexiunea securizată sau să selectezi un alt nivel de securitate. Următoarele valori sunt permise: "DEZACTIVAT" - se stabilește o conexiune necriptată; "PREFERAT" - (implicit) Dacă serverul permite conexiuni criptate, se stabilește o conexiune criptată, altfel revine la o conexiune necriptată; "OBLIGATORIU" - Stabilirea unei conexiuni securizate dacă serverul a activat-o, altfel eșuează; "VERIFY_CA" - Similar cu "REQUIRED", dar validează suplimentar certificatul TLS al serverului față de certificatul autorității de certificare (CA) configurat; "VERIFY_IDENTITY" - ca "VERIFY_CA",
Acest atribut înlocuiește vechile atribute învechite "useSSL", "requireSSL" și "verifyServerCertificate", care sunt încă acceptate, dar convertite în valoarea "sslMode" dacă "sslMode" nu este setat explicit: "useSSL=false" este convertit în "sslMode=disabled"; {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"} se traduce ca "sslMode=PREFERRED"; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"} se traduce ca "sslMode=REQUIRED"; {"useSSL=true" ȘI "verifyServerCertificate=true"} se traduce ca "Setarea implicită pentru "sslMode" este "PREFERRED", care este echivalentă cu setările tradiționale "useSSL=true", "requireSSL=false" și "verifyServerCertificate=false", care sunt aceleași cu Connector/ Setările implicite pentru J 8.0.12 și versiunile anterioare sunt diferite în unele cazuri. Aplicațiile care continuă să folosească atributele vechi și se bazează pe vechile lor valori implicite ar trebui revizuite. Setarea implicită pentru "sslMode" este "PREFERRED", care este echivalentă cu setările tradiționale "useSSL=true", "requireSSL=false" și "verifyServerCertificate=false", care diferă de setarea implicită pentru Connector/ J 8.0.12 și anterioare în unele cazuri. Aplicațiile care continuă să folosească atributele vechi și se bazează pe vechile lor valori implicite ar trebui revizuite. În unele cazuri este 12 sau mai devreme. Aplicațiile care continuă să folosească atributele vechi și se bazează pe vechile lor valori implicite ar trebui revizuite. În unele cazuri este 12 sau mai devreme. Aplicațiile care continuă să folosească atributele vechi și se bazează pe vechile lor valori implicite ar trebui revizuite.
Dacă "sslMode" este setat explicit, proprietatea veche este ignorată. Dacă "sslMode" sau "useSSL" nu sunt setate explicit, se aplică setarea implicită "sslMode=PREFERRED".
Setări JDBC pentru dezactivarea conexiunilor securizate:sslmode=dezactivat
|