๊ต์ฐฉ ์ƒํƒœ ๋ฐ ์ž ๊ธˆ ์ƒํƒœ์˜ ํ•ด๋… ํ‚ค ๋ฐ Page WaitResource

์ฐจ๋‹จ๋œ ํ”„๋กœ์„ธ์Šค ๋ณด๊ณ ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ SQL Server์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ต์ฐฉ ์ƒํƒœ ๊ทธ๋ž˜ํ”„๋ฅผ ์ฃผ๊ธฐ์ ์œผ๋กœ ์ˆ˜์ง‘ํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

waitresource="ํŽ˜์ด์ง€: 6:3:70133"

waitresource=โ€œKEY: 6:72057594041991168 (ce52f92a058c)โ€œ

๋•Œ๋กœ๋Š” ์—ฐ๊ตฌํ•˜๋Š” ๊ฑฐ๋Œ€ํ•œ XML์— ๋” ๋งŽ์€ ์ •๋ณด๊ฐ€ ์žˆ์ง€๋งŒ(๊ต์ฐฉ ์ƒํƒœ ๊ทธ๋ž˜ํ”„์—๋Š” ๊ฐœ์ฒด ๋ฐ ์ธ๋ฑ์Šค์˜ ์ด๋ฆ„์„ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ฆฌ์†Œ์Šค ๋ชฉ๋ก์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ) ํ•ญ์ƒ ๊ทธ๋Ÿฐ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์ด ํ…์ŠคํŠธ๋Š” ๋‹น์‹ ์ด ๊ทธ๊ฒƒ๋“ค์„ ํ•ด๋…ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์— ์žˆ๋Š” ๋ชจ๋“  ์ •๋ณด๋Š” ๋‹ค์–‘ํ•œ ์žฅ์†Œ์˜ ์ธํ„ฐ๋„ท์— ์žˆ์œผ๋ฉฐ ๋‹จ์ˆœํžˆ ๋งค์šฐ ๋ถ„์‚ฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค! DBCC PAGE์—์„œ hobt_id, ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ %%physloc%% ๋ฐ %%lockres%% ํ•จ์ˆ˜์— ์ด๋ฅด๊ธฐ๊นŒ์ง€ ๋ชจ๋“  ๊ฒƒ์„ ํ•˜๋‚˜๋กœ ๋ฌถ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

๋จผ์ € PAGE ์ž ๊ธˆ ๋Œ€๊ธฐ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•œ ๋‹ค์Œ KEY ์ž ๊ธˆ์œผ๋กœ ์ด๋™ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1) waitresource="PAGE: 6:3:70133" = Database_Id: ํŒŒ์ผ ID: ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ

์š”์ฒญ์ด PAGE ์ž ๊ธˆ์—์„œ ๋Œ€๊ธฐ ์ค‘์ธ ๊ฒฝ์šฐ SQL Server๋Š” ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ์ฃผ์†Œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

"PAGE: 6:3:70133"์„ ๋ถ„ํ•ดํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ID = 6
  • data_file_id = 3
  • ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ = 70133

1.1) database_id ํ•ด๋…

๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

SELECT 
    name 
FROM sys.databases 
WHERE database_id=6;
GO

๊ณต๊ฐœ์ž…๋‹ˆ๋‹ค DB WideWorldImporters ๋‚ด SQL ์„œ๋ฒ„์—์„œ.

1.2) ๋ฐ์ดํ„ฐ ํŒŒ์ผ ์ด๋ฆ„ ์ฐพ๊ธฐ - ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ

๋‹ค์Œ ๋‹จ๊ณ„์—์„œ data_file_id๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ์ด๋ฆ„์„ ์ฐพ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋‹ค์Œ ๋‹จ๊ณ„๋กœ ๊ฑด๋„ˆ๋›ธ ์ˆ˜ ์žˆ์ง€๋งŒ ํŒŒ์ผ ์ด๋ฆ„์— ๊ด€์‹ฌ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์ฐพ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปจํ…์ŠคํŠธ์—์„œ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๊ณ  data_file_id๋ฅผ ์ด ์ฟผ๋ฆฌ๋กœ ๋Œ€์ฒดํ•˜์—ฌ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

USE WideWorldImporters;
GO
SELECT 
    name, 
    physical_name
FROM sys.database_files
WHERE file_id = 3;
GO

WideWorldImporters ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ด๊ฒƒ์€ WWI_UserData๋ผ๋Š” ํŒŒ์ผ์ด๋ฉฐ C:MSSQLDATAWideWorldImporters_UserData.ndf๋กœ ๋ณต์›ํ–ˆ์Šต๋‹ˆ๋‹ค. (์•—, ์ œ๊ฐ€ ์‹œ์Šคํ…œ ๋“œ๋ผ์ด๋ธŒ์— ํŒŒ์ผ์„ ๋„ฃ๋Š” ๊ฑธ ์žก์•˜์–ด์š”! ์•ˆ๋ผ! ๋ถ€๋„๋Ÿฌ์›Œ์š”).

1.3) DBCC PAGE์—์„œ ๊ฐœ์ฒด ์ด๋ฆ„ ๊ฐ€์ ธ์˜ค๊ธฐ

์ด์ œ ๋ฐ์ดํ„ฐ ํŒŒ์ผ 70133์˜ ํŽ˜์ด์ง€ #3์ด WorldWideImporters ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์†ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ DBCC PAGE ๋ฐ ์ถ”์  ํ”Œ๋ž˜๊ทธ 3604๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ฐธ๊ณ : ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ํ•ญ๋ชฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์„œ๋ฒ„์˜ ๋ณต์›๋œ ๋ณต์‚ฌ๋ณธ์—์„œ DBCC PAGE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์„ ํ˜ธํ•ฉ๋‹ˆ๋‹ค. ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๊ทธ๋…€๋Š” ๋คํ”„๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค (์•ฝ. ๋ฒˆ์—ญ๊ธฐ-๋ถˆํ–‰ํžˆ๋„ ๋งํฌ๋Š” ์•„๋ฌด๋ฐ๋„ ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์ง€๋งŒ URL๋กœ ํŒ๋‹จํ•˜๋ฉด ํ•„ํ„ฐ๋ง ๋œ ์ธ๋ฑ์Šค์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.).

/* This trace flag makes DBCC PAGE output go to our Messages tab
instead of the SQL Server Error Log file */
DBCC TRACEON (3604);
GO
/* DBCC PAGE (DatabaseName, FileNumber, PageNumber, DumpStyle)*/
DBCC PAGE ('WideWorldImporters',3,70133,2);
GO

๊ฒฐ๊ณผ๋กœ ์Šคํฌ๋กคํ•˜๋ฉด object_id ๋ฐ index_id๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ต์ฐฉ ์ƒํƒœ ๋ฐ ์ž ๊ธˆ ์ƒํƒœ์˜ ํ•ด๋… ํ‚ค ๋ฐ Page WaitResource
๊ฑฐ์˜ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์ด์ œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…Œ์ด๋ธ” ๋ฐ ์ธ๋ฑ์Šค ์ด๋ฆ„์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

USE WideWorldImporters;
GO
SELECT 
    sc.name as schema_name, 
    so.name as object_name, 
    si.name as index_name
FROM sys.objects as so 
JOIN sys.indexes as si on 
    so.object_id=si.object_id
JOIN sys.schemas AS sc on 
    so.schema_id=sc.schema_id
WHERE 
    so.object_id = 94623380
    and si.index_id = 1;
GO

์—ฌ๊ธฐ์—์„œ ์ž ๊ธˆ ๋Œ€๊ธฐ๊ฐ€ Sales.OrderLines ํ…Œ์ด๋ธ”์˜ PK_Sales_OrderLines ์ธ๋ฑ์Šค์— ์žˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : SQL Server 2014 ์ด์ƒ์—์„œ๋Š” ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ DMO sys.dm_db_database_page_allocations๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ์ฒด ์ด๋ฆ„์„ ์ฐพ์„ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ฟผ๋ฆฌํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ด๋Š” ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ํ•ฉํ•˜์ง€ ์•Š์•„ DBCC PAGE๋ฅผ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

1.4) ์ฐจ๋‹จ๋œ ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‚˜์š”?

๋ˆ„์šฐ, ๋„ค. ํ•˜์ง€๋งŒ... ์ •๋ง ํ•„์š”ํ•œ๊ฐ€์š”?
์ž‘์€ ํ…Œ์ด๋ธ”์—์„œ๋„ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ข€ ๋ฉ‹์ง‘๋‹ˆ๋‹ค. ์—ฌ๊ธฐ๊นŒ์ง€ ์ฝ์œผ์…จ์œผ๋‹ˆ... %%physloc%%์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•ด ๋ด…์‹œ๋‹ค!

%%physloc%%๋Š” ๊ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•œ ๋ฌผ๋ฆฌ์  ID๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ ๋งˆ๋ฒ•์ž…๋‹ˆ๋‹ค. ๋‹น์‹ ์ด ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” SQL Server 2008 ์ด์ƒ์—์„œ sys.fn_PhysLocFormatter์™€ ํ•จ๊ป˜ %%physloc%%.

์ด์ œ ์šฐ๋ฆฌ๋Š” Sales.OrderLines์—์„œ ํŽ˜์ด์ง€๋ฅผ ์ฐจ๋‹จํ•˜๋ ค๊ณ  ํ–ˆ์Œ์„ ์•Œ์•˜์œผ๋ฏ€๋กœ ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ #3 ํŽ˜์ด์ง€์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ #70133์— ์ €์žฅ๋œ ์ด ํ…Œ์ด๋ธ”์˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Use WideWorldImporters;
GO
SELECT 
    sys.fn_PhysLocFormatter (%%physloc%%),
    *
FROM Sales.OrderLines (NOLOCK)
WHERE sys.fn_PhysLocFormatter (%%physloc%%) like '(3:70133%'
GO

๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์ž‘์€ ํ…Œ์ด๋ธ”์—์„œ๋„ ๋Š๋ฆฝ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๋ณด๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์ž ๊ธˆ์ด ๋ฐœ๊ฒฌ๋œ ์‹œ์ ๊ณผ ์ •ํ™•ํžˆ ๋™์ผํ•˜๋‹ค๋Š” ๋ณด์žฅ์ด ์•„์ง ์—†๊ธฐ ๋•Œ๋ฌธ์— ์š”์ฒญ์— NOLOCK์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์•ˆ์ „ํ•˜๊ฒŒ ๋”ํ‹ฐ ์ฝ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋งŒ์„ธ, ์ฟผ๋ฆฌ๋Š” ์šฐ๋ฆฌ ์ฟผ๋ฆฌ๊ฐ€ ์‹ธ์› ๋˜ ๋ฐ”๋กœ ๊ทธ 25๊ฐœ์˜ ํ–‰์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
๊ต์ฐฉ ์ƒํƒœ ๋ฐ ์ž ๊ธˆ ์ƒํƒœ์˜ ํ•ด๋… ํ‚ค ๋ฐ Page WaitResource
PAGE ์ž ๊ธˆ์— ๋Œ€ํ•ด ์ถฉ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. KEY ์ž ๊ธˆ์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋‹ค๋ฉด?

2) waitresource="KEY: 6:72057594041991168 (ce52f92a058c)" = Database_Id, HOBT_Id(์›ํ•˜๋Š” ๊ฒฝ์šฐ %%lockres%%๋กœ ํ•ด๋…ํ•  ์ˆ˜ ์žˆ๋Š” ๋งค์ง ํ•ด์‹œ)

์ฟผ๋ฆฌ๊ฐ€ ์ธ๋ฑ์Šค ํ•ญ๋ชฉ์„ ์ž ๊ทธ๋ ค๊ณ  ์‹œ๋„ํ•˜๊ณ  ์ž์ฒด์ ์œผ๋กœ ์ž ๊ธฐ๋ฉด ์™„์ „ํžˆ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ฃผ์†Œ๋ฅผ ์–ป๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
"6:72057594041991168 (ce52f92a058c)"๋ฅผ ์—ฌ๋Ÿฌ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ID = 6
  • hobt_id = 72057594041991168
  • ๋งค์ง ํ•ด์‹œ = (ce52f92a058c)

2.1) database_id ํ•ด๋…

์œ„์˜ ์˜ˆ์™€ ์ •ํ™•ํžˆ ๋™์ผํ•˜๊ฒŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๋‹ค์Œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ด๋ฆ„์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

SELECT 
    name 
FROM sys.databases 
WHERE database_id=6;
GO

๋‚ด ๊ฒฝ์šฐ๋Š” ๋˜‘๊ฐ™๋‹ค. DB WideWorldImporters.

2.2) hobt_id ๋ณตํ˜ธํ™”

์ฐพ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ปจํ…์ŠคํŠธ์—์„œ ํ…Œ์ด๋ธ” ๋ฐ ์ธ๋ฑ์Šค์˜ ์ด๋ฆ„์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ๋ช‡ ๊ฐ€์ง€ ์กฐ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ sys.partitions๋ฅผ ์ฟผ๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

USE WideWorldImporters;
GO
SELECT 
    sc.name as schema_name, 
    so.name as object_name, 
    si.name as index_name
FROM sys.partitions AS p
JOIN sys.objects as so on 
    p.object_id=so.object_id
JOIN sys.indexes as si on 
    p.index_id=si.index_id and 
    p.object_id=si.object_id
JOIN sys.schemas AS sc on 
    so.schema_id=sc.schema_id
WHERE hobt_id = 72057594041991168;
GO

์š”์ฒญ์ด PK_Application_Countries ์ƒ‰์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ Application.Countries ์ž ๊ธˆ์—์„œ ๋Œ€๊ธฐ ์ค‘์ž„์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

2.3) ์ด์ œ ์ผ๋ถ€ %%lockres%% ๋งˆ๋ฒ•์— ๋Œ€ํ•ด - ์–ด๋–ค ํ•ญ๋ชฉ์ด ์ž ๊ฒผ๋Š”์ง€ ํ™•์ธํ•˜๋ ค๋Š” ๊ฒฝ์šฐ

์ž ๊ธˆ์ด ํ•„์š”ํ•œ ํ–‰์„ ์ •๋ง๋กœ ์•Œ๊ณ  ์‹ถ๋‹ค๋ฉด ํ…Œ์ด๋ธ” ์ž์ฒด๋ฅผ ์ฟผ๋ฆฌํ•˜์—ฌ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฌธ์„œํ™”๋˜์ง€ ์•Š์€ %%lockres%% ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค์ง ํ•ด์‹œ์™€ ์ผ์น˜ํ•˜๋Š” ํ•ญ๋ชฉ์„ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด ์ฟผ๋ฆฌ๋Š” ์ „์ฒด ํ…Œ์ด๋ธ”์„ ์Šค์บ”ํ•˜๋ฉฐ ํฐ ํ…Œ์ด๋ธ”์—์„œ๋Š” ์ „ํ˜€ ์žฌ๋ฏธ๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT
    *
FROM Application.Countries (NOLOCK)
WHERE %%lockres%% = '(ce52f92a058c)';
GO

NOLOCK์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค(ํŠธ์œ„ํ„ฐ์—์„œ Klaus Aschenbrenner์˜ ์กฐ์–ธ์— ๋”ฐ๋ผ) ์ž ๊ธˆ์ด ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๊ฑฐ๋ž˜๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์„ ๋•Œ ๋ฌด์—‡์ด โ€‹โ€‹์žˆ์—ˆ๋Š”์ง€๊ฐ€ ์•„๋‹ˆ๋ผ ํ˜„์žฌ ๋ฌด์—‡์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ๋ฅผ ์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์€ ์šฐ๋ฆฌ์—๊ฒŒ ์ค‘์š”ํ•˜์ง€ ์•Š๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Voila, ์šฐ๋ฆฌ๊ฐ€ ์‹ธ์šด ๊ธฐ๋ก!
๊ต์ฐฉ ์ƒํƒœ ๋ฐ ์ž ๊ธˆ ์ƒํƒœ์˜ ํ•ด๋… ํ‚ค ๋ฐ Page WaitResource

๊ฐ์‚ฌ์˜ ๊ธ€ ๋ฐ ์ถ”๊ฐ€ ์ •๋ณด

๋ˆ„๊ฐ€ ์ด๋Ÿฐ ๊ฒƒ๋“ค์„ ์ฒ˜์Œ์œผ๋กœ ์„ค๋ช…ํ–ˆ๋Š”์ง€๋Š” ๊ธฐ์–ต๋‚˜์ง€ ์•Š์ง€๋งŒ, ๋‹ค์Œ์€ ์—ฌ๋Ÿฌ๋ถ„์ด ์ข‹์•„ํ•  ๋งŒํ•œ ์ตœ์†Œํ•œ์˜ ๋ฌธ์„œํ™”์— ๋Œ€ํ•œ ๋‘ ๊ฐœ์˜ ๊ฒŒ์‹œ๋ฌผ์ž…๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : habr.com

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€