|
|
2022-2-11 13:59:18에 게시됨
|
|
|

Java JDBC의 rewriteBatchedStatements, allowPublicKeyRetrieval, allowMultiQueries, sslMode 구성 성능을 최적화했습니다.
jdbc 모든 구성 속성 문서:하이퍼링크 로그인이 보입니다.
복습:
allowPublicKeyRetrieval
MySQL 8.0을 사용할 때 앱을 재시작 후 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: 공개키 검색이 허용되지 않음 안내가 나타납니다
가장 쉬운 우회 방법은 연결 후에 추가하는 것입니다allowPublicKeyRetrieval=true
사용자가 sha256_password 인증을 사용할 경우, 전송 중 TLS 프로토콜로 비밀번호를 보호해야 하지만, RSA 공개키가 없으면 서버가 제공하는 공개키를 사용할 수 있습니다; 서버의 RSA 공개키는 ServerRSAPublicKeyFile을 통해 연결 내에서 지정할 수 있으며, 클라이언트가 서버로부터 공개키를 얻을 수 있도록 AllowPublicKeyRetrieval=True 매개변수를 사용할 수 있습니다; 하지만 AllowPublicKeyRetrieval=True는 악의적 에이전트가 중간자 공격(MITM)을 통해 평문 비밀번호를 얻게 할 수 있으므로 기본적으로 비활성화되어 명시적으로 활성화되어야 합니다.
rewriteBatchedStatements
고성능 배치 삽입을 위해 MySQL의 JDBC 연결 URL에 rewriteBatchedStatements 매개변수를 추가하고, 드라이버 버전 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?)rewriteBatchedStatements=true)
allowMultiQueries
사용 허가'; ' 하나의 문장에서 여러 쿼리(참/거짓)를 분리합니다. 기본 값은 "false"이며, rewriteBatchStatements에 의존하는 addBatch() 및 executeBatch() 메서드에는 영향을 주지 않습니다.
MySQL이 데이터베이스에 연결될 때, 다음과 같은 문장을 추가하세요:allowMultiQueries=true":
1. SQL 문장 뒤에 세미콜론을 붙여 다중 문장 실행을 할 수 있습니다. 2. 배치 처리를 수행할 수 있으며 여러 SQL 문장을 동시에 발행할 수 있습니다.
ssl모드
기본적으로 네트워크 연결은 SSL 암호화되어 있습니다; 이 기능을 통해 보안 연결을 끌거나 다른 보안 수준을 선택할 수 있습니다. 허용되는 값은 다음과 같습니다: "DISABLED" - 암호화되지 않은 연결이 설정됨; "선호" - (기본값) 서버가 암호화된 연결을 활성화하면 암호화된 연결이 설정되고, 그렇지 않으면 암호화되지 않은 연결로 되돌아가; "필수" - 서버가 보안 연결을 활성화했을 때 이를 구축해야 하며, 그렇지 않으면 실패합니다; "VERIFY_CA" - "REQUIRED"와 유사하지만, 서버 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" 설정과 동등하며, 이는 커넥터/와 동일합니다. 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=disabled
|
이전의:리눅스에서 파일 이름을 배치별로 바꾸는 방법다음:대만 사용자들의 등록을 제한하는 방법, 자유롭게 정보를 게시하는 방법, 그리고 글쓰기 방법에 대한 조언 요청.
|