2016년 12월 15일 목요일
wait_timeout관련
*디폴트 타임아웃 확인
show variables like '%timeout';
*정보 설명
connect_timeout : MySQL 서버 접속시에 접속실패를 메시지를 보내기까지 대기하는 시간
delayed_insert_timeout : insert시 delay될 경우 대기하는 시간
innodb_lock_wait_timeout : innodb에 transaction 처리중 lock이 걸렸을 시 롤백 될때까지 대기하는 시간.
innodb는 자동으로 데드락을 검색해서 롤백시킨다.
innodb_rollback_on_timeout : innodb의 마지막 구문을 롤백시킬지 결정하는 파라미터.
timeout은 진행중인 transaction을 중단하고 전체 transaction을 롤백하는 과정에서 발생한다.
interactive_timeout : 활동중인 커넥션이 닫히기 전까지 서버가 대기하는 시간
net_read_timeout : 서버가 클라이언트로부터 데이터를 읽어들이는 것을 중단하기까지 대기하는 시간
net_write_timeout : 서버가 클라이언트에 데이터를 쓰는 것을 중단하기까지 대기하는 시간
slave_net_timeout : 마스터/슬레이브로 서버가 클라이언트로부터 데이터를 읽어들이는 것을 중단하기까지 대기하는 시간
table_lock_wait_timeout : 테이블 락을 중단하기까지 대기하는 시간
wait_timeout : 활동하지 않는 커넥션을 끊을때까지 서버가 대기하는 시간
* Solution.
1) autoreconnect=true // 트랜잭션 오류 가능성있음
- 커넥션이 끊어지면 자동 재접속
jdbc:mysql://(host):(port)/(db_name)?autoReconnect=true
ex) jdbc:mysql://127.0.0.1:3306/seoulnetworks?autoReconnect=true
2) validationQuery 사용 //추천
-Mysql
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
<property name="validationQuery" value="select 1"/>
</bean>
- Oracle
validationQuery="select 1 from dual"
피드 구독하기:
댓글 (Atom)
댓글 없음:
댓글 쓰기