Zoptymalizowano wydajność konfiguracji rewriteBatchedStatements, allowPublicKeyRetrieval, allowMultiQuery oraz sslMode w Java JDBC.
Dokumentacja wszystkich właściwości konfiguracji jdbc:Logowanie do linku jest widoczne.
Recenzja:
permitowPublicKeyRetrieval
Podczas korzystania z MySQL 8.0, po ponownym uruchomieniu aplikacji, zostajesz poproszony o com.mysql.jdbc.exceptions.jdbc4.MySQL OnTransientConnectionException: Pobieranie klucza publicznego jest niedozwolone
Najprostszym obejściem jest dodanie go po połączeniuallowPublicKeyRetrieval=true
Jeśli użytkownik korzysta z uwierzytelniania sha256_password, hasło musi być chronione podczas transportu za pomocą protokołu TLS, ale jeśli klucz publiczny RSA nie jest dostępny, można użyć klucza publicznego dostarczonego przez serwer; Publiczny klucz RSA serwera można określić w połączeniu za pomocą ServerRSAPublicKeyFile lub parametru AllowPublicKeyRetrieval=True, aby umożliwić klientowi uzyskanie klucza publicznego z serwera; Należy jednak zauważyć, że AllowPublicKeyRetrieval=True może powodować uzyskiwanie haseł w formacie jawnym przez złośliwe agenty poprzez ataki man-in-the-middle (MITM), dlatego jest domyślnie wyłączone i musi być wyraźnie włączone.
rewriteBatchedStatements
Aby osiągnąć wysokowydajne wstawianie wsadowe, dodając parametr rewriteBatchedStatements do adresu URL połączenia JDBC w MySQL i zapewniając, że wersja sterownika 5.1.13 lub nowsza jest gwarantowana. Domyślnie sterownik JDBC MySQL ignoruje instrukcje executeBatch(), dzieli zestaw instrukcji SQL, które spodziewamy się wykonać w partiach, i wysyła je do bazy MySQL pojedynczo. Tylko ustawiając parametr rewriteBatchedStatements na true, sterownik wykona SQL w partiach Ta opcja jest również ważna dla INSERT/UPDATE/DELETE
Domyślnie sterownik MySQL Jdbc ignoruje polecenie executeBatch(), rozdziela zestaw instrukcji SQL, które spodziewamy się wykonać w partiach, i wysyła je do bazy MySQL pojedynczo, co bezpośrednio powoduje niską wydajność.
Tylko ustawiając parametr rewriteBatchedStatements na true, sterownik pomoże ci wykonać SQL hurtowo (jdbc:mysql://ip:port/db?)rewriteBatchedStatements=true)
permitMultiQueries
Zgoda na użycie'; ' Rozdziela wiele zapytań (prawda/fałsz) w jednym zdaniu. Domyślna wartość to "false", co nie wpływa na metody addBatch() i executeBatch(), które zależą od rewriteBatchStatements.
Gdy MySQL łączy się z bazą danych, dodaj zdanie:"allowMultiQueries=trueRola ":
1. Możesz przenosić średnik po instrukcji SQL, aby wykonać wiele instrukcji. 2. Można wykonywać przetwarzanie wsadowe oraz jednocześnie wydać wiele pociągów SQL.
sslMode
Domyślnie połączenia sieciowe są szyfrowane przez SSL; Ta funkcja pozwala wyłączyć bezpieczne połączenie lub wybrać inny poziom zabezpieczeń. Dozwolone są następujące wartości: "DISABLED" – nawiązywane jest nieszyfrowane połączenie; "PREFERRED" - (domyślnie) Jeśli serwer umożliwia szyfrowane połączenia, nawiązywane jest szyfrowane połączenie, w przeciwnym razie wraca ono do nieszyfrowanego połączenia; "WYMAGANE" – Nawiązanie bezpiecznego połączenia, jeśli serwer je włączył, w przeciwnym razie nie dochodzi do awarii; "VERIFY_CA" – Podobne do "WYMAGANE", ale dodatkowo waliduje certyfikat TLS serwera względem certyfikatu skonfigurowanego urzędu certyfikacyjnego (CA); "VERIFY_IDENTITY" – jak "VERIFY_CA",
Ten atrybut zastępuje przestarzałe atrybuty "useSSL", "requireSSL" i "verifyServerCertificate", które są nadal akceptowane, ale przekształcane na wartość "sslMode", jeśli "sslMode" nie jest ustawione wprost: "useSSL=false" jest konwertowane na "sslMode=disabled"; {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"} jest tłumaczone jako "sslMode=PREFERRED"; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"} jest tłumaczone jako "sslMode=REQUIRED"; {"useSSL=true" Oraz "verifyServerCertificate=true"} tłumaczy się jako "Domyślne ustawienie dla "sslMode" to "PREFERRED", co jest równoważne tradycyjnym ustawieniom "useSSL=true", "requireSSL=false" oraz "verifyServerCertificate=false", które są takie same jak w Connector/ Domyślne ustawienia dla wersji J 8.0.12 i wcześniejszych są w niektórych przypadkach inne. Aplikacje, które nadal korzystają ze starych atrybutów i polegają na swoich domyślnych ustawieniach, powinny zostać przejrzane. Domyślne ustawienie dla "sslMode" to "PREFERRED", które jest równoważne tradycyjnym ustawieniom "useSSL=true", "requireSSL=false" oraz "verifyServerCertificate=false", co różni się od domyślnego ustawienia dla Connector/J 8.0.12 i wcześniejszych w niektórych przypadkach. Aplikacje, które nadal korzystają ze starych atrybutów i polegają na swoich domyślnych ustawieniach, powinny zostać przejrzane. W niektórych przypadkach jest to 12 lat lub wcześniej. Aplikacje, które nadal korzystają ze starych atrybutów i polegają na swoich domyślnych ustawieniach, powinny zostać przejrzane. W niektórych przypadkach jest to 12 lat lub wcześniej. Aplikacje, które nadal korzystają ze starych atrybutów i polegają na swoich domyślnych ustawieniach, powinny zostać przejrzane.
Jeśli "sslMode" jest ustawione jawnie, stara właściwość jest ignorowana. Jeśli "sslMode" lub "useSSL" nie jest ustawione jawnie, stosuje się domyślne ustawienie "sslMode=PREFERRED".
Ustawienia JDBC do wyłączania bezpiecznych połączeń:sslmode=wyłączony
|