mysql 을 설치 직후 디폴트로 세팅된 변수 값들 중 무엇을 바꾸는게 좋을지 알아보자.
여기에 나온 예시는 내가 경험해보니 바꿔야 함을 느낀 것들이다.
사이트 환경은 저마다 다르니 그냥 참고해서 취할건 취한고 아니면 패스 하시길..
1. time out
- interactive_timeout
: 콘솔에서 mysqld와 Client의 connection 후 다음요청을 기다리는 시간
- wait_timeout
: 플러그인, API 등을 이용해 (PHP, JDBC) connection 후 다음요청을 기다리는 시간
디폴트가 28880 인데 시간으로 환산하면 8시간이 넘는다.
보통 운영을 이렇게 길게 설정할 필요는 없다.
lock 을 잡고 sleep 에 빠지는 세션을 줄이기 위해서라도 조정은 필요하다.
2. auto commit
디폴트는 오토커밋이다.
오라클의 디폴트는 오토커밋을 하지 않는것이다.
여기에 익숙해져서 mysql 도 오토커밋을 안하는 것으로 변경을 고려해볼수 있다.
다만 mysql 은 select 후에 commit 을 하지 않으면 다른 세션에서 해당 테이블에 DDL 을 날리면 대기에 빠질수있다.
3. 테이블 대소문자 구분
lower_case_table_names 이라는 변수로 테이블명을 소문자로 바꾸는 것을 세팅할수 있다.
리눅스, 유닉스의 디폴트는 0 이고, 테이블명의 대소문자를 구분 하겠다는 뜻이다.
Create table Abc ( a int);
Create table abc ( a int);
이런식으로 테이블 생성시 중복 에러 없이 생성이 된다.
mysql> show variables like 'lower%';
+------------------------+-------+
| Variable_name | Value |
+------------------------+-------+
| lower_case_file_system | OFF |
| lower_case_table_names | 0 |
+------------------------+-------+
2 rows in set (0.00 sec)
lower_case_table_names = 0 : 테이블 생성 및 조회 시 대·소문자 구분한다.
lower_case_table_names = 1 : 테이블명이 모두 소문자로 변경된다.
lower_case_table_names = 2 : 윈도우에서 대·소문자를 구분해서 테이블생성
윈도우는 1, 맥킨토시는 2 가 디폴트
대소문자를 구별했을때의 문제는 쿼리에서 table 이름을 대소문자 그대로 똑같이 입력해야 한다.
그리고 윈도우에서 파일 시스템이 대소문자를 구분하지 않아서 문제가 발생할수 있다.
## 이 설정과 상관없이 쿼리에서 alias 를 줄 경우, mysql 은 대문자면 대문자, 소문자면 소문자 그대로 써야 한다.
select * from abc A where A.col1 = '1' (O)
select * from abc A where a.col1 = '1' (X)
4. isolation level
디폴트는 repeatable read 이다.
트랜잭션의 안정성과 동시성은 양립할수 없다. (lock 매커니즘을 사용한다면)
각 사이트 환경에 따라 적절한 트랜잭션 고립 레벨을 고려해볼수 있겠으나
보통 oracle 환경이 READ COMMITTED 였기 때문에 변경을 고려해볼수 있다.
아래는 4가지 transaction isolation level 이다.
1) read uncommitted
=> dirty read 가능
2) read committed
=> non-repeatable read 가능
3) repeatable read
=> phantom read 가능
4) serializable
'생계 > MySQL' 카테고리의 다른 글
mysql show 명령어 db정보 확인 (0) | 2023.10.23 |
---|---|
mysql select lock (0) | 2021.08.02 |
가상머신 virtualbox mysql 설치 - 2. mysql 설치 접속 (0) | 2021.06.26 |
가상머신 virtualbox mysql 설치 - 1. os 우분투 설치 (0) | 2021.06.26 |
MariaDB galera cluster mysql 유저 binary 설치 centos (0) | 2017.11.25 |