innodb 의 경우 instert 속도가 myisam에 비해 느리다.

 

이경우 여러가지 튜닝을 할 수 있는데 대표적인것만 몇개 수정, 비교 해보려고 한다.

1.innodb_flush_log_at_trx_commit 를 0으로 변경하면 속도를 많이 올릴 수 있다고 한다.
innodb_flush_log_at_trx_commit 란...
https://dev.mysql.com/doc/refman/8.0/en/innodb-parameters.html

 

MySQL :: MySQL 8.0 Reference Manual :: 15.13 InnoDB Startup Options and System Variables

MySQL 8.0 Reference Manual  /  The InnoDB Storage Engine  /  InnoDB Startup Options and System Variables 15.13 InnoDB Startup Options and System Variables System variables that are true or false can be enabled at server startup by naming them, or disabled

dev.mysql.com

요약하자면

innodb_flush_log_at_trx_commit 이란 쿼리 요청이 디스크에 저장되는 방법이 지정된 변수이다. 즉 이 값을 변경하면 트랜잭션 방법을 수정해서 insert 속도를 올릴 수 있따.

##트랜잭션, commit이란

먼저 DB에서의 트랜잭션이란 정상적으로 완료된 일련의 작업들이라고 생각하면된다. 예를들어 insert , update , delete가 순차적으로 일어나고 그후 commit을 하게되면 트랜잭션이 정상적으로 완료됐다할 수 있다. 즉 commit이란 저장되지 않은(메모리에 적혀있는)데이터를 디비에 저장 후 트랜잭션을 종료한다.

 

innodb_flush_log_at_trx_commit  값이 디폴트일때의 과정(즉 1일 때)은 아래 처럼 진행된다.

쿼리 하나당 [log buffer(메모리 영역)를 거쳐서 >os buffer/cache(메모리 영역)를 거쳐서  > 마지막으로 ib_logfile(디스크영역)에 저장(flush) 된다.] 즉 1회 요청당 1회 commit - 한번의 요청때마다 매번 commit을 진행한다. - (요게 핵심임)


0 또는 2로 바꾼다면 저 과정이 간략해진다.

innodb_flush_log_at_trx_commit  =0
쿼리 하나당 [log buffer(메모리 영역)저장]하고 1초에 한번씩 나머지 commit을 수행(os buffer/cache(메모리 영역)를 거쳐서  > 마지막으로 ib_logfile(디스크영역)에 저장(flush)])

innodb_flush_log_at_trx_commit  = 2

쿼리 하나당 [log buffer(메모리 영역)를 거쳐서 >os buffer/cache(메모리 영역)에 저장] 후 1초에 한번씩 나머지 commit을 수행ib_logfile(디스크영역)에 저장(flush)])

 

즉 0과 2의 차이는 쿼리하나당 log buffer까지 저장하느냐 os buffer/cache 까지 저장하느냐의 차이임

 

(혹시 이글을 읽으시는 분들중 틀린 내용이 있다면 제발 코멘트 부탁드립니다. 구글링하면서 다른 내용이 적잖이 보여서 사실 저도 좀 헷갈립니다.)

 

이론적으로 보면 속도 순서는 0 - 2 -1 순으로 빨라야 한다. 

비교를 해보자.

파일용량(각각 실 사용 데이터) 0일때 1일때 2일때
12GB 45분 60분 50분
10GB 40분 50분 45분
15GB 65분 80분 65분
18GB 75분 95분 75분
14GB 테스트 안함 75분 60분
19GB 테스트 안함 105분 85분
19GB 테스트 안함 105분 85분

0이랑 2랑 거의 비슷하고(0이쫌더 빠르긴함) 확실히 1로 줬을때보단 빠르긴 한듯합니다. 용량 작으면 그냥 하고 용량 크면 데이터 유실될 가능성이 좀 더 적은 2로 주고 하는게 좋겠네요. 

 

 

2.innodb buffer pool size 

아마 이게 가장 대표적이고 또 확실히 눈에 보이게 성능 향상이 이루어질걸로 판단한다.

극단적으로 보기위해 기존에는 디폴트 값(128MB)과 서버 메모리(32GB)에 맞게끔 변경해서 비교했는데

7GB 짜리 덤프파일 복원 하는데 3시간 쫌 넘게 걸렸고
real    187m17.825s 
user    2m21.802s 
sys     0m6.869s

 

이번에는 innodb buffer pool size = 20GB로 변경하고 .sql 용량 =8GB 짜리 복원시(키 버퍼랑 등등 추가로 알맞게 진행)

real    40m44.386s
user    2m21.319s
sys     0m8.349s

역시... innodb buffer pool size 는 튜닝 필수다.

 

 

내용 요약.

1.innodb buffer pool size 수정은 필수(그에따른 키 버퍼나 솔트 버퍼등도 구글링해서 알맞게 수정)

2.용량이 큰 dump파일 복원시 innodb_flush_log_at_trx_commit 는 2로 변경
ㄴ실제 사용시 상황에 맞게(안전성이냐 속도냐) 1또는 2로 사용

'job > mysql' 카테고리의 다른 글

mysql log file size error  (0) 2019.06.26
mysql replication relay log relay-bin.999999 bug  (0) 2019.05.03
mysql 대용량 DB 백업 구성  (0) 2019.04.09
mysql dead lock 확인하기  (0) 2019.01.24
mysql innodb buffer pool size  (0) 2019.01.24

엔서블 특징

1.에이전트 설치 필요없음 - 이게 제일 장점인듯 호스트서버에만 엔서블 설치하면되니까
ㄴ다만 클라이언트에도 2.6 이상의 파이썬이 설치돼있어야한다. centos5 버전은 파이썬2.4 설치돼있어서 중복으로 설치해야함
2.yaml 로 저장돼있어서 많은 사람들(운영, 관리, 개발팀등)이 쉽게 알아볼 수 있음
3.대부분의 OS에 사용가능(윈도우도 가능하고 네트워크 장비들까지도 됨)
4.멱등성
5.모듈 많음
6.쉬움
7.오픈소스

 

 

엔서블 vi 탭을 띄어쓰기 2개로 변경하는법

- vi 에서 yaml 작성할때 탭으로 가능하도록 설정

$HOME/.vimrc 파일안에 아래 입력 .vimrc 파일 없으면 만들어주면 된다.
autocmd FileType yaml setlocal ai ts=2 sw=2 et

'job > ansible' 카테고리의 다른 글

ansible - 디렉토리 구조  (0) 2019.05.02
ansible- error  (0) 2019.04.26
ansible-3 playbook  (0) 2019.04.25
ansible-2 hosts(그룹), 멱등성  (0) 2019.04.22
ansible 공부  (0) 2018.10.10

yum install -y nodejs 한 다음 yum install -y npm 하면 npm 패키지 설치하면서 기존에 설치된 nodejs 패키지랑 충돌나서 npm 설치가 안됨

 

  file /usr/lib/node_modules/npm/node_modules/ini from install of npm-1.3.6-5.el6.noarch conflicts with file from package nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/init-package-json from install of npm-1.3.6-5.el6.noarch conflicts with file from package nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/lockfile from install of npm-1.3.6-5.el6.noarch conflicts with file from package nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/npm-user-validate from install of npm-1.3.6-5.el6.noarch conflicts with file from package nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/once from install of npm-1.3.6-5.el6.noarch conflicts with file from package nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/opener from install of npm-1.3.6-5.el6.noarch conflicts with file from package nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/read from install of npm-1.3.6-5.el6.noarch conflicts with file from package nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/sha from install of npm-1.3.6-5.el6.noarch conflicts with file from package nodejs-2:9.11.2-1nodesource.x86_64

 

  file /usr/lib/node_modules/npm/node_modules/retry conflicts between attempted installs of npm-1.3.6-5.el6.noarch and nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/rimraf conflicts between attempted installs of npm-1.3.6-5.el6.noarch and nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/semver conflicts between attempted installs of npm-1.3.6-5.el6.noarch and nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/sha conflicts between attempted installs of npm-1.3.6-5.el6.noarch and nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/slide conflicts between attempted installs of npm-1.3.6-5.el6.noarch and nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/tar conflicts between attempted installs of npm-1.3.6-5.el6.noarch and nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/uid-number conflicts between attempted installs of npm-1.3.6-5.el6.noarch and nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/node_modules/which conflicts between attempted installs of npm-1.3.6-5.el6.noarch and nodejs-2:9.11.2-1nodesource.x86_64
  file /usr/lib/node_modules/npm/package.json conflicts between attempted installs of npm-1.3.6-5.el6.noarch and nodejs-2:9.11.2-1nodesource.x86_64

 

이런식으로 충돌납니다. 위와같이 충돌나면 rpm -qa | grep node 해서 나온거 삭제해주고

 

npm 패키지 안에 nodejs 도 들어있으니까 nodejs 설치할필요없이 npm만 yum으로 설치해주면 됨

 

 

그다음 npm install socket.io 하면 

npm http GET https://registry.npmjs.org/socket.io
npm http GET https://registry.npmjs.org/socket.io

npm ERR! Error: CERT_UNTRUSTED
npm ERR!     at SecurePair. (tls.js:1370:32)
npm ERR!     at SecurePair.EventEmitter.emit (events.js:92:17)
npm ERR!     at SecurePair.maybeInitFinished (tls.js:982:10)
npm ERR!     at CleartextStream.read [as _read] (tls.js:469:13)
npm ERR!     at CleartextStream.Readable.read (_stream_readable.js:320:10)ㄴ

 

이런식으로 에러 난다.

 

https 인증 어쩌구 저쩌구 하는데 

npm config set strict-ssl false

인증 우회 하고 다시 npm install socket.io 설치하면 

/usr/lib/node_modules/socket.io/usr/lib/node_modules/socket.io]# pwd 
/usr/lib/node_modules/
socket.io

 

 

/usr/lib/node_modules/socket.io]# ll
total 48
drwxr-xr-x 2 root root  4096 2019-04-10 09:50 lib
drwxr-xr-x 8 root root  4096 2019-04-10 09:50 node_modules
-rw-r--r-- 1 root root 18733 2019-04-10 09:50 package.json
-rw-r--r-- 1 root root 16588 1985-10-26 17:15 Readme.md

 

잘 설치됐다.

'job > linux' 카테고리의 다른 글

서버 점검..  (0) 2019.06.11
centos 5 yum error  (0) 2019.04.29
ionice  (1) 2019.04.09
strace debug  (0) 2019.02.21
php-fpm 메모리 사용률 확인하고 튜닝하기  (2) 2019.02.20

+ Recent posts