전체 글
-
파일 라인 수 세기os/linux 2020. 9. 2. 16:09
업무를 하다보면 특정 파일의 라인 수를 알고 싶은 경우가 있습니다. 예를 들어, access log 파일에서 특정 요청 수를 알고 싶은 경우가 이 경우에 해당되겠네요. 단순 파일의 라인 수를 알고 싶은 경우 해당 파일을 vi 에디터를 열어 :set nu 명령어로 라인 넘버를 표시해서 알수도 있지만 wc 명령을 활용하면 파일을 열지 않고도 확인할 수 있습니다. wc 명령어 만으로 특정 파일을 라인 수를 알 수 있습니다. > cat test.txt 1 2 3 4 5 6 7 8 9 10 11 12 13 14 > wc -l test.txt 15 test.txt grep 명령과 같이 특정 조건에 해당하는 라인 수를 셀 수도 있습니다. (2를 포함하는 라인 수) > cat test.txt 1 1 2 2 3 3 4 ..
-
MySQL 힌트를 활용한 쿼리 튜닝data/mysql 2020. 7. 1. 10:03
업무 중 특정 기간동안 쌓인 로그를 읽어 가공을 하는게 있습니다. SELECT id , country , os , sum(qty) as count , sum(price * qty) as amount FROM log WHERE date BETWEEN #{start} AND #{end} GROUP BY id, country, os date 컬럼에 인덱스 설정이 되어 있음에도 불구하고 시간이 지나 데이터 건수가 늘어날수록 해당 쿼리 수행 시간이 길어지는 현상이 발생했습니다. 쿼리 실행 계획을 확인해보니 date 컬럼의 인덱스를 타지 않고 있었습니다. MySQL에서 힌트 사용을 위해 USE INDEX, FORCE INDEX를 사용할 수 있는데 USE INDEX를 사용해도 힌트가 제대로 동작하지 않는 경우가 있어..
-
Binary log 설정data/mysql 2020. 5. 19. 07:52
요즘 스케쥴러를 통한 데이터 작업의 영향으로 개발DB의 binary log의 양이 증가해 수시로 서버 디스크 사용량 경고 알람을 받고 있었습니다. 알람을 받으면 binary log를 삭제(2020/04/29 - [data/mysql] - MySQL binary log 삭제)하곤 했는데 유입되는 데이터의 양이 많아지면서 주기도 더 빨라져서 관련 설정을 좀 찾아봤습니다. 참고 : MySQL 5.7 메뉴얼 우선 개발DB이기 때문에 binary log의 중요성이 많이 떨어지기 때문에 설정을 변경했고 운영환경이나 데이터가 중요한 환경이라면 충분히 검토 후 설정을 하시기를 권고합니다. my.cnf 파일의 변경한 설정은 아래와 같습니다. # Binary log max_binlog_size=512M expire_log..
-
MySQL DATE_FORMAT()을 사용해서 월별 가입자 추출data/mysql 2020. 5. 4. 19:55
월별 가입자 수를 추출하기 위해 DATE_FORMAT() 펑션을 사용해 봤습니다. 사용자 테이블은 사용자ID, row 생성일, row 최종수정일 등의 정보로 구성되어 있습니다. DATE_FORMAT(date, format) 형태로 사용할 수 있으며 여기서는 월단위로 추출을 할거라 '%Y-%m' 포맷으로 지정했습니다. MySQL 5.7 기준 DATE_FORMAT() 펑션에 대한 자세한 내용은 여기에서 확인할 수 있습니다. SELECT DATE_FORMAT(created, '%Y-%m'), COUNT(DATE_FORMAT(created, '%Y-%m')) FROM user GROUP BY DATE_FORMAT(created, '%Y-%m'); 다음과 같은 결과를 확인할 수 있습니다.
-
MySQL binary log 삭제data/mysql 2020. 4. 29. 07:19
테스트용으로 사용중이 MySQL 서버 디스크를 98% 사용중이라는 알람을 받았습니다. 현재 도커로 MySQL을 구동해서 사용중인데 확인해보니 MySQL data 폴더에 binlog가 60여개 쌓여 있는걸 발견했습니다. 해당 파일을 그냥 삭제하는 것보다 MySQL 콘솔에서 작업하는게 좋다고 해서 워크벤치에 접속해서 로그들을 퍼지해줬습니다. 아래는 퍼지 후 결과인데 퍼지 전에는 로그파일 갯수와 동일하게 조회 됩니다. 퍼지 후 디스크 사용률은 24%로 확인됐습니다. binlog가 60기가가 넘었는데 테스트용 DB라 왜 이렇게 쌓였는지 모르겠네요.. 저의 경우 테스트용 DB라 크게 문제될게 없어 바로 퍼지 작업을 했지만 binlog를 임의로 제거할 경우 DB 운영에 문제가 생길 수도 있으니 잘 확인하고 작업하셔..
-
MySql Workbench connection 정보 관리data/mysql 2020. 4. 24. 15:20
윈도우 환경에서 MySql 워크벤치 connection 정보 관리 방법 1. connection 정보 export 방법 Tools > Configuration > Backup Connections 메뉴 선택 -> connections.xml, server_instances.xml 파일 백업 2. connection 정보 import 방법 2-1. Backup Connections 메뉴에서 생성한 zip 파일이 있는 경우 Tools > Configuration > Restore Connections 메뉴 선택 -> zip 선택 후 복구 2-2. connections.xml 파일만 있는 경우 윈도우 탐색기 > %APPDATA%\MySQL\Workbench 경로로 복사 후 워크벤치 재기동
-
imageproxy 설치 - 이미지 리사이즈 도구sw 2020. 4. 14. 13:38
imageproxy는 웹에서 접근 가능한 이미지 url을 전달하면 원하는 형태로 가공을 해주는 도구입니다. (https://github.com/willnorris/imageproxy) 사용법은 http://localhost/{options}/{remote_url} 형태로 imageproxy url (localhost)에 옵션과 원본 이미지 url만 전달하면 됩니다. imageproxy 설치 방법도 간단합니다. 먼저 go 언어를 설치해줍니다. golang 사이트에서 설치하고자 하는 플랫폼에 맞는 파일을 다운로드 받습니다. (여기서는 리눅스를 기준으로 설명합니다.) 다운로드 받은 golang 파일을 /usr/local 경로에 압축을 풀어줍니다. > wget https://dl.google.com/go/go1..