Βελτιστοποιήθηκε η απόδοση των διαμορφώσεων rewriteBatchedStatements, allowPublicKeyRetrieval, allowMultiQueries και sslMode της Java JDBC.
jdbc Τεκμηρίωση όλων των ιδιοτήτων διαμόρφωσης:Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Αναθεώρηση:
allowPublicKeyRetrieval
Όταν χρησιμοποιείτε MySQL 8.0, μετά την επανεκκίνηση της εφαρμογής, θα σας ζητηθεί com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Δεν επιτρέπεται η ανάκτηση δημόσιου κλειδιού
Η πιο εύκολη λύση είναι να το προσθέσετε μετά τη σύνδεσηallowPublicKeyRetrieval=true
Εάν ο χρήστης χρησιμοποιεί sha256_password έλεγχο ταυτότητας, ο κωδικός πρόσβασης πρέπει να προστατεύεται κατά τη μεταφορά χρησιμοποιώντας το πρωτόκολλο TLS, αλλά εάν το δημόσιο κλειδί RSA δεν είναι διαθέσιμο, μπορεί να χρησιμοποιηθεί το δημόσιο κλειδί που παρέχεται από τον διακομιστή. Το δημόσιο κλειδί RSA του διακομιστή μπορεί να καθοριστεί στη σύνδεση μέσω του ServerRSAPublicKeyFile ή της παραμέτρου AllowPublicKeyRetrieval=True για να επιτρέψει στον πελάτη να αποκτήσει το δημόσιο κλειδί από τον διακομιστή. Ωστόσο, θα πρέπει να σημειωθεί ότι το AllowPublicKeyRetrieval=True μπορεί να προκαλέσει κακόβουλους παράγοντες να αποκτήσουν κωδικούς πρόσβασης απλού κειμένου μέσω επιθέσεων man-in-the-middle (MITM), επομένως είναι απενεργοποιημένο από προεπιλογή και πρέπει να ενεργοποιηθεί ρητά.
ξαναγράφωΟμαδοποιημένεςΔηλώσεις
Προκειμένου να επιτευχθεί εισαγωγή παρτίδας υψηλής απόδοσης προσθέτοντας την παράμετρο rewriteBatchedStatements στη διεύθυνση URL της σύνδεσης JDBC στη MySQL και διασφαλίζοντας ότι η έκδοση του προγράμματος οδήγησης 5.1.13 ή νεότερη είναι εγγυημένη. Από προεπιλογή, το πρόγραμμα οδήγησης MySQL JDBC αγνοεί τη δήλωση executeBatch(), χωρίζει ένα σύνολο εντολών SQL που αναμένουμε να εκτελεστούν σε παρτίδες και τις στέλνει στη βάση δεδομένων MySQL μία προς μία. Μόνο ορίζοντας την παράμετρο rewriteBatchedStatements σε true ο οδηγός θα εκτελέσει την SQL σε παρτίδες Αυτή η επιλογή ισχύει επίσης για INSERT/UPDATE/DELETE
Από προεπιλογή, το πρόγραμμα οδήγησης MySQL Jdbc αγνοεί τη δήλωση executeBatch(), διασπά ένα σύνολο εντολών SQL που αναμένουμε να εκτελέσουμε σε παρτίδες και τις στέλνει στη βάση δεδομένων MySQL μία προς μία, γεγονός που προκαλεί άμεσα χαμηλή απόδοση.
Μόνο ορίζοντας την παράμετρο rewriteBatchedStatements σε true, ο οδηγός θα σας βοηθήσει να εκτελέσετε SQL μαζικά (jdbc:mysql://ip:port/db?)ξαναγράφωBatchedStatements=true)
allowMultiQueries
Άδεια χρήσης»· ' Διαχωρίζει πολλά ερωτήματα (αληθές/ψευδές) σε μία πρόταση. Η προεπιλεγμένη τιμή είναι "false", η οποία δεν επηρεάζει τις μεθόδους addBatch() και executeBatch(), οι οποίες εξαρτώνται από το rewriteBatchStatements.
Όταν η MySQL συνδέεται σε μια βάση δεδομένων, προσθέστε τη δήλωση:"allowMultiQueries=trueΟ ρόλος του ":
1. Μπορείτε να μεταφέρετε ένα ερωτηματικό μετά τη δήλωση SQL για να επιτύχετε εκτέλεση πολλαπλών δηλώσεων. 2. Μπορεί να πραγματοποιηθεί μαζική επεξεργασία και να εκδοθούν ταυτόχρονα πολλαπλές δηλώσεις SQL.
sslMode
Από προεπιλογή, οι συνδέσεις δικτύου είναι κρυπτογραφημένες SSL. Αυτή η ιδιότητα σάς επιτρέπει να απενεργοποιήσετε την ασφαλή σύνδεση ή να επιλέξετε διαφορετικό επίπεδο ασφάλειας. Επιτρέπονται οι ακόλουθες τιμές: "DISABLED" - δημιουργείται μια μη κρυπτογραφημένη σύνδεση. "PREFERRED" - (προεπιλογή) Εάν ο διακομιστής ενεργοποιήσει κρυπτογραφημένες συνδέσεις, δημιουργείται μια κρυπτογραφημένη σύνδεση, διαφορετικά επιστρέφει σε μια μη κρυπτογραφημένη σύνδεση. "ΑΠΑΙΤΕΙΤΑΙ" - Δημιουργήστε μια ασφαλή σύνδεση εάν ο διακομιστής την έχει ενεργοποιήσει, διαφορετικά αποτυγχάνει. "VERIFY_CA" - Παρόμοιο με το "ΑΠΑΙΤΕΙΤΑΙ", αλλά επιπλέον επικυρώνει το πιστοποιητικό TLS διακομιστή σε σχέση με το πιστοποιητικό της διαμορφωμένης αρχής έκδοσης πιστοποιητικών (CA). "VERIFY_IDENTITY" - όπως "VERIFY_CA",
Αυτό το χαρακτηριστικό αντικαθιστά τα παρωχημένα παλιά χαρακτηριστικά "useSSL", "requireSSL" και "verifyServerCertificate", τα οποία εξακολουθούν να γίνονται αποδεκτά αλλά μετατρέπονται στην τιμή του "sslMode" εάν το "sslMode" δεν έχει οριστεί ρητά: το "useSSL=false" μετατρέπεται σε "sslMode=disabled". {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"} μεταφράζεται ως "sslMode=PREFERRED"; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"} μεταφράζεται ως "sslMode=REQUIRED"; {"useSSL=true" ΚΑΙ το "verifyServerCertificate=true"} μεταφράζεται ως "Η προεπιλεγμένη ρύθμιση για το "sslMode" είναι "PREFERRED", η οποία είναι ισοδύναμη με τις παραδοσιακές ρυθμίσεις "useSSL=true", "requireSSL=false" και "verifyServerCertificate=false", οι οποίες είναι ίδιες με τις ρυθμίσεις Connector/ Οι προεπιλεγμένες ρυθμίσεις για το J 8.0.12 και παλαιότερες εκδόσεις είναι διαφορετικές σε ορισμένες περιπτώσεις. Οι εφαρμογές που συνεχίζουν να χρησιμοποιούν τα παλιά χαρακτηριστικά και βασίζονται στις παλιές προεπιλογές τους θα πρέπει να αναθεωρηθούν. Η προεπιλεγμένη ρύθμιση για το "sslMode" είναι "PREFERRED", η οποία είναι ισοδύναμη με τις παραδοσιακές ρυθμίσεις των "useSSL=true", "requireSSL=false" και "verifyServerCertificate=false", η οποία είναι διαφορετική από την προεπιλεγμένη ρύθμιση για το Connector/ J 8.0.12 και παλαιότερα σε ορισμένες περιπτώσεις. Οι εφαρμογές που συνεχίζουν να χρησιμοποιούν τα παλιά χαρακτηριστικά και βασίζονται στις παλιές προεπιλογές τους θα πρέπει να αναθεωρηθούν. Σε ορισμένες περιπτώσεις είναι 12 ή νωρίτερα. Οι εφαρμογές που συνεχίζουν να χρησιμοποιούν τα παλιά χαρακτηριστικά και βασίζονται στις παλιές προεπιλογές τους θα πρέπει να αναθεωρηθούν. Σε ορισμένες περιπτώσεις είναι 12 ή νωρίτερα. Οι εφαρμογές που συνεχίζουν να χρησιμοποιούν τα παλιά χαρακτηριστικά και βασίζονται στις παλιές προεπιλογές τους θα πρέπει να αναθεωρηθούν.
Εάν το "sslMode" έχει οριστεί ρητά, η παλιά ιδιότητα αγνοείται. Εάν το "sslMode" ή το "useSSL" δεν έχει οριστεί ρητά, εφαρμόζεται η προεπιλεγμένη ρύθμιση "sslMode=PREFERRED".
Ρυθμίσεις JDBC για απενεργοποίηση ασφαλών συνδέσεων:sslmode=απενεργοποιημένο
|