시스템
-
데이터베이스 INDEX SCAN 확인시스템 2021. 10. 19. 12:10
1. 인덱스를 검사하는 법. explain select * from Table_Name where A='a' and B='b' order by C,D,E ; 해당 쿼리문이 인덱스를 타는지 안타는지 알기 위해서는 쿼리문 앞에 explain을 붙여주면 인덱스를 타는지 안타는지 알 수 있습니다. type의 결과값이 ALL일 경우 인덱스를 타지 않고 있습니다. range,index등일 때 인덱스를 타고 있습니다.(system,const,eq_ref,range,index,ALL,fulltext) key의 값이 해당 쿼리문이 타고 있는 인덱스입니다. 2. 경우의 수가 작은 것은 인덱스를 타지 않습니다. 가령 특정 테이블에서 성별을 구분하는 테이블이 있고, 이 테이블에서 성별로 구분해서 보여주는 경우가 많다고 해서 ..
-
리눅스 실무기술 300 정리시스템 2020. 12. 24. 15:00
* useradd rsyoung /etc/login.defs, /etc/default/useradd 파일을 참조하여 /etc/passwd 파일에 등록. ID/ UID/ GID, home 디렉토리, 쉘 정의 /etc/shadow 파일에 password 정보등록 /home/rsyoung 생성 /etc/skel/ 모든 파일 (히든파일포함)을 /home/rsyoung 에 복사함 /var/spool/mail/rsyoung 메일박스를 생성함 * passwd에 대한 간략한 정보 passwd -s * userdel userdel /etc/passwd /etc/shadow /etc/group 파일에서 해당 id 제거 userdel -r /home/ /var/spool/mail/ 파일까지 제거 userdel -f 심지어 ..
-
SQL 튜닝 (일반적인 SQL 튜닝 기법)시스템 2020. 9. 24. 19:28
최대한도로 성능을 발휘할 수 있도록 불필요한 로직을 타지 않게 쿼리를 작성해야 한다. 같은 결과를 산출하는 쿼리는 여러 가지 형태로 작성될 수 있으므로, 개발자는 SQL 문장 단에서 최대한 효율적인 문장을 작성해야 한다. "쿼리를 이렇게 작성하면 좋은 성능을 발휘한다"라는 일반적인 가이드 라인을 알아보자! 가급적 WHERE 조건에서는 인덱스 컬럼을 모두 사용한다. 인덱스를 만들어 놓더라도 WHERE 조건을 어떻게 명시하느냐에 따라 옵티마이저가 인덱스를 사용할 수도 있고 사용하지 않을 수도 있다. 예를 들어 A와 B라는 컬럼의 인덱스를 만들었는데, WHERE 조건에서 A 컬럼만 사용한다면 인덱스를 타지 않게 된다. 예) CONTRACT 테이블에서 CONTRACT_NO, CONTRACT_REV 컬럼이 CON..
-
리눅스 로그 분석시스템 2020. 9. 21. 15:02
I. 시스템 분석 시스템 로그 분석 1) 시스템 로그의 정의 시스템 로그의 정의에 대한 설명 -"log"를 번역하면, 일지라는 뜻으로, 시스템에 일어난 일들을 기록해 둔 파일이란 뜻이다. -로그는 디스크 공간을 채우는 불필요한 파일이 되기도 한다. -시스템에서 제공하는 서비스에 따라서 여러개의 로그파일이 존재할 수 있다. -시스템관리자가 해킹을 당했다고 느낄 경우 로그 파일에 의존한다. (/var/log 디렉터리에서 모든 로그를 기록 및 관리) 리눅스 서버에서 발생하는 로그 -커널 로그: "klogd"라는 데몬에 의해 커널 메세지가 생성된다. -시스템 로그: "syslogd"라는 데몬에 의해 생성되는 로그이다. 2) 시스템 로그 파일 /var/log/message -syslog.conf에서 로그로 기록하..
-
Postgresql database 백업시스템 2020. 9. 18. 15:22
Postgresql database 백업 pg_dump --dbname=myDB --host=127.0.0.1 --port=5432 --username=myID --password --format=p --file=./myDB.sql option dbname: 대상 데이터베이스 이름 host: 대상 DB 서버의 ip address 혹은 FQDN(Fully Qulified Domain Name) ex) www.naver.com port: 대상 DB 서버의 포트 번호 username: 대상 DB에 접속할 DB user id password: 이 옵션이 있어야 명령어 실행 후 username에 대한 password를 입력을 할 수 있음 format: p or c or d or t p: plain - SQL 스크..
-
Query Service 성능 개선기시스템 2020. 5. 29. 16:03
두 번째 Query Service 성능 개선기를 작성하게 되었다. 첫 번째에서 문제가 다 해결된게 아니냐 싶을 수도 있지만 슬프게도 다 해결된 것은 아니었다. 여전히 DB의 사용률에 따라 조회 시간의 차이가 롤러코스터급으로 들쭉날쭉 했고 이를 반드시 해결해야 서비스 릴리즈를 할 수 있었다. 또한 DB에 엄청난 속도로 데이터가 쌓이고 있었기 때문에 이런 상황에도 전혀 무관하게 일정한 조회 시간을 유지해야 했다. 어떤 Query Service이고 이 서비스가 어떤 컨텍스트에서 어떤 서비스를 제공하는지는 첫 번째 이야기에서 살펴볼 수 있다. 첫 번째 이야기가 끝나갈 즈음에 하드웨어와 같은 물리적인 것들에 대해 언급을 했는데 두 번째 이야기에서는 이 쪽을 좀 더 얘기해보려고 한다. 실제로 Query Servic..
-
관계형 데이터베이스에서 조인(join)이란?시스템 2020. 5. 26. 21:48
1.JOIN에 대한 기본 개념 관계형 데이터베이스에서는 중복 데이터를 피하기 위해서 데이터를 쪼개 여러 테이블로 나눠서 저장합니다. 이렇게 분리되어 저장된 데이터에서 원하는 결과를 다시 도출하기 위해서는 여러 테이블을 조합할 필요가 있습니다. 관계형 데이터베이스에서는 조인(JOIN) 연산자를 사용해 관련 있는 컬럼 기준으로 행을 합쳐주는 연산입니다. 조인에 대해서 공부하다 보면 종류도 많아서 처음에는 많이 헷갈릴 때가 종종 있어서 다시 정리를 해보았습니다. 2. 샘플 데이터 이 포스팅에서 사용한 데이터는 MySql 사이트에서 제공한 샘플 데이터를 참고해서 수정한 버전을 사용했습니다. MySql dummy 데이터 https://github.com/datacharmer/test_db 수정 버전 - 예제로 작..
-
Docker Volume을 활용한 Data 관리시스템 2020. 3. 30. 11:06
우리는 Container의 Writable Layer에 Data를 저장할 수 있다는 것을 알고 있습니다. 하지만, 여기에는 몇 가지 문제점이 존재합니다. Container가 삭제되면 Data도 같이 삭제됩니다. 또한, 다른 프로세스에서 Container에 저장된 Data를 사용하기 어렵습니다. Container의 Writable Layer에는 Container가 실행 중인 Host Machine과 밀접하게 연결됩니다. 따라서, Data를 다른 곳으로 쉽게 옮길 수 없습니다. Container의 Writable Layer에 Data를 저장하기 위해서는 File System을 관리하는 Storage Driver가 필요합니다. Storage Driver는 Linux 커널을 사용하여 공용 File System을..