본문 바로가기

프로그래밍/DB & Redis47

[DB] 인덱스가 왜 중요한가!! 최근에 회사에서 프로그래밍 로직상 이렇게 오래 걸릴리가 없는데 대체 왜 db에 접근해서 처리하는데 시간이 몇시간이나 걸리지?? 라는 이슈가 있었다. 그래서 해당 함수의 최초 시작 지점부터, sp 내용까지 다 훑어 보았고 의심스러운 부분을 찾았다. UPDATE USER_RANKING SET nextStartScore = 점수 WHERE userNumber = 유저고유번호 AND seasonNumber = 시즌 번호; // 아래 테이블은 다 없는 테이블입니다, 설명을 위해 비슷하게 추가했어요 간단히 설명하면 유저고유번호, 시즌 번호를 조건을 걸어서 데이터를 찾아 점수를 업데이트 하는 쿼리이다. 우리 게임상 한 시즌이 지날수록 데이터양이 점점 늘어나는 구조였고, 이미 해당 데이터에 20만건이 들어있는 상황이긴.. 2024. 3. 7.
[mysql] INFORMATION_SCHEMA 관련 정리 INFORMATION_SCHEMA 는 각 mysql 인스턴스안에 있는 '데이터베이스'이다. 해당 MySQL 서버가 유지하는 다른 모든 데이터베이스에 대한 정보를 저장하는 곳입니다. The Information_schema 데이터베이스는 몇몇의 읽기전용 테이블을 포함합니다. 사실 그것들은 View이고, 테이블은 아닙니다. 그래서 그것들과 관련된 파일들은 없습니다. 그리고 트리거 셋팅도 불가능합니다. 또한 데이터베이스 파일구조도 존재 하지 않습니다. 당신은 INFORMATION_SCHEMA 를 SELECT(조회)만 가능하고 삽입, 삭제 , 변경은 불가합니다. 요약) INFORMATION_SCHEMA 는 DATABASE의 정보를 저장하는 VIEW이며 오직 SELECT만 가능하고, INSERT, DELETE, .. 2024. 2. 26.
[mysql] 현재 시간, 현재시간 unixtime, 특정시간, 특정시간 unixTime 쿼리 SELECT NOW(), UNIX_TIMESTAMP(), DATE_ADD(NOW(), INTERVAL 7 DAY), UNIX_TIMESTAMP( DATE_ADD(NOW(), INTERVAL 7 DAY)); - NOW() : 현재 시간 출력 함수 - UNIX_TIMESTAMP() : 현재 시간 unixTime으로 출력해주는 함수 - DATE_ADD () : 시간을 더해 주는 함수 : DATE_ADD(NOW(), INTERVAL 7 DAY) -> 현재 시간에 7일 더해서 출력 - UNIX_TIMESTAMP(DATE_ADD(NOW(), INTERVAL 7 DAY)) 현재 시간에 7일 더한시간을 UNIXTIME으로 변환해서 보여줌 ** UNIXTIME이란? - UNIX 시간(Unix time)은 협정 세계시(U.. 2024. 2. 16.
[mysql] 특정 시간을 특정 타임존으로 확인하는 쿼리 CONVERT_TZ(시간값, '기준 타임존', '변경할 타임존') - CONVERT_TZ 함수를 사용하면 시간 데이터를 원하는 타임존 값으로 볼 수 있다. - 시간값 자리에 변경할 시간을 넣으면, 해당 시간을 기준 타임존에서 변경할 타임존의 시간으로 보여준다. 쿼리 SELECT now() as KST, CONVERT_TZ(now(), 'Asia/Seoul', 'UTC') as `UTC`, CONVERT_TZ(now(), 'UTC', 'America/Santiago') as `SantiagoTime`; 결과 설명 - 현재 시간을 한국시간, UTC 시간, 미국/샌티아고 시간으로 조회하는 쿼리이다. - now() as KST : 현재 시간을 한국시간으로 - CONVERT_TZ(now(), 'Asia/Seoul.. 2023. 12. 29.
[mysql]SELECT 후 UPDATE - join 으로 업데이트 https://podo1017.tistory.com/200 [mysql] SELECT 후 UPDATE SELECT 후 UPDATE ▶ Table `A`에서 데이터 select 후 그대로 Table `B`에 업데이트 QUERY UPDATE tableB as B, ( SELECT user_grade, user_age FROM tableA) as A SET B.user_grade = A.user_grade, B.user_age = A.user_age WHERE B.user_id = A.user_id; Q podo1017.tistory.com 서로 다른 두개의 테이블이 있을때, A 테이블을 Select 해서 B 테이블의 값을 Update 하는 경우가 종종 있다. 그동안은 위의 포스팅 참고해서 쿼리하곤 했었는데,.. 2023. 12. 19.
mysql에서 특정 시간을 기준 시간 기점으로 - 해서 업데이트 하는 쿼리 UPDATE titmeTable SET startTime = TIMESTAMPADD(SECOND, -86399, ended) where 조건 * seq, starttime, ended 라는 컬럼을 가진 titmeTable이 있다고 가정 * ended 컬럽에서 -23시간 59분 59초 하는 시간으로 startTime을 업데이트 할때 사용하는 쿼리 2023. 11. 9.
[mysql] connection pool - 커넥션풀 connection pools 커넥션풀이란? 필요할때 재사용되기위해 관리되는 데이터 베이스의 캐시 커넥션풀을 사용하면 데이터베이스 연결을 만들고 해제하는데 발생하는 오버헤드를 줄이는데 도움이 됨. Mysql에서 Connection pool 일반적으로 데이터베이스 서버에 대한 미리 설정된 연결 세트로 구성되며, 커넥션풀 관리자가 필요에 따라 연결을 유지하고 재사용함. 작동 원리 응용 프로그램이 풀에서 연결을 요청하면 관리자는 사용 가능한 연결이 있는 경우 풀에서 사용가능한 연결을 반환 사용가능한 연결이 없다면, 관리자는 새 연결을 만들고 풀 구성에서 지정한 최대 연결까지 풀에 추가할 수 있음 커넥션 풀도 가득 차고, config에서 지정한 최대수 만큼 만들어진 경우 어떻게 작동할까? 일반적인 접근 방법중 .. 2023. 5. 15.
[mysql] SELECT 후 CREATE SELECT 후 CREATE 하기 가끔 Table을 새로 만들때 기존 데이터를 가지고 필요 한 부분만 사용하여 테이블을 만들 때가 있다.나는 주로 서버 점검하면서 db 마이그레이션을 할 때 사용한다. Qeury CREATE TABLE '생성할 테이블 이름' SELECT '가져올 데이터' FROM '가져올 데이터가 있는 테이블' WHERE '조건'; Qeury EX)학생들의 성적이 들어있는 tbl_total_grade 테이블이 있다고 가정 해보자그중 상위권 성적 학생들만 추출하여 별도의 테이블로 구성하고 싶다고 가정해보자 tbl_total_gradeSELECT * FROM test_db.tbl_total_grade; Query CREATE TABLE tbl_high_rank SELECT * FROM tbl.. 2023. 3. 17.
[DB] SQL이란? SQL SQL이란? 관계형 데이터베이스 관리 시스템과 대화(정보를 저장하고 처리하기 위한)하기 위한 프로그래밍 언어 데이터베이스 관리 시스템에 요청하는 것을 쿼리(Query) 라고 합니다. SQL의 역사 sql은 1970년대 관계형 데이터 모델을 기반으로 발명되었음. 처음에는 구조적 영어 쿼리 언어(SEQUEL)라고 했다가, 나중에 SQL로 줄였음. Oracle은 상용 SQL 관계형 데이터베이스 관리 시스템을 제공하는 최초의 공급업체가 되었음. 저장 프로시저 몇가지 처리에 대해 SQL로 작성한 것을 미리 관계형 데이터베이스 관리 시스템상(RDBMS)에 넣어두면 일련의 작업을 프로그램으로서 호출해 실행할 수 있는것. 저장 프로시저는 관계형 데이터베이스에 저장된 하나 이상의 sql문 모음. 소프트웨어 개발자.. 2023. 3. 16.
반응형