mysql

· mysql
서브쿼리에 대해 알아보자  우선 나의 쿼리문은 되게 간단하고 쿼리 라인수가 20자가 넘지 않았다.. ㅋㅋ 물론 길이는 중요한 건 아니지만 단순한 쿼리문이었다.경력이 있거나 유명한 사람들의 깃허브를 100개 이상 돌며 오픈소스에 있는 DAO, DEM , DQM 등등 쿼리문이 있는 파일을 탐색하였다.  우선 내가 직접 만들어서 쓰는 쿼리와 차이점을 본다면첫 번째. 쿼리 포맷팅이 이쁘게 정리되어 있다.두 번째. 서브쿼리를 잘 쓴다. SELECT의 서브쿼리부터 UPDATE의 서브쿼리까지 다양한 서브쿼리가 있었다. 서브쿼리가 있다는 건 알았지만 이렇게 자세하게 쓸 줄은 몰랐다.세 번째. 공통 코드 및 분류코드를 문자가 아닌 숫자로 저장하였다.  우선 내가 파악한 차이점은 이것이다. 첫 번째 차이점의 이유를 분석하..
· mysql
동시성   동시성문제의 필요성동시성 문제는 여러 트랜잭션이나 작업이 동시에 실행될 때 발생하는 충돌이나 데이터 무결성 문제를 의미한다. 데이터베이스 시스템에서는 여러 사용자가 동시에 데이터에 접근하고 수정할 수 있다. 이러한 상황에서 적절한 동시성 제어가 없다면 여러 문제들이 발생할 수 있다.비관적락비관적 락은 데이터 충돌이 빈번하게 발생할 것으로 예상되는 환경에서 사용된다.트랜잭션이 데이터에 접근할 때 다른 트랜잭션이 해당 데이터에 접근하지 못하도록 잠금을 거는 방식이다.이 방식은 데이터의 무결성을 강력하게 보장하지만, 동시성 성능이 저하될 수 있다.비관적 락은 데이터베이스에서 데이터를 읽거나 수정할 때, 해당 데이터에 대해 잠금을 설정하여 다른 트랜잭션이 접근하지 못하게 한다. 이는 주로 데이터의 충..
· mysql
트랜잭션의 격리 수준(Transaction Isolation Level)여러 트랜잭션이 동시에 처리될 때, 특정 트랜잭션이 다른 트랜잭션에서 변경을 하거나 조회를 하는 데이터를 볼 수 있게 허용할지 여부를 결정하는 것이.  Read UnCommitted커밋 되지 않은 데이터조차 접근할 수 있는 격리 수준이다.다른 트랜잭션의 작업이 커밋되거나 롤백되지 않았어도 즉시 보인다.예를 들어, A 사용자가 트랜잭션에서 INSERT를 통해 데이터를 추가했다고 가정한다.이때 커밋이나 롤백 여부가 결정되지 않았더라도 READ UNCOMMITTED에서는 이 데이터에 접근할 수 있다. 이는 가장 낮은 격리 수준을 가지며 높은 동시성을 제공한다.많은 성능이 요구되고 데이터 무결성 문제가 크게 우려되지 않는 경우에 사용할 수 ..
· mysql
이 글을 쓰게 된 계기 트랜잭션이라는 용어를 많이 들었고 본인은 단순히 데이터베이스의 연산이 잘못되면 롤백을 하고 , 성공하면 커밋을 한다고만 알고 있었습니다. 하지만 공부를 해보니 더욱 깊은 개념이 있었으며앞으로의 개발자 생활에 매우 중요한 개념이라고 생각하여 다시 한번 개념을 상기시키기위해 이 포스팅을 합니다.   트랜잭션의 개념 및 필요성트랜잭션은 하나 이상의 데이터베이스 연산이 묶여 하나의 작업 단위로 처리하는 행위를 의미합니다.이를 통해 데이터의 무결성과 일관을 유지할수있습니다.   트랜잭션의 ACID 속성트랜잭션의 ACID 속성은 데이터베이스의 신뢰성을 보장하는 핵심 요소입니다원자성 (Atomicity)트랜잭션 내의 모든 연산이 완전히 수행되거나 전혀 수행되지 않아야 함을 의미합니다. 이는 트..
· mysql
jdbc PreparedStatement 정적 SQL 쿼리와 값을 사용하여 생성되는 객체입니다. PreparedStatement를 사용하면 SQL 쿼리를 미리 컴파일할 수 있으므로, 동일한 쿼리를 여러 번 실행할 때 성능을 향상시킬 수 있습니다. 또한, PreparedStatement를 사용하면 SQL 삽입 공격을 방지할 수 있습니다. PreparedStatement를 생성하려면, SQL 쿼리와 값을 PreparedStatement 생성자에 전달해야 합니다. SQL 쿼리는 문자열로 전달되며, 값은 숫자, 문자열, 날짜, 시간 등 다양한 형태로 전달될 수 있습니다. PreparedStatement를 사용하여 insert update select delete 를하는 예제입니다. * 데이터베이스에 데이터를 삽..
· mysql
보호되어 있는 글입니다.