본문 바로가기
반응형

MySQL8

[DB] Prepared Statement란? Prepared Statement는 데이터베이스 쿼리를 실행 할 때 쿼리를 미리 준비하고 실행할 때 필요한 값만 바인딩하여 사용하는 방식이다. 일반적으로 SQL 쿼리를 실행할 때와 달리, Prepared Statement는 SQL 구문과 데이터 값을 분리하여 처리한다. 이러한 방식은 SQL Injection 공격을 예방하고, 반복적인 쿼리 실행 성능을 향상시키는 등 여러 가지 장점을 제공한다. 일반 Statement의 동작 방식일반적으로 SQL을 실행할 때 다음과 같은 단계를 거친다.SQL 문자열 생성--예시SELECT * FROM users WHERE name = 'Alice'; 2. 파싱 (Parsing) : SQL 문법을 검사하고, 쿼리 구조를 분석한다. 3. 컴파일(Complie.. 2025. 6. 10.
[DB] MVCC(다중 버전 동시성 제어) 동시정 제어(Concurrency Control)동시성 제어란 DBMS가 다수의 사용자 사이에서 동시에 작용하는 다중 트랜잭션의 상호간섭 작용에서 데이터베이스를 보호하는 것을 의미한다. 일반적으로 동시성을 허용하면 일관성이 낮아지게 된다.  다수 사용자의 동시 접속을 위해 DBMS는 동시성 제어를 할 수 있도록 Lock 기능과 SET TRANSACTION 명령어를 이용해 트랜잭션의 격리성 수준을 조정할 수 있는 기능도 제공한다. 이렇게 동시성을 제어하는 방법에는 낙관적 동시성 제어와 비관적 동시성 제어가 있다. 낙관적 동시성 제어(Optimistic Concurrency Control)사용자들이 같은 데이터를 동시에 수정하지 않을 것이라고 가정데이터를 읽는 시점에 Lock을 걸지 않는 대신 수정 시점에 .. 2025. 3. 26.
[MySQL] UPDATE 쿼리 시 에러코드 1175 처리 MySQL에서 제공하는 워크벤치를 설치하여 이용하는 경우에 update 시 이런 에러가 날 수 있다.  저 로그를 해석해보면 UPDATE에 대해서 안전 모드로 되어 있기 때문에 발생한 문제라고 한다. 따라서 안전모드(SAFE MODE)를 꺼주면 된다. 제일 간단한 방법은 옵션을 바꿔주는 명령어 하나만 샐행하면 된다. SET SQL_SAFE_UPDATES = 0;  그러면 update 쿼리가 실행된다. 2024. 6. 19.
[DataBase]inner join과 left join의 차이 지금까지 개발을 하면서 제일 많이 썼던 JOIN 방식 중 두개의 차이를 알아보고자 한다. 보통 JOIN 연산의 경우 데이터를 가지기 위해 테이블을 합치는 경우가 많은데 이 때 inner join과 left join을 많이 쓰게 된다. 이 두가지 방식의 차이점을 알아보자. 예시를 위해 개발하고 있는 프로젝트의 게시판 테이블과 게시판 댓글 테이블을 사용해 예시를 들겠다. 게시판 테이블의 행은 106개이고 댓글 테이블의 행은 52개이다. LEFT JOIN left join은 outer join의 일종이다. 여기서 중요한건 outer join은 합집합을 의미한다는 것이다. 따라서 왼쪽에 있는 테이블의 모든 행을 조회하게 된다. 쿼리를 이렇게 날리게 되면 왼쪽에 있는 테이블인 board 테이블의 모든 행을 다 조.. 2023. 5. 12.
반응형