You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
InnoDB log buffer를 검색하면 대부분 redo log buffer가 나오더라고요. 그래서 그냥 자주 등장하니까 간단하게 설명드리면, 라빈이 설명한 것 처럼 DB에서는 버퍼 풀을 두고 DB에 작업이 생기면 메모리에 위치한 버퍼 풀에 저장해두다가 한 번에 DB로 flush 한다고 해요.
그런데 혹시나 버퍼 풀에 저장해야 할 데이터가 들어있는데 시스템이 다운되면? 해당 데이터가 다 날라가게 됩니다. 이러한 위험성을 대비하기 위한 것이 redo log입니다. 하나의 트랜잭션에서 작업한 내역을 로그로 저장해두고 추후 데이터가 날라가더라도 이 로그를 보고 복구가 가능하다고 하네요. 그렇다면 이 로그를 트랜잭션이 커밋될 때마다 DB에 저장하면 버퍼 풀을 사용하는 의미가 없겠죠?(물론 데이터의 크기는 차이가 있을 수는 있어요..ㅎㅎ) 그래서 이 redo log를 저장하는 풀이 있는데 이게 redo log buffer에요.
redo log도 몇 가지 설정을 해줄 수 있는데, 해당 링크에서 말하기에는 innodb_flush_log_at_trx_commit을 기본값으로 1로 설정한다고 해요. 해당 설증은 언제 메모리(redo log buffer)에서 DB로 기록하는 지를 설정하는 것이라고 해요. 그리고 설정 값 1은 트랜잭션 커밋이 발생하면 로그를 DB에 기록한다고 하네요.
0번과 2번은 좀 더 I/O를 줄이는 방법인데 시스템에 따라 원활하게 동작하지 않는 경우도 많아서 주로 1로 쓰는 것 같아요.
질문 :
바이너리 로그 버퍼
나InnoDB 로그 버퍼
로 읽고 쓰는 작업의 빈도를 어떻게 줄일 수 있는지 궁금해요~~The text was updated successfully, but these errors were encountered: