티스토리 뷰
InnoDB
does not keep an internal count of rows in a table because concurrent transactions might “see” different numbers of rows at the same time.
Consequently,SELECT COUNT(*)
statements only count rows visible to the current transaction.InnoDB
processesSELECT COUNT(*)
statements by scanning the clustered index.
ProcessingSELECT COUNT(*)
statements takes some time if index records are not entirely in the buffer pool.
For a faster count, you can create a counter table and let your application update it according to the inserts and deletes it does.
However, this method may not scale well in situations where thousands of concurrent transactions are initiating updates to the same counter table. If an approximate row count is sufficient,SHOW TABLE STATUS
can be used.InnoDB
handlesSELECT COUNT(*)
andSELECT COUNT(1)
operations in the same way. There is no performance difference.
InnoDB에서는 정확한 테이블의 현재로우수를 확인할 수 없다. 병렬로 처리되기 때문에(라고 해석하면 될까)
select count(*) 쿼리는 현재 실행된 트랜젝션에서의 로우수만 확인해준다.
-> 동시간에 동일 쿼리를 날려도 결과는 다를수 있다는 의미
정확하게 빨리 count를 확인하고 싶으면 차라리 counter table 만들어서 어플리케이션단에서 카운팅을 할수 있게끔 만들어라.
하지만, 쉽지 않지. 동시처리되는 트랜젝션이 많아지면 counter table에 관리하기가 힘들거다.
show table status를 통해서 처리하는것도 한가지 방법이 될것이다.
-> 이런식으로 찾을 수 있다. select TABLE_ROWS From INFORMATION_SCHEMA.tables where table_name = '테이블명';
InnoDB에서는 select count(*)와 count(1) 작동방식은 같다. 성능적으로 다른게 없다.
출처 및 참고) https://dev.mysql.com/doc/refman/8.0/en/innodb-restrictions.html
'DB > Mysql' 카테고리의 다른 글
Mysql Index 인덱스란 (0) | 2017.01.27 |
---|
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- mysql count
- 원격접속 무료툴
- BeanCreationException
- mysql count 성능
- 젠킨스 윈도우 설치
- google vm ssh
- jenkins asyncpeople
- Google ssh console
- jenkins user list
- springboot server header
- mybatis overloading
- a태그 onclick이벤트
- 원격접속툴
- response server header
- nested exception is org.apache.ibatis.binding.BindingException\
- 작은거에소스라치게놀라는나
- 객체지향언어 자바
- select count(*) performence
- 인덱스 자료구조
- no net in java.library.path
- java.lang.UnsatisfiedLinkError
- spring mybatis
- jenkins remote api
- 젠킨스 api
- common-dbcp
- mybatis overload
- mysql 인덱스
- 스프링 마이바티즈 연동오류
- 스프링 크로스도메인
- oauth sso 차이
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함