Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 13228|Yanıt: 3

[Kaynak] Java JDBC'nin yeniden yazdığı BatchedStatements, allowPublicKeyRetrieval...

[Bağlantıyı kopyala]
2022-2-11 tarihinde yayınlandı 13:59:18 | | |
Java JDBC'nin rewriteBatchedStatements, allowPublicKeyRetrieval, allowMultiQueries ve sslMode yapılandırmalarının performansını optimize etti.

jdbc Tüm Yapılandırma Özellikleri Dokümantasyonu:Bağlantı girişi görünür.

Eleştiri:

.NET/C# MySQL veritabanları için SslMode performansını optimize etti
https://www.itsvse.com/thread-9956-1-1.html

allowPublicKeyRetrieval

MySQL 8.0 kullanıldığında, uygulamayı yeniden başlattıktan sonra com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Açık Anahtar Alımına izin verilmiyor

En kolay dolaşma yolu bağlantıdan sonra eklemekallowPublicKeyRetrieval=true

Kullanıcı sha256_password kimlik doğrulaması kullanırsa, şifre geçiş sırasında TLS protokolü kullanılarak korunmalıdır; ancak RSA açık anahtarı mevcut değilse, sunucu tarafından sağlanan açık anahtar kullanılabilir; Sunucunun RSA açık anahtarı, bağlantıda ServerRSAPublicKeyFile veya istemcinin sunucudan açık anahtarı almasını sağlamak için AllowPublicKeyRetrieval=True parametresi aracılığıyla tanımlanabilir; Ancak, AllowPublicKeyRetrieval=True'nin kötü amaçlı ajanların ortada man-in-the-middle saldırıları (MITM) yoluyla açık metin şifreleri elde etmesine neden olabileceği belirtilmelidir; bu nedenle varsayılan olarak kapalıdır ve açıkça etkinleştirilmelidir.



rewriteBatchedStatements

Yüksek performanslı toplu ekleme sağlamak için, MySQL'deki JDBC bağlantısının URL'sine rewriteBatchedStatements parametresi ekleyerek ve sürücü sürüm 5.1.13 veya daha sonrasının garanti altına alındığından emin olun. Varsayılan olarak, MySQL JDBC sürücüsü executeBatch() ifadesini görmezden gelir, toplu olarak çalıştırmayı beklediğimiz SQL ifadelerini böler ve bunları teker teker MySQL veritabanına gönderir.
Sürücü yalnızca rewriteBatchedStatements parametresini true olarak ayarlayarak SQL'i toplu olarak çalıştırır
Bu seçenek INSERT/UPDATE/DELETE için de geçerlidir

Varsayılan olarak, MySQL Jdbc sürücüsü executeBatch() ifadesini görmezden gelir, toplu olarak çalıştırmayı beklediğimiz SQL ifadelerini parçalar ve bunları teker teker MySQL veritabanına gönderir; bu da doğrudan düşük performansa neden olur.

Sadece rewriteBatchedStatements parametresini true olarak ayarladığınızda, sürücü SQL'i toplu olarak çalıştırmanıza yardımcı olur (jdbc:mysql://ip:port/db?)rewriteBatchedStatements=true)


allowMultiQueries

Kullanım izni'; ' Birden fazla sorguyu (doğru/yanlış) tek bir ifadede ayırır. Varsayılan değer "false"dir; bu da addBatch() ve executeBatch() yöntemlerini etkilemez; bu yöntemler rewriteBatchStatements'a bağlıdır.

MySQL bir veritabanına bağlandığında, şu ifadeyi ekleyin:allowMultiQueries=true":

1. SQL ifadesinden sonra noktalı virgül taşıyarak çoklu ifade yürütmesini sağlayabilirsiniz.
2. Toplu işlem yapılabilir ve aynı anda birden fazla SQL açıklaması yayımlanabilir.


sslMode

Varsayılan olarak, ağ bağlantıları SSL şifrelidir; Bu özellik, güvenli bağlantıyı kapatmanıza veya farklı bir güvenlik seviyesi seçmenize olanak tanır. Aşağıdaki değerlere izin verilir: "DISABLED" - şifresiz bir bağlantı kurulur; "TERCIH" - (varsayılan) Sunucu şifreli bağlantıları etkinleştirirse, şifreli bağlantı kurulur, aksi takdirde şifrelenmemiş bağlantıya geri döner; "GEREKLİL" - Sunucu etkinleştirdiyse güvenli bir bağlantı kurun, aksi takdirde bağlantı başarısız olur; "VERIFY_CA" - "GEREKLİL"e benzer bir şekilde, ayrıca sunucu TLS sertifikasını yapılandırılmış sertifika otoritesi (CA) sertifikasına karşı doğrular; "VERIFY_IDENTITY" - "VERIFY_CA" gibi,

Bu öznitelik, eski özellikleri kullanan "useSSL", "requireSSL" ve "verifyServerCertificate" özelliklerini yerine koyar; bu nitelikler hâlâ kabul edilir ancak "sslMode" açıkça ayarlanmazsa "sslMode" değerine dönüştürülür: "useSSL=false" "sslMode=disabled" olarak dönüştürülür; {"useSSL=true", "requireSSL=false", "verifyServerCertificate=false"} "sslMode=PREFERRED" şeklinde çevrilir; {"useSSL=true", "requireSSL=true", "verifyServerCertificate=false"} "sslMode=REQUIRED" şeklinde çevrilir; {"useSSL=true" VE "verifyServerCertificate=true"} "sslMode" için varsayılan ayar "PREFERRED"dir; bu da geleneksel "useSSL=true", "requireSSL=false" ve "verifyServerCertificate=false" ayarlarına eşdeğerdir ve bu ayarlar Connector ile aynıdır. J 8.0.12 ve daha önceki sürümler için varsayılan ayarlar bazı durumlarda farklıdır. Eski nitelikleri kullanmaya devam eden ve eski varsayılanlarına dayanan uygulamalar incelenmelidir. "sslMode" için varsayılan ayar "PREFERRED"dir; bu, bazı durumlarda Connector/ J 8.0.12 ve daha önceki sürümlerin varsayılan ayarından farklı, "useSSL=true", "requireSSL=false" ve "verifyServerCertificate=false" gibi geleneksel ayarlara eşdeğerdir. Eski nitelikleri kullanmaya devam eden ve eski varsayılanlarına dayanan uygulamalar incelenmelidir. Bazı durumlarda 12 veya daha erken yaştadır. Eski nitelikleri kullanmaya devam eden ve eski varsayılanlarına dayanan uygulamalar incelenmelidir. Bazı durumlarda 12 veya daha erken yaştadır. Eski nitelikleri kullanmaya devam eden ve eski varsayılanlarına dayanan uygulamalar incelenmelidir.

"sslMode" açıkça ayarlanmışsa, eski özellik göz ardı edilir. "sslMode" veya "useSSL" açıkça ayarlanmadıysa, varsayılan ayar "sslMode=PREFERRED" uygulanır.

Güvenli bağlantıları kapatmak için JDBC ayarları:SSLMODE=devre dışı bırakıldı




Önceki:Linux'ta dosyaları toplu olarak nasıl yeniden adlandırırım
Önümüzdeki:Tayvanlı kullanıcıların kayıt olmasını nasıl kısıtlayabiliriz, istedikleri zaman bilgi paylaşır ve nasıl yazacakları konusunda tavsiye isterler.
 Ev sahibi| 2022-2-11 tarihinde 14:04:39 tarihinde yayınlandı |
Spring veritabanı bağlantı dizisi

2022-2-13 tarihinde 16:31:57 tarihinde yayınlandı |
Öğrenmeyi öğrenin.
 Ev sahibi| 2024-4-25 08:38:32 tarihinde yayınlandı |
c# istisna
System.InvalidOperationException: An exception has been raised that is likely due to a transient failure. Consider enabling transient error resiliency by adding 'EnableRetryOnFailure()' to the 'UseMySql' call.
---> MySqlConnector.MySqlException (0x80004005): Kimlik doğrulama yöntemi 'caching_sha2_password' başarısız oldu. Ya güvenli bir bağlantı kullanın, sunucunun RSA açık anahtarını ServerRSAPublicKeyFile ile belirtin ya da AllowPublicKeyRetrieval=True ayarlayın.


çözüm

Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com