사용자 도구

사이트 도구


database:mysql:jdbc

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
database:mysql:jdbc [2022/02/25 12:19]
kwon37xi [Replication JDBC Driver]
database:mysql:jdbc [2024/01/16 09:53] (현재)
kwon37xi [sessionVariables]
줄 41: 줄 41:
   * 8.0 드라이버 부터는 ''sslMode''프라퍼티로 변경된다.   * 8.0 드라이버 부터는 ''sslMode''프라퍼티로 변경된다.
   * ''useSSL=false|false'', ''sslMode=DISABLED'' 로 항상 원하는 상태를 명시할것.   * ''useSSL=false|false'', ''sslMode=DISABLED'' 로 항상 원하는 상태를 명시할것.
- 
  
 ==== Datetime 0 ==== ==== Datetime 0 ====
줄 55: 줄 54:
  
 ===== Replication JDBC Driver ===== ===== Replication JDBC Driver =====
-  * 계속 사용해본 결과 **Replication Driver는 사용하지 않는 것이 좋겠다**.+  * 계속 사용해본 결과 **Replication Driver는 사용하지 않는 것이 좋겠다 -> 2023년 현재 최신 드라이버는 괜찮을 수 있음.**.
     * Java 사용시에는 [[java:jdbc:replication|Java JDBC Replication Connection Pool(DataSource)]] 을 참조한다.     * Java 사용시에는 [[java:jdbc:replication|Java JDBC Replication Connection Pool(DataSource)]] 을 참조한다.
     * read/write 중 한쪽작업으로 몰릴 경우 Connection Pool입장에서는 어쨌든 사용중인 커넥션이므로 ping 쿼리가 다른쪽으로는 날라가지 않아서 간헐적으로 사용되는 커넥션이 끊기는 일이 발생한다. (**근본적으로 ping 없이 connection 유지 시간을 끊기는 시간보다 작게 잡는게 더 좋을것 같긴 하다**)     * read/write 중 한쪽작업으로 몰릴 경우 Connection Pool입장에서는 어쨌든 사용중인 커넥션이므로 ping 쿼리가 다른쪽으로는 날라가지 않아서 간헐적으로 사용되는 커넥션이 끊기는 일이 발생한다. (**근본적으로 ping 없이 connection 유지 시간을 끊기는 시간보다 작게 잡는게 더 좋을것 같긴 하다**)
줄 97: 줄 96:
   * MySQL이 생성하는 모든 쿼리의 로그를 남길 수 있다.   * MySQL이 생성하는 모든 쿼리의 로그를 남길 수 있다.
   * ''logger=com.mysql.jdbc.log.Slf4JLogger'' : 로거 지정   * ''logger=com.mysql.jdbc.log.Slf4JLogger'' : 로거 지정
-  * ''profileSQL=true''이면 로그로 모든 쿼리를 남기고 성능 지표도 함께 표시한다.+  * ''profileSQL=true''이면 로그로 모든 쿼리를 남기고 성능 지표도 함께 표시한다. 정확히는 프로파일링 하라라는 뜻이고, ''profilerEventHandler''가 그걸 로그로 남기는 역할을 하는 듯 보임. 
 +  * [[https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-connp-props-debugging-profiling.html|MySQL :: MySQL Connector/J 8.0 Developer Guide :: 6.3.14 Debugging/Profiling]] 
 +  * ''logSlowQueries=true'' 및 하위 설정으로 slow query 자동 설정가능 
 +    * ''slowQueryThresholdMillis'' 
 +    * ''explainSlowQueries=true'' 
 + 
 +==== sessionVariables ==== 
 +  * [[https://dev.mysql.com/doc/connector-j/en/connector-j-connp-props-session.html#cj-conn-prop_sessionVariables|MySQL :: MySQL Connector/J Developer Guide :: 6.3.3 Session]] 
 +  * connection 을 맺을 때마다 세션에 대해 ''SET [SESSION] xxx=yyy'' 형태로 설정하는 값들을 JDBC URL에 지정 가능하다. 
 +  * https://stackoverflow.com/a/62582767 
 +=== 8.x === 
 +<code> 
 +jdbc:mysql://[host:port]/[database]/?sessionVariables=&&key1=value1,key2=value2 
 +</code>
  
 +=== 7.x 이전 ===
 +<code>
 +jdbc:mysql://[host:port]/[database]/?sessionVariables=key1=value1,key2=value2
 +</code>
 ===== allowMultiQueries ===== ===== allowMultiQueries =====
   * MySQL JDBC는 기본적으로 하나의 SQL 실행 요청에 여러 SQL을 실행하는 것을 금지하고 있다.(세미콜론(;)으로 여러 SQL 전송 불가)   * MySQL JDBC는 기본적으로 하나의 SQL 실행 요청에 여러 SQL을 실행하는 것을 금지하고 있다.(세미콜론(;)으로 여러 SQL 전송 불가)
database/mysql/jdbc.1645759176.txt.gz · 마지막으로 수정됨: 2022/02/25 12:19 저자 kwon37xi