Database
-
Mysql Lock이란?Database/Mysql 2023. 2. 6. 00:11
Lock 이란? 리소스로의 접근 경쟁을 제어하기 위한 잠금 장치이다. 메모리로 접근할 수 있는 문을 잠궈서(lock을 걸어서) 스레드가 메모리로 접근하지 못하게 하거나 (운영체제 관점) DB 데이터에 접근할 수 있는 문을 잠궈서(lock을 걸어서) 트랜잭션이 데이터에 접근하지 못하게 하는 (DB 관점) 등 리소스를 보호하기 위한 다양한 경우에 사용하는 상호배제를 위한 '개념'이다. 이 개념은 뮤텍스나 세마포어 등 다양한 형태로 구현된다. Mysql에서의 Lock 종류 공유 잠금(Shared lock, 일명 s lock) - 한 트랜잭션이 특정 데이터에 lock을 걸어도 다른 트랜잭션에서 그 데이터에 읽기 접근은 가능하다. 쓰기 등 다른 접근은 불가능하다. - read lock이라고도 불륀다. (개인적으로..
-
DB TransactionDatabase/Mysql 2021. 7. 17. 17:05
트랜잭션이란? DB의 데이터를 변화시키는 논리적인 작업 단위 트랜잭션의 특징 Atomicity(원자성) : 트랜잭션에 포함된 작업은 전부 수행되거나 전부 수행되지 않는다. Consistency(일관성) : 트랜잭션의 실행과 상관없이 DB내의 데이터는 항상 일관된 상태를 유지한다. Isolation(격리성) : 한 트랜잭션에 의해 선점된 데이터를 타 트랜잭션의 선점으로부터의 격리 수준을 조절할 수 있다. Durability(지속성) : 성공적으로 종료된 트랜잭션은 변경한 데이터가 유실되지 않도록 결과를 DB에 완전히 반영시킨다. 트랜잭션 연산 commit : 트랜잭션 내의 데이터 보정 작업들이 모두 완료되면, 보정된 데이터들을 한꺼번에 DB에 반영하고 트랜잭션을 종료하는 연산 rollback : 트랜잭션 ..
-
MyISAM vs InnoDB (링크)Database/Mysql 2021. 6. 23. 01:03
https://hyoje420.tistory.com/39 [MySQL]Storage Engine(MyISAM vs InnoDB) Storage Engine 먼저 MySQL에는 크게 두 가지의 엔진이 존재한다. 하나는 서버 엔진이고 하나는 스토리지 엔진이다. 서버 엔진은 쿼리 요청이 왔을 때 쿼리 파싱(Query parsing)을 하여 스토리지 엔진에 hyoje420.tistory.com IDE에 비유하여 이 둘을 비교해놨는데, 굉장히 이해가 쏙쏙 잘 됐다. MyISAM은 vi와 비슷하고 InnoDB는 Eclipse, Intellij와 비슷하다고 한다. 진짜 맞는지는 실제로 안써봐서 잘 모르겠다만, 그래도 다른 블로그 글들보다는 이해가 잘 됐다.
-
트랜잭션Database/Basics 2019. 4. 6. 15:25
■트랜잭션이란?? - db 내에서 한꺼번에 수행되어야 할 연산들의 작업 단위 ■트랜잭션의 특징- 트랜잭션 내의 모든 연산은 반드시 한꺼번에 완료가 되어야 하며그렇지 않은 경우에는 한꺼번에 취소되어야 하는 원자성을 가져야 한다.- 모두 정상적으로 완료가 된 경우 -> COMMIT(작업결과는 데이터베이스에 반영)- 하나라도 비정상적으로 종료된 경우 -> ROLLBACK(작업결과는 모두 취소, 데이터베이스에 반영x) ■트랜잭션의 성질- 원자성(Atomicity)분리 할수 없는 하나의 단위로 작업은 모두 완료되거나 모두 취소 되어야 한다.- 일관성(Consistency)사용되는 모든 데이터는 일관되어야 한다.- 격리성(Isolation)접근하고 있는 데이터는 다른 트랜잭션으로 부터 격리 되어야 한다.트랜잭션이 ..
-
inner join vs outer joinDatabase/Basics 2019. 4. 6. 14:31
■조인(join)- 2개 이상의 테이블들을 공통된 조건으로 데이터를 합쳐 표현!- inner join과 outer join이 있다 ■inner join- 두 테이블간의 조인 조건을 만족하는 row'만' 리턴 - 예제 1)select m.mem_no,o.order_no,p.prd_nofrom member m,order o,product pwhere 1=1and m.mem_no=o.mem_noand o.prd_no=p.prd_noand m.mem_no like '1%'- 예제 2) select m.mem_no,o.order_no,p.prd_nofrom member mjoin order oon m.mem_no=o.mem_nojoin product pon o.prd_no=p.prd_nowhere 1=1and m..