====== MariaDB JDBC ====== * [[https://mariadb.com/kb/en/library/about-mariadb-connector-j/|About MariaDB Connector/J - MariaDB Knowledge Base]] * [[database:mysql:jdbc|MySQL JDBC]] 참조 * [[database:mariadb:mariadb4j|MariaDB4j]] ===== Timeout ===== JDBC URL로 타임아웃 지정 * ''connectTimeout=millis'' * ''socketTimeout=millis'' * [[https://mariadb.com/kb/en/library/server-system-variables/#max_statement_time|max_statement_time]] ''sessionVariables=max_statement_time=seconds'' : connection base Query Timeout ===== Log ===== * ''log=true|false'' : [[java:slf4j|Slf4j]] 필요 * ''profileSql=true|false'' * [[java:slf4j|Slf4j]] 의존성 필요. * ''org.mariadb.jdbc'' Log Level ''TRACE'' 설정필요. -- logback.xml ===== useSSL=false ===== * [[https://mariadb.com/kb/en/secure-connections-overview/|Secure Connections Overview - MariaDB Knowledge Base]] * ''useSSL=false|false'' 로 항상 원하는 상태를 명시할것. ===== ===== * [[https://mariadb.com/kb/en/option-batchmultisend-description/|useBatchMultiSend]] * ''useBatchMultiSend'' * ''useBatchMultiSendNumber'' * ''rewriteBatchedStatements'' * TODO 위 값들 간의 관계 정리. ===== 주의 ===== * MariaDB JDBC 드라이버 2.2.5 이하 버전에서 replication master/slave 변경시에 write/read 커넥션이 반대로 맺어지는 경우가 있음. 2.2.5 이상 버전 사용할 것. * MariaDB JDBC 드라이버 2.2.2 이하 버전에 [[https://jira.mariadb.org/browse/CONJ-583|Connection.isValid() 실행시에 timeout을 지정하지 않는 문제]]가 있음. 2.2.3 이상 버전을 사용할 것. * 2.2.2 이하 버전을 사용할 경우 DB Cluster failover 시에 기존 잘못된 서버로 연결돼 있는 커넥션에 ''Connection.isValid()'' 호출이 블록킹 되면서 오랜 시간이 걸리게 됨. * Aurora Cluster처럼 DB Clustering 사용시에 무조건 ''testOnBorrow'' 혹은 이에 해당하는 DB Connection Pool 설정을 할 것. 그래야 failover가 자연스럽게 이뤄질 수 있음.