ํฐ์คํ ๋ฆฌ ๋ทฐ
์ฝ์ํธ ์์ฝ์์คํ - Index์ ๋ฐ๋ฅธ ์๋ ์ฐจ์ด์ ๊ฐ์ ๋ณด๊ณ ์ (์ธ๋ฑ์ฑ ์ด๋ณด์ ๋ณด๊ณ ์ ์ ๋๋ค. ๊ฒ์์ผ๋ก ๋ค์ด์ค์ ๋ถ์ ์ ํํ ์ ๋ณด๊ฐ ์๋ ์ ์์ผ๋ ์ฃผ์ํ์ธ์!)
dev_0hoon 2024. 8. 6. 19:37๐๊ฐ์
- ๋์ ์๋๋ฆฌ์ค์์ ์ํํ๋ ์ฟผ๋ฆฌ๋ค์ ์์งํด๋ณด๊ณ , ํ์ํ๋ค๊ณ ํ๋จ๋๋ ์ธ๋ฑ์ค๋ฅผ ์ถ๊ฐํ๊ณ ์ฟผ๋ฆฌ์ ์ฑ๋ฅ๊ฐ์ ์ ๋๋ฅผ ์์ฑํ์ฌ ์ ์ถ
- ์์ฃผ ์กฐํํ๋ ์ฟผ๋ฆฌ, ๋ณต์กํ ์ฟผ๋ฆฌ ํ์
- Index ์ถ๊ฐ ์ ํ Explain, ์คํ์๊ฐ ๋ฑ ๋น๊ต
๐ฉ ์ฝ์ํธ ์์ฝ์์คํ ์ฌ์ฉ์ ํ๋ก์ฐ
- ์ฌ์ฉ์ ์ฒซ ์ ๊ทผ ์ ํ ํฐ์ ๋ฐ๊ธ, -> ๋๊ธฐ์ด์์ ๊ธฐ๋ค๋ฆผ ->์ฐจ๋ก๊ฐ ์ค๋ฉด ํ์ฑํ ํ ํฐ
- ์ฝ์ํธ ์์ฝ ๊ฐ๋ฅ ๋ ์ง๋ฅผ ์กฐํํ๋ค.
- ์ฝ์ํธ ์์ฝ ๊ฐ๋ฅ ์ข์์ ์กฐํํ๋ค.
- ์ฝ์ํธ ์ข์์ ์์ฝํ๋ค.
- ์ข์์ ๊ฒฐ์ ํ๋ค.
์ฌ์ฉ์๋ ํฌ๊ฒ 5๊ฐ์ ํ๋ก์ฐ๋ฅผ ํ๊ฒ๋๋ค. ๊ทธ ์ค์ 1๋ฒ์ ํด๋นํ๋ ํ ํฐ์ Redis์์ ๊ด๋ฆฌ๋๋ฉฐ, ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ง ์๊ฒ ๋ ์งํํ๋ คํ๋ค.
2,3,4,5๋ฒ์ ํ๋ก์ฐ์์๋ ์ฟผ๋ฆฌ๊ฐ ์ฌ์ฉ ๋๋ค.
โถ๏ธ ์์ฝ ๊ฐ๋ฅ ๋ ์ง ์กฐํ
select
cs1_0.concert_schedule_id,
cs1_0.concert_id,
cs1_0.concert_at,
cs1_0.create_at,
cs1_0.price,
cs1_0.total_available,
cs1_0.update_at
from
concert_schedule cs1_0
where
cs1_0.concert_id=?
- ์ Query๋ concert_Id๋ฅผ ์กฐ๊ฑด์ผ๋ก ๊ฒ์ํ๋ค.
- ์ฝ์ํธ ๋ง๋ค ์ฌ๋ฌ ์ผ์์ ๊ณต์ฐ์ ํ๋ค๋ฉด, ์ฝ์ํธ ๋ง๋ค ๊ฒ์ํ ๋์ full scan์ ์ด์ฉํ๋ ๊ฒ๋ณด๋ค ์ฑ๋ฅ์ด ํฅ์ ๋ ๊ฐ๋ฅ ์ฑ์ด ์๋ค.
โถ๏ธ ์์ฝ ๊ฐ๋ฅ ์ข์ ์กฐํ
SELECT *
FROM CONCERT_SEAT s
WHERE s.CONCERT_SCHEDULE_ID = 1
AND s.status = 'UNASSIGNED';
- 2๊ฐ์ where์ ์ด ๊ฑธ๋ฆฐ๋ค.
- status๋ ๋ฐฐ์ ๋์ง ์์๋ค๋ ๋ป์ "UNASSIGNED" ๊ฐ์ ์ฌ์ฉํ๊ณ ์๋ค.
- concert_schedule_id๋ก ๋จผ์ ์์๋ฅผ ์ก๊ณ status๋ฅผ ์ฌ์ฉ ์ค์ด๋ค. ์์๋๋ก ๋ณตํฉ index๋ฅผ ๊ฑธ์ด์ผ๊ฒ ๋ค.
> ์ 2๊ฐ์ ์กฐํ ์ฟผ๋ฆฌ๋ง ๋ณด๋๋ผ๋ concert_schedule์ concert_Id ์ปฌ๋ผ๊ณผ concert_seat์ status ๊ฐ์ index๋ฅผ ๊ฑธ๋ฉด ์ฑ๋ฅ์ด ๋ ๋์์ง์ง ํฅ๋ถ๋์ด ์๋ฉ์ด๊ฐ ๋ค์ฉ์ด๊ฒ ๋์๋ค..!!..!
๐๏ธโ๏ธ ํ ์คํธ ๋ฐฐ๊ฒฝ
Concert 1๊ฐ
ConcertShedule ์ฝ์ํธ ๋ง๋ค 2๊ฐ ์ผ์
ConcertSeat ์ฝ์ํธ ์ค์ผ์ฅด๋ง๋ค 100๋ง๊ฐ์ ์ข์
์ด seat๋ 2๋ฐฑ๋ง ๊ฐ๋ก ๋ง๋ค์๋ค. (์ด ์ด์์ ๋๋ฌด ์ค๋๊ฑธ๋ ค..)
> ๊ทธ ์ค 30๋ง๊ฐ๋ ์์๋ฐฐ์ , 10๋ง๊ฐ๋ ๋ฐฐ์ , 60๋ง๊ฐ๋ ๊ณต์ ์ํ์ด๋ค.
๋์ Query (์์ฝ ๊ฐ๋ฅ ์ข์ ์กฐํ)
SELECT *
FROM CONCERT_SEAT s
WHERE s.CONCERT_SCHEDULE_ID = 1
AND s.status = 'UNASSIGNED';
-None Index
์คํ ๊ณํ
SELECT
"S"."ASSIGNMENT_TIME",
"S"."CONCERT_SCHEDULE_ID",
"S"."CONCERT_SEAT_ID",
"S"."SEAT",
"S"."TEMP_ASSIGNMENT_TIME",
"S"."USER_ID",
"S"."STATUS"
FROM "PUBLIC"."CONCERT_SEAT" "S"
/* PUBLIC.CONCERT_SEAT.tableScan */
/* scanCount: 2000001 */
WHERE ("S"."CONCERT_SCHEDULE_ID" = CAST(1 AS BIGINT))
AND ("S"."STATUS" = CAST('UNASSIGNED' AS ENUM('ASSIGNED', 'TEMP', 'UNASSIGNED')))
/*
reads: 97421
*/
- On Index
์คํ ๊ณํ
CREATE INDEX idx_concer_schedule_id_status ON CONCERT_SEAT(CONCERT_SCHEDULE_ID, STATUS);
SELECT
"S"."ASSIGNMENT_TIME",
"S"."CONCERT_SCHEDULE_ID",
"S"."CONCERT_SEAT_ID",
"S"."SEAT",
"S"."TEMP_ASSIGNMENT_TIME",
"S"."USER_ID",
"S"."STATUS"
FROM "PUBLIC"."CONCERT_SEAT" "S"
/* PUBLIC.IDX_CONCER_SCHEDULE_ID_STATUS: CONCERT_SCHEDULE_ID = CAST(1 AS BIGINT)
AND STATUS = CAST('UNASSIGNED' AS ENUM('ASSIGNED', 'TEMP', 'UNASSIGNED'))
*/
/* scanCount: 600001 */
WHERE ("S"."CONCERT_SCHEDULE_ID" = CAST(1 AS BIGINT))
AND ("S"."STATUS" = CAST('UNASSIGNED' AS ENUM('ASSIGNED', 'TEMP', 'UNASSIGNED')))
/*
reads: 55811
*/
ํ์คํ ์๋๊ฐ ๋นจ๋ผ์ง ๋ชจ์ต์ด๋ค..! (์๋ฉ์ด ๋ค์ช)๐คฆโ๏ธ๐คฆ๐คฆโ๏ธ~~
? ๐คท ๊ถ๊ธํ๋ ๋ถ๋ถ
- ์ฒ์์ 60๋ง๊ฐ๋ง ๊ณต์์ผ๋ก ๋ ์ด์ ๋, index๋ฅผ ์ค์ ํ๋ฉด ์กฐ๊ฑด์ ์ํด allScane์ด ์๋ where์ ์ ๋ง๊ฒ ์กฐ๊ฑด์ ๊ฐ์ ธ์จ๋ค๋ ์ ์ด๋ค.
๋ง์ฝ ๊ฐฏ์์์ ์๋์ ์ผ๋ก ์ ์ status๋ฅผ ํธ์ถํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น?
- TEMP (30๋ง๊ฐ)
- ASSIGNED(10๋ง๊ฐ)
ํ์คํ status์ ์์ด ์ ์ ์๋ก ์๋๊ฐ ๋นจ๋ผ์ก๋ค..!
? ๐คท๋ง์ง๋ง์ผ๋ก ๋๋ 2๊ฐ์ง ์๋ฌธ์
1) ์ฒ์ ์ฝ์ํธ๊ฐ ์ด๋ ค์ ๋ชจ๋ ๊ณต์์ด๋ผ๋ฉด, allScan์ ๊ฐ๊น์ธ ๊ฒ์ด๋ค. ์๊ฐ์ด ์ง๋์ ์ฌ์ฉ์๊ฐ ์ข์์ ์์ฝํ ์๋ก ๋นจ๋ผ์ง ๊ฒ์ธ๋ฐ ์ด๋ป๊ฒ ์ด ๋ถ๋ถ์ ํด๊ฒฐ ํ ์ ์์๊น?
> ๋ชจ๋ฅด๊ฒ ๋ค. ์ง๋ฌธํด์ผ์ง..
2) status๋ ์ฌ์ฉ์์ ์์ฝ์ ๋ฐ๋ผ ๋ฐ๋ ๊ฒ์ด๋ฉฐ, ๊ทธ๋งํผ index ์ฌ์ ๋ ฌ๋ก db์ ๋ถํ๋ฅผ ์ค ๊ฒ์ด๋ค.
> ์ฌ์ฉ์๊ฐ ์ข์์ ์ ํํ ๋ ์๋ก๊ณ ์นจ, ์ ํ ์ข์ ์ ์ ์คํจ ๋ฑ์ ์ด์ ๋ก ์ฌ๋ฌ๋ฒ ์กฐํํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ ๋ฐ์ดํธ ๋น์ฉ๋ณด๋ค๋ ์ธ๋ฑ์ฑ์ ํ๋ ๊ฒ์ผ๋ก ์กฐ๊ธ์ด๋๋ง ๋ถํ๋ฅผ ๋ฎ์ถ ์ ์์ ๊ฒ ๊ฐ๋ค.
'ํฅํด99' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
- Total
- Today
- Yesterday
- ์คํ๋ง๊ณต๋ถ
- JPA
- filter
- rejectValue
- hypertexttransferprotocol
- ์ปจํธ
- thymleaf
- BindingResult
- exception
- ArgumentResolver
- ํฅํด99
- Java
- ํฅํดํ๋ฌ์ค๋ฐฑ์๋
- ์์ธ์ฒ๋ฆฌ
- ๋ฆฌํฐ๋ด
- SpringBoot
- React
- react์คํ
- ํญํด99
- ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ญ๋
- ์คํ๋ง๋ถํธ
- ๋ก๊ทธ์ธ
- ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๊ณต๋ถ
- Intercepter
- ํญํดํ๋ฌ์ค
- reject
- jpa api
- ํฅํดํ๋ฌ์ค
- HTTP
- ์ธํฐ์ ํฐ
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |