전체 글 32

show engine innodb status 보는법 - 세마포어

---------- SEMAPHORES ---------- OS WAIT ARRAY INFO: reservation count 34862552 スレッドがセマフォの配列に入ったOS待ち(OS wait)の回数 OS WAIT ARRAY INFO: signal count 116266440 ==>signal countが配列に入ってOSからシグナルを受け取った回数です。後述しますが、この回数は少ないほど良いです。 Mutex spin waits 545963329, rounds 2602243608, OS waits 17985576 RW-shared spins 44035445, rounds 395257570, OS waits 8059822 RW-excl spins 19326255, rounds 500665340, OS waits 6..

MySQL/MySQL engine 2021.08.31

read-ahead

read-ahead 란? 하나의 extent(64개 pages group)을 모두 buffer pool에 prefetch하는 작업. (asynchronous request임) 이들 페이지도 곧 읽혀질거라는 가정하에 모두 버퍼에 올리는 것 알고리즘 linear read-ahead technique: 버퍼풀 안에 순차적으로 읽혀진 페이지 개수로 판단 만약 하나의 extent내에서 순차적으로 읽혀진 페이지 개수가 innodb_read_ahead_threshold 이상이면 다음 extent전체 페이지를 read-ahead random read-ahead technique: 버퍼풀 안에 존재하는 페이지 개수로 판단(순차적인지 여부와 무관함) 만약 한 extent내의 13개의 연속된 페이지가 버퍼풀에 존재한다면, ..

query profiling하는 법 (OLD: SHOW PROFILES)

일단 우선 엑터를 확인하자. mysql> SELECT * FROM performance_schema.setup_actors; +------+------+------+---------+---------+ | HOST | USER | ROLE | ENABLED | HISTORY | +------+------+------+---------+---------+ | % | % | % | NO | NO | +------+------+------+---------+---------+ 1 row in set (0.00 sec) 이 것을 활성화 해야 한다. mysql> UPDATE performance_schema.setup_instruments SET ENABLED = 'YES', TIMED = 'YES' WHERE ..

Vagrant

VM name을 검색하기 위해서 이하의 커멘드를 실행한다. 여기서 default가 VM name이 된다. $ vagrant status Current machine states: default running (virtualbox) The VM is running. To stop this VM, you can run `vagrant halt` to shut it down forcefully, or you can run `vagrant suspend` to simply suspend the virtual machine. In either case, to restart it again, simply run `vagrant up`. 이하의 커멘드로 box 파일을 만든다. $ vagrant package [:VN..

IT PRODUCT/Vagrant 2021.07.14

Gap lock & Next key lock

Locking Read에서 팬텀리드를 막기 위해 사용하는 것이 Next key lock구조다. 이는 Row Lock과 Gap Lock을 조합한 것이다. 여기서 말하는 Gap이라는 것은 행과 행 사이의 논리적인 공간을 말한다. 행 사이에 물리적으로 공간이 있다는 뜻은 아니다. Gap Lock은 "행 사이"라는 객체가 있다고 가정하고 Lock을 거는 것을 말한다. 이러한 논리적인 행 사이에 Lock을 걸어 그 행 사이에 새로운 행이 삽입되지 않도록 한다. 다시 말해 Gap에 Lock을 걸면 Insert는 블록 된다.

MySQL 2021.07.08