mysql 데이터베이스 서버 상태 확인하기
데이터베이스의 환경변수값, 상태변수값을 조회하여 서버의 상황을 체크할 수 있다.
■ 환경변수 조회 : show variables
└> 환경변수값을 조정해서 mysql의 상태 제어 가능
■ 상태변수 조회 : show status
└> 상태변수값을 통해 mysql의 각종 상태(동작정보)를 확인 가능
<확인해보기>
■ 환경변수 조회
show variables 쿼리 결과이다.
각종 환경변수 값을 확인할 수 있다.
■ 상태변수 조회
show status 쿼리 결과이다.
각종 상태변수 값을 확인할 수 있다.
Thread 관련 상태변수 값 확인해보기
db서버의 thread 관련 상태변수 값을 확인해보자.
show status like '%Threads%';
나는 지금 DB connection을 맺는 실습을 하고 있다.
(DataSource를 통해서 connection 맺기)
DB connection을 맺으면 Thread가 생긴다.
그래서 위 상태변수중에
Threads_connected, Threads_created 값을 확인해볼 것이다.
(1) DB와 connection을 맺고나서 10초동안 connection 유지해보자.
(2) 10초가 지나면 connection이 끊긴다.
두 상황 (1), (2)에서 상태변수 Threads_connected, Threads_created가 어떤 값을 가지는지 확인해볼 것이다.
public void testFindAll() throws InterruptedException {
// DataSource를 통해 connection을 얻는 코드 존재
Thread.sleep(10000); // 이렇게 10초동안 connection 유지하는 틈을 타서 상태변수 값을 확인해볼 것임
}
■ connection 유지 중 Thread 관련 상태변수 값
■ connection이 풀린 뒤 Thread 관련 상태변수 값
[ 관찰 ]
>> Thread_connected 값 확인
connection 유지 중: 13
connection 풀린 후: 3
>> Thread_cached 값 확인
connection을 맺고 나서 캐시가 생겼다.
>> connection 맺는 코드를 여러번 실행하니까 Thread_created가 실행시마다 1씩 증가했다.
HikariCP는 기본적으로 10개의 connection을 pool에 채워넣는다고 한다.
>> 그래서 connection 맺은 후에 Threads_connected가 10개 늘어났구나!
참고) HikariDataSource의 Connection Pool
https://code-lab1.tistory.com/209
미리 10개를 pool에다가 만들어두고, connection이 필요할 때마다 pool에서 가져와 쓰는 것이다.
자세한 내용은 위 링크에서 공부할 수 있겠다.
+ 추가 학습 +
아래와 같이 HikariCP가 pool에 connection을 채우는 최소 개수를 100개로 늘려서 상태변수를 확인해보자.
HikariCP가 connection을 10개 말고 100개를 pool에 채우도록 설정하기
static class Config {
@Bean
public DataSource dataSource(){
var datasource = DataSourceBuilder.create()
.url("jdbc:mysql://localhost/order_mgmt")
.username("root")
.password("root1234!")
.type(HikariDataSource.class)
.build();
datasource.setMaximumPoolSize(1000);
datasource.setMinimumIdle(100);
return datasource;
}
}
나는 위와 같이 HikariDataSource 구현체를 쓰는 DataSource를 만든 상태인데, 아래 코드를 추가해주었다.
datasource.setMaximumPoolSize(1000);
datasource.setMinimumIdle(100);
위와 같이 connection 개수 설정을 하고 show status like '%Threads%'; 쿼리를 통해 상태변수를 확인해보자.
connection pool 최대 사이즈를 1000개로 설정
connection pool에 기본적으로 100개의 connection을 채움
■ connection 유지 중 - Thread관련 상태변수 값
■ connection 풀린 상태 - Thread관련 상태변수 값
Threads_connected를 확인해 보면, connection이 풀리기 전후 100차이가 난다.
HidariDataSource가 pool에 100개의 connection을 생성했었음을 확인 가능하다. 상태변수를 통해서!!
'Database' 카테고리의 다른 글
[DB] 인덱스 사용 이유 이해하기 (0) | 2023.10.17 |
---|---|
[H2] Column이 drop 되지 않음 | JPA Bean을 직접 주입하는 실습 중 (0) | 2023.01.25 |
[DB] 상속 관계 매핑 전략 선택하기 (2) | 2022.12.30 |
ObjectInputStream | file에 이어쓰기로 writeObject 후 readObject하려할 때 object를 못읽는 문제 (0) | 2022.12.28 |
FK 제약조건 삭제하기 - Cannot drop column <FK컬럼명>: needed in a foreign key constraint (1) | 2022.10.11 |