database 15

connection pool 개념 (with nodejs, mysql)

난 이미 백단에 풀을 생성해서 관리를 하고있었는데 내가 알고있는 connection pool개념과 내 db서버 작동방식이 좀 다르더라.. 프론트에서 db데이터 접근하는 요청을 날릴때마다 커넥션이 여러개 생성이 되던데 백단에서 connection pool로 db접근처리를 해놨다면 쿼리문 날릴때마다 노는 커넥션 하나 가져와서 쓰는거라 커넥션이 늘어나지 말아야할텐데? 로컬에서 작업하는거니 당연히 그래야하는데.. 계속 커넥션이 늘더라.. 뭐가 문제인지 원인을 찾았다. 그래서 connection pool의 개념을 다시 정리해보겠다. # 목적 : connection pool의 개념정리 # 기본 프론트 백 db서버 동작 구조 위 그림처럼 front에서 api요청으로(axios ajax같은거) 백단에 요청을 한다. 그..

database/MYSQL 2023.04.04

sql index 생성

유니크 인덱스는 중복값있는데 쓰지말아야함. # 인덱스 상태 확인 show index from 테이블명; show table status like '테이블명' #인덱스 생성 create index 인덱스이름 on 테이블명 (컬럼이름) #인덱스 적용 analyze table 테이블명 select * from table 할때 모두찾는거라 인덱스 사용 안하고 전체뒤짐 where 절에 나와야만 인덱스를 사용하는거임. where 절에서 인덱스 쓰려면 조건에 가공을 하면안됨 ex) mem_num *2 >=14 이런식으로 조회하면안됨. mem_num >= 7으로 조회하면 인덱스 사용함. #인덱스 제거 drop index 인덱스이름 on 테이블명; #프라이머리키 제거 alter table 테이블명 drop primary..

database/MYSQL 2022.12.03

connection pool // connection.release()를 에러발생시엔?

connection.release()를 해줘야 커넥션이 풀에 반환된다. 때문에 에러발생시에도 그냥 에러만 던지지말고 connection.release()를 해야 그 커넥션은 사용안하는걸로 되는것이다. 만약 안하게되면 에러발생시에 커넥션이 반납안되서 다른 더이상의 커넥션이 사용될수가 없는것이다. 이렇게 에러발생시에도 connection.release()를 해줘야한다. 코드 // const pool = mysql.createPool({ host: "localhost", user: "하잉", password: "비밀번호", database: "example", connectionLimit: 10, }); pool.getConnection((err, connection) => { if (err) throw er..

database/MYSQL 2022.09.24

sqlite // 커넥션 ㅈ같이 생성되지 않게 하기위해선..

curs= conn.cursor() try : insert_std = """ insert into stdtbl values ('강호동','경북'),('김제동','경남'),('김용만','서울'), ('이휘재','경기'),('박수홍','서울'); """ insert_club = """ insert into clubtbl values ('수영','101호'),('바둑','102호'),('축구','103호'), ('봉사','104호'); """ insert_stdclub = """ insert into stdclubtbl values (null, '강호동','바둑'),(null, '강호동','축구'), (null, '김용만','축구'),(null, '이휘재','축구'),(null, '이휘재','봉사'), (nu..

database/etc 2022.09.10

python - mysql // 파이썬으로 my sql 실행하기

## 파이썬 mysql 연결하기 # 모듈 설치 일단 모듈 pymysql을 설치해야한다. pip install pymysql # 모듈임포트 import pymysql #커넥션 연결 conn = pymysql.connect(host='localhost', user="root", password="비번비번비번", db='studymysql', charset='utf8') # 커서 지정 curs = conn.cursor() # 쿼리문 실행하기 create = 'create table if not exists testtable (value1 varchar(10) not null, value2 varchar(10) not null, value3 varchar(10) not null)' curs.execute(cre..

database/MYSQL 2022.09.03