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:
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ı
|