반응형 [개발] 데이터베이스/MySQL5 트랜잭션 격리 수준 트랜잭션은 ACID라는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability) 를 보장해야 합니다. 원자성: 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것처럼 모두 성공하든가 모두 실패해야 합니다.일관성: 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 합니다.격리성: 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리합니다.지속성: 트랜잭션을 성공적으로 끝내면 그 결과가 항상 기록되어야 합니다. 이번 포스팅에서는 격리성에 대해서 알아보겠습니다. 트랜잭션 간에 격리성을 완벽히 보장하려면 트랜잭션을 거의 차례대로 실행해야 하며, 이 경우 동시성 처리 성능이 매우 나빠집니다.격리 수준은 4단계가 있습니다. READ_.. 2024. 10. 26. 에러) Column in field list is ambiguous 원인SQL 쿼리에서 동일한 이름의 컬럼이 여러 테이블에 존재할 때 발생합니다.이 경우 MySQL이 어느 테이블의 컬럼을 사용할지 명확하지 않기 때문에 이 에러를 발생시킵니다.SELECT id, nameFROM users u INNER JOIN orders o ON u.id = o.user_id 해결 방법테이블 명시하기 (또는 별칭 사용하기)동일한 이름의 컬럼이 있을 경우, 어느 테이블의 컬럼을 사용할 것인지 명확하게 지정합니다.SELECT u.id, u.name, o.idFROM users u INNER JOIN orders o ON u.id = o.user_id 2024. 10. 23. MySQL 프로시저를 자바 코드로 이관 MySQL 프로시저를 자바 코드로 이관하려고 합니다. 사유는 다음과 같습니다. 프로시저 안에서 트랜잭션을 선언하게 될 경우 스프링 트랜잭션과 별개로 트랜잭션이 생성되어 원자성 위배 버전관리가 어려움 프로시저의 새 버전이 나오면 _new, _v(n)등으로 새 버전의 프로시저를 생성 디버깅이 어려움 아래와 같은 프로시저가 있다고 가정합니다. CREATE PROCEDURE `procedure_v1` ( IN p_status INT(2) , IN p_member_id BIGINT ) BEGIN DECLARE v_status VARCHAR(10) DEFAULT NULL; SELECT status INTO v_status FROM member WHERE id = p_member_id; IF v_status p_st.. 2023. 11. 13. MySQL) DATABASE 에서 가장 큰 용량을 지닌 테이블 조회하기 데이터베이스를 장기간 사용하다 보면 불필요한 로우 데이터가 쌓여 용량을 많이 차지하는 경우가 있다. 대용량 테이블을 조회하여 불필요한 데이터를 정리할 수 있다. 조회하는 방법을 알아보자. SELECT table_name , table_rows , round(data_length/(1024*1024),2) AS "DATA_SIZE(MB)" , round(index_length/(1024*1024),2) AS "INDEX_SIZE(MB)" FROM information_schema.TABLES where table_schema = "DATABASE_NAME" GROUP BY table_name ORDER BY data_length DESC LIMIT 10; infomation_schema 데이터베이스에 TA.. 2021. 9. 9. 이전 1 2 다음 반응형