본문 바로가기
반응형

database6

[DataBase] 인덱스란? 인덱스란 테이블의 특정 컬럼을 빠르게 조회할 수 있도록 만든 자료구조이다. 보통 B-Tree(Balanced Tree) 구조를 사용하여 빠른 탐색이 가능하다. 데이터를 직접 읽는 게 아니라 색인을 먼저 보고 해당 데이터 위치를 찾아가게 된다. 예제blog 테이블에서 blog_category = 1인 데이터를 찾는 쿼리SELECT * FROM blog WHERE blog_category = 1; 인덱스가 없으면데이터 전체를 처음부터 끝까지 풀 스캔(Full Table Scan)100만 개 중에서 10개만 필요해도 전부 읽어야 하기 때문에 느리다. 인덱스를 추가하면?인덱스 = 책의 목차 같은 역할CREATE INDEX idx_blog_category ON blog (blog_category);이제 blog_.. 2025. 3. 26.
[DataBase] 외래키(Foreign Key)에 관한 고찰... 스타트업에 이직 후 업무 중 거의 대부분의 테이블에 외래키 설정이 안되어 있는 것을 알게 되었다. 대학교에서나 기존 직장에서는 왠만하면 외래키 설정이 되어 있었기 때문에 의아한 부분이였다.  다행히 직속 팀장님이 과거 데이터베이스 코어단을 직접 만드시던 디비 전문가셨기 때문에 바로 질문을 드렸고 답변을 해주셨다. 외래키란? 관계형 데이터베이스 관리 시스템(RDBMS)은 테이블 간의 관계를 정의하기 위해 외래키(foreign key)를 사용한다. 외래키는 한 테이블의 열이 다른 테이블의 기본 키(Primary Key)와 연결됨으로써 데이터 무결성을 보장하고, 테이블 간의 관계를 명확하게 정의하는 역할을 한다. 이는 데이터 중복을 방지하고 정합성을 유지하는데 중요한 요소로 작용한다.  과거에는 컴퓨팅 자원이.. 2025. 1. 6.
[Golang] echo postgresql 연결 시 panic: sql: unknown driver "postgres" (forgotten import?) 문제 해결 새롭게 시작한 프로젝트에서 go 언어를 도입해봤다. 배우기 시작한지 1주일도 안됐지만 에러가 터져나오는데 데이터베이스로 postgresql을 선택한 뒤 연결 하려고 했다. package storage import ( "database/sql" "fmt" "log" "os" "github.com/joho/godotenv" ) var db *sql.DB func InitDB() { err := godotenv.Load() if err != nil { log.Fatal("Error loading .env file") } dbHost := os.Getenv("DB_HOST") dbPort := os.Getenv("DB_PORT") dbUser := os.Getenv("DB_USER") dbPass := os.G.. 2023. 11. 29.
[MySQL] AWS RDS MySQL Too many connections 에러 프로젝트를 하던 중에 갑자기 위 에러가 떴다. 즉 모든 연결 가능한 커넥션들이 다른 clients 들에 의해 쓰이고 있다는 것이고 max_connect_errors 동안 커넥션에 실패하면 이후의 모든 커넥션이 블로킹이 되버린다. 일단 왜 커넥션을 확인해보니 현재 59개가 연결되어 있고 show variables like '%max_connections%'; 명령어를 통해 max_connections를 보니 60이였다. 참고로 이 RDS는 db.t3.micro이고 기본 max_connections는 66이라고 한다. 왜 커넥션 수가 증가 했는지도 파악하긴 해야겠지만 일단 당장 에러가 났으니 커넥션 수를 늘리려고 시도했다. 방법은 두가지인데 RDS 인스턴스 스펙을 db.t3.small로 올리던가(이러면 15.. 2023. 10. 5.
반응형