프로그래밍/SQL 6

MySQL Database 주기적으로 자동 백업하는 법

너굴리스트 최근 업데이트에 일부 유저분들 정보를 날려먹고ㅜㅜ DB가 언제나 영원할꺼라 생각했던 나 자신의 어리석음을 반성하며 뒤늦게나마 자동 백업을 도입하기로 했다. 사실 어려운일이 아닌데 1인 개발인데 뭐 날려먹거나 하진 않겠지하는 막연한 믿음때문에 이 사태가 벌어졌다. 앱에서 사용하는 DB를 백업하는 스크립트를 적고, crontab으로 사용자 수가 적은 매일 오전 6시에 돌리려고 한다. 1. Shell script 작성 먼저 db_backup이라는 쉘 스크립트를 작성해야한다. $ vi db_backup.sh#!/bin/bash DATE=$(date +%Y-%m-%d) BACKUP_DIR=/home/lou/db_backups if [ ! -d $BACKUP_DIR ]; then mkdir $BACKUP..

프로그래밍/SQL 2022.02.14

파티션 테이블로 Big Query 쿼리 비용 대폭 절감하는 법 (Partitioned table)

Big Query에서 쿼리를 날릴때 처리되는 용량을 가지고 요금이 매겨지는데, 그래서 "실행시 이 쿼리가 xxbyte 를 처리합니다" 라는 곳을 유심히 지켜봐야한다. Big Query에서는 테이블을 날짜별, 시간별, 또는 정수 기준으로 나눈 파티션을 나눈 테이블을 지원하는데, 이를 이용하면 처리되는 데이터의 양을 대폭 줄일 수 있다. 파티션 테이블을 사용하지 않았을때 다음은 으로 집어서 쿼리를 날렸을때 처리되는 데이터 양이다. SELECT event_timestamp, user_pseudo_id, param, user_id FROM `table-1605078626536.analytics_252952500.*`, UNNEST(event_params) as param WHERE event_name = 'fu..

프로그래밍/SQL 2021.05.28

[Big Query] 빅 쿼리 UNNEST 사용법 / 개념

데이터 구조 이해하기 우리가, 아니 적어도 내가 일반적으로 봐 왔던 데이터들은 이렇게 Key-Value 쌍으로 이루어진 Record의 연속이었다. 그런데 이번에 회사에서 일하면서 Big Query를 만지게 되었는데 데이터 구조가 생판 처음보는 식으로 되어있었다! 그림으로 표현하자면...이렇게? 필드 하나가 배열이 될수도 있고, 구조체가 되거나 구조체의 배열까지 될수 있는 복잡한 구조다. 예제로 알아보기 그래서 '일반적인' SQL문으로 내가 원하는 데이터를 뽑아내기는 어렵고, 특별한 문법요소 하나를 더 써야하는데 그것이 바로 UNNEST이다. 손을 더럽히면서 배워보자. bigquery.cloud.google.com/dataset/firebase-analytics-sample-data:android_data..

프로그래밍/SQL 2021.03.18

[MySQL] Too many connections 문제 해결 : max_connections 설정하기

show status like 'threads_connected';: 현재 연결되어있는 thread 수 확인 show variables like 'wait_timeout';: 현재 지정된 wait_timeout 값 확인 show variables like 'max_connections';: 현재 지정된 max_connections 값 확인 set global max_connections=500;: max_connections 500으로 설정 set global wait_timeout=60;: wait_timeout 60으로 설정 (초 단위) wait_timeout: 지정된 시간동안 mysql에서 응답이 없을경우 커넥션을 종료 max_connections: mysql이 허용할 수 있는 클라이언트의 최대 연..

프로그래밍/SQL 2019.03.12