๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Database

(56)
#5. ๋‘ ๋ฒˆ์งธ ์ˆ˜์—… - 2 Lab: Indexing for WHERE ๋“œ๋””์–ด ๋‘ ๋ฒˆ์งธ ์ˆ˜์—…(์‚ฌ์‹ค์ƒ ์ฒซ ๋ฒˆ์งธ ์ˆ˜์—…์ด๋‹ค. ์ €๋ฒˆ ์˜์ƒ์€ prerequisite์ด์—ˆ์–ด์„œ..)์„ ์‹œ์ž‘ํ•œ๋‹ค. ์ด๋ฒˆ ์ˆ˜์—…์€ Indexing for WHERE์œผ๋กœ ์ƒํ™ฉ์— ๋งž๊ฒŒ ์ธ๋ฑ์Šค๋ฅผ ์„ค๊ณ„ํ•˜๋Š” ๋ฒ•์„ ๋ฐฐ์šฐ๋Š” ์ˆ˜์—…์ธ ๊ฒƒ ๊ฐ™๋‹ค. ์ œ์ผ ๋จผ์ € ํ•  ์ผ์€ StackOverflow ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ชจ๋‘ drop ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. โ–  ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ ์•„๋ž˜ ์ฟผ๋ฆฌ๋ฅผ supportํ•˜๋Š” ์•Œ๋งž์€ ์ธ๋ฑ์Šค ๊ตฌ์„ฑํ•˜๊ธฐ. ๋จผ์ € ์ด ์ฟผ๋ฆฌ๊ฐ€ ์–ผ๋งŒํผ์˜ logical reads๋ฅผ ํ•˜๋Š”์ง€๋ถ€ํ„ฐ ํ™•์ธํ•ด๋ณด์ž. ์ด ์ฟผ๋ฆฌ๋Š” 7,778 ํŽ˜์ด์ง€์˜ logical reads๋ฅผ ํ•œ๋‹ค. ์ด์ œ ์ธ๋ฑ์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์„ธ์šธ์ง€๋ฅผ ๋ด์•ผํ•˜๋Š”๋ฐ, ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‹ˆ๊นŒ WebsiteUrl๊ณผ Location์œผ๋กœ ์ธ๋ฑ์Šค ์ปฌ๋Ÿผ์„ ๊ตฌ์„ฑํ•˜๊ณ  DisplayName๊ณผ Id๋ฅผ INCLUDEํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์€ ..
[SQL ํŠœ๋‹] ์ฟผ๋ฆฌ ์ด์˜๊ฒŒ ๋งŒ๋“ค๊ธฐ - ์ค‘์ฒฉ REPLACE https://youtu.be/6BL4dM12LYk ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ์— ์—ฌ๋Ÿฌ ๋ฒˆ์˜ REPLACE๋ฅผ ์ ์šฉํ•ด์•ผ ํ•  ๋•Œ ์•„๋ž˜์™€ ๊ฐ™์ด ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•œ ๊ฒฝํ—˜์ด ์žˆ์„ ๊ฒƒ์ด๋‹ค. ugly ํ•˜๊ณ  ์ฝ๊ธฐ ์–ด๋ ต๋‹ค. ์ด๊ฑธ CROSS APPLY๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ข€ ๋” ์ด์˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ›จ์”ฌ ๊ฐ€๋…์„ฑ์ด ์ข‹์•„์กŒ๋‹ค. ์„ฑ๋Šฅ์€ ๋‘ ์ฟผ๋ฆฌ ๋ชจ๋‘ ๋™์ผํ•˜๋‹ค.
#4. ์ฒซ ๋ฒˆ์งธ ์ˆ˜์—… - How to Think Like the Engine 2 (* ์ง์ ‘ ์ฝ๊ณ  ๋“ฃ๊ณ  ํ•ด์„ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋งŽ์„ ์ˆ˜ ์žˆ์Œ ์ฃผ์˜) โ–  ๋„ค ๋ฒˆ์งธ ์ฟผ๋ฆฌ SELECT * FROM dbo.Users WHERE LastAccessDate > '2014/07/01' ORDER BY LastAccessDate; ์ด๋ฒˆ์—๋Š” id๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์ปฌ๋Ÿผ์„ ๋‹ค ๊ฐ€์ง€๊ณ  ์™€๋ณด์ž. ์ด ์ฟผ๋ฆฌ๋Š” ์„ธ ๋ฒˆ์งธ ์ฟผ๋ฆฌ(id๋งŒ SELECTํ•˜๋Š” ์ฟผ๋ฆฌ)๋ณด๋‹ค ๊ต‰์žฅํžˆ ์„ฑ๋Šฅ์ด ๋ณ„๋กœ์ธ ์ฟผ๋ฆฌ๊ฐ€ ๋  ๊ฒƒ์ด๋‹ค. ์™œ ๋ณ„๋กœ์ผ๊นŒ? Do we work harder to read the data? YES. SELECT id ์ฟผ๋ฆฌ๋ž‘ ๊ฐ™์€ row๋ฅผ ์ฝ๊ฒŒ ๋˜๊ธด ํ• ๊ฑด๋ฐ, ์ด๋ฒˆ์—๋Š” About me ์ปฌ๋Ÿผ ์ฒ˜๋Ÿผ varchar(max)๋‚˜ nvarchar(max) ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ปฌ๋Ÿผ๋“ค๋„ ๊ฐ™์ด ๋”ธ๋ ค์˜ฌ ๊ฒƒ์ด๋‹ค. ์ด๋ฒˆ์—๋Š” ๊ทธ๋Ÿฐ ์ปฌ๋Ÿผ๋“ค์„ ๊ฐ–๊ณ  ์žˆ๋Š”..
[SQL ํŠœ๋‹] ์†Œํ”„ํŠธ ํŒŒ์‹ฑ vs ํ•˜๋“œ ํŒŒ์‹ฑ SGA (System Global Area) ์„œ๋ฒ„ ํ”„๋กœ์„ธ์Šค์™€ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๊ณตํ†ต์œผ๋กœ ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ์ดํ„ฐ์™€ ์ œ์–ด ๊ตฌ์กฐ๋ฅผ ์บ์‹ฑํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์บ์‹œ (Library Cache) SQL ํŒŒ์‹ฑ, ์ตœ์ ํ™”, ๋กœ์šฐ ์†Œ์Šค ์ƒ์„ฑ ๊ณผ์ •์„ ๊ฑฐ์ณ ์ƒ์„ฑํ•œ ๋‚ด๋ถ€ ํ”„๋กœ์‹œ์ €๋ฅผ ๋ฐ˜๋ณต ์žฌ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์บ์‹ฑํ•ด ๋‘๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ (SGA ๊ตฌ์„ฑ ์š”์†Œ) ์‚ฌ์šฉ์ž๊ฐ€ SQL๋ฌธ์„ ์ „๋‹ฌํ•˜๋ฉด DBMS๋Š” SQL์„ ํŒŒ์‹ฑํ•œ ํ›„ ํ•ด๋‹น SQL์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์บ์‹œ์— ์กด์žฌํ•˜๋Š”์ง€๋ถ€ํ„ฐ ํ™•์ธํ•œ๋‹ค. ๋งŒ์•ฝ ์บ์‹œ์—์„œ ์ฐพ์œผ๋ฉด ๊ณง๋ฐ”๋กœ ์‹คํ–‰ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€์ง€๋งŒ, ์ฐพ์ง€ ๋ชปํ•˜๋ฉด ์ตœ์ ํ™” ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นœ๋‹ค. ์†Œํ”„ํŠธ ํŒŒ์‹ฑ SQL์„ ์บ์‹œ์—์„œ ์ฐพ์•„ ๊ณง๋ฐ”๋กœ ์‹คํ–‰ ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€๋Š” ๊ฒƒ ํ•˜๋“œ ํŒŒ์‹ฑ SQL์„ ์ฐพ๋Š” ๋ฐ ์‹คํŒจํ•ด ์ตœ์ ํ™” ๋ฐ ๋กœ์šฐ ์†Œ์Šค ์ƒ์„ฑ๋‹จ๊ณ„๊นŒ์ง€ ๋ชจ๋‘ ๊ฑฐ์น˜๋Š” ๊ฒƒ ์ถœ์ฒ˜ : ์นœ์ ˆํ•œ ..
[SQL ํŠœ๋‹] SQL ์ตœ์ ํ™” SQL ์ตœ์ ํ™” ๊ณผ์ • โ‘  SQL ํŒŒ์‹ฑ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ SQL์„ ์ „๋‹ฌ๋ฐ›์œผ๋ฉด ๊ฐ€์žฅ ๋จผ์ € SQL ํŒŒ์„œ(Parser)๊ฐ€ ํŒŒ์‹ฑ์„ ์ง„ํ–‰ํ•œ๋‹ค. SQL ํŒŒ์‹ฑ์„ ์š”์•ฝํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ํŒŒ์‹ฑ ํŠธ๋ฆฌ ์ƒ์„ฑ : SQL ๋ฌธ์„ ์ด๋ฃจ๋Š” ๊ฐœ๋ณ„ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๋ถ„์„ํ•ด์„œ ํŒŒ์‹ฑ ํŠธ๋ฆฌ ์ƒ์„ฑ Syntax ์ฒดํฌ : ๋ฌธ๋ฒ•์  ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธ. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ฑฐ๋‚˜ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋ฅด์ง€ ์•Š๊ฑฐ๋‚˜ ๋ˆ„๋ฝ๋œ ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธ Semantic ์ฒดํฌ : ์˜๋ฏธ์ƒ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธ. ์˜ˆ๋ฅผ ๋“ค์–ด, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ…Œ์ด๋ธ” ๋˜๋Š” ์ปฌ๋Ÿผ์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€, ์‚ฌ์šฉํ•œ ์˜ค๋ธŒ์ ํŠธ์— ๋Œ€ํ•œ ๊ถŒํ•œ์ด ์žˆ๋Š”์ง€ ํ™•์ธ โ‘ก SQL ์ตœ์ ํ™” SQL ์˜ตํ‹ฐ๋งˆ์ด์ €๊ฐ€ ๋ฏธ๋ฆฌ ์ˆ˜์ง‘ํ•œ ์‹œ์Šคํ…œ ๋ฐ ์˜ค๋ธŒ์ ํŠธ ํ†ต๊ณ„์ •๋ณด๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๋‹ค์–‘ํ•œ ์‹คํ–‰๊ฒฝ๋กœ๋ฅผ ์ƒ์„ฑํ•ด์„œ ๋น„๊ตํ•œ ํ›„ ๊ฐ€์žฅ ํšจ์œจ์ ์ธ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•œ๋‹ค. ๋ฐ์ดํ„ฐ..
#3. ์ฒซ ๋ฒˆ์งธ ์ˆ˜์—… - How to Think Like the Engine (* ์ง์ ‘ ์ฝ๊ณ  ๋“ฃ๊ณ  ํ•ด์„ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋งŽ์„ ์ˆ˜ ์žˆ์Œ ์ฃผ์˜) ์˜์ƒ์—์„œ ์‚ฌ์šฉํ•  ํ…Œ์ด๋ธ”์€ StackOverflow2010.dbo.Users ํ…Œ์ด๋ธ”์ด๋‹ค. PK๋Š” Id์ด๋‹ค. clustered index๊ฐ€ Id๋กœ ์žกํ˜€์žˆ๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ์‚ฌ์‹ค์ƒ clustered index = ํ…Œ์ด๋ธ” ์ž์ฒด ๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค๊ณ  ํ•œ๋‹ค. ๋ธŒ๋ ŒํŠธ ์•„์ €์”จ๊ป˜์„œ ์˜ฌ๋ ค์ฃผ์‹  pdf ์˜ ์ฒซ ์žฅ์„ ๋ณด๋ฉด clustered index์˜ ๋ฐ์ดํ„ฐ๊ฐ€ Id๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„ ํŒŒ์ผ์„ ๋ดค์„ ๋•Œ clustered index๋Š” Id๋กœ ์ •๋ ฌ์ด ๋˜์–ด ์žˆ๊ณ  ๊ทธ ์™ธ์˜ ์ปฌ๋Ÿผ๋“ค์˜ ๊ฐ’๋„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค. → ์ •ํ™•ํ•˜๊ฒŒ ๋”ฐ์ง€์ž๋ฉด ์ด ํ‘œํ˜„์€ ๋งž์ง€ ์•Š๋Š” ๊ฒƒ์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ผ๋‹จ ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•ด๋‘์‹ ๋‹ค๊ณ  ํ•œ๋‹ค. AboutMe ์ปฌ๋Ÿผ์ด ์ข‹์€ ์˜ˆ๋‹ค. ์ด ..
#2. ์ฒซ ๋ฒˆ์งธ ์ˆ˜์—… - ์‚ฌ์ „์ž‘์—… (* ์ง์ ‘ ์ฝ๊ณ  ๋“ฃ๊ณ  ํ•ด์„ํ•œ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜ ๋งŽ์„ ์ˆ˜ ์žˆ์Œ ์ฃผ์˜) ์˜ค๋Š˜์€ ์ฒซ ๋ฒˆ์งธ ์ˆ˜์—…์„ ์ˆ˜๊ฐ•ํ•ด๋ณด๋ ค ํ•œ๋‹ค. ์ฒ˜์Œ ํ•˜๋Š” ๊ฑด ์•„๋‹ˆ์ง€๋งŒ ์žƒ์–ด๋ฒ„๋ฆฐ ์ดˆ์‹ฌ์„ ๋˜์ฐพ๊ณ ์ž ์ฒ˜์Œ์ฒ˜๋Ÿผ ์ž„ํ•  ์˜ˆ์ •์ด๋‹ค. ๋จผ์ € ์ด๋ฒˆ ์ˆ˜์—…์˜ ๋ชฉํ‘œ์ด๋‹ค. clustered index์™€ nonclustered index์˜ ์ฐจ์ด์ ์„ ๋ฐฐ์šฐ๊ฒŒ ๋  ๊ฒƒ์ด๊ณ , ์–ด๋–ป๊ฒŒ convering index๋ฅผ ๋งŒ๋“œ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์‹คํ–‰ ๊ณ„ํš์˜ ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ์„ ๋ฐฐ์šธ ๊ฒƒ์ด๋‹ค. ๋‘๊ทผ๋‘๊ทผ. ๊ทธ๋Ÿฌ๋ ค๋ฉด ๋จผ์ € ํ•ด์•ผํ•  ๊ฒƒ๋“ค์ด ์žˆ๋‹ค. ์ผ๋‹จ ๋ธŒ๋ ŒํŠธ ์•„์ €์”จ๊ป˜์„œ ์˜ฌ๋ ค์ฃผ์‹  stackoverflow ๋ฐ์ดํ„ฐ pdf 5์žฅ์„ ํ”„๋ฆฐํŠธํ•ด์•ผ ํ•œ๋‹ค. ์˜ค๋Š˜ ๋“ค์„ ์œ ํŠœ๋ธŒ ์˜์ƒ์˜ ๊ฐ•์˜์ž๋ฃŒ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ ํŽ˜์ด์ง€์ด๋‹ค. ์˜์ƒ์—์„œ ์„ค๋ช…ํ•˜๋Š” Stackoverflow ๋ฐ์ดํ„ฐ์˜ ์ผ๋ถ€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ํŒŒ์ผ์ด๋‹ค. ์ด ํŒŒ์ผ๋งŒ ์žˆ์–ด๋„ ์˜..
#1. Brent Ozar ์‹œ์ž‘ (์ง€๊ธˆ์€ ํ‡ด์‚ฌํ–ˆ์ง€๋งŒ) ์ „ ํšŒ์‚ฌ์—์„œ ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค๊ฐ€ ์šฐ์—ฐํžˆ DB ๊ด€๋ จ ์ผ์„ ์‹œ์ž‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ ๋‹น์‹œ ๋‚˜๋Š” ์ธ๋ฑ์Šค๊ฐ€ ๋ญ๋ƒ๊ณ  ๋ฌผ์œผ๋ฉด ์„ค๋ช…๋„ ์ž˜ ๋ชปํ–ˆ๋˜ ์ธ๊ฐ„์ด์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋Ÿฐ ๋‚ด๊ฐ€ ์•„๋ฌด๋Ÿฐ ์ค€๋น„ ์—†์ด ์ผ์„ ํ–ˆ๋‹ค๊ฐ„ ์ง์—…์„ ์žƒ์„ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๋Š” ์œ„๊ธฐ๋ฅผ ๋А๊ผˆ๋‹ค. ๋ญ๋ผ๋„ ๊ณต๋ถ€ํ•ด๋ด์•ผํ•  ๊ฒƒ ๊ฐ™์•„์„œ ๊ตฌ๊ธ€์„ ๋’ค์ง€๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค. ๊ทธ ๋‹น์‹œ ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋˜ DBMS๋Š” SQL Server ์˜€๊ณ  ๊ทธ์™€ ๊ด€๋ จํ•ด์„œ ์ธ๊ฐ•๊ฐ™์€ ๊ฑฐ ์—†์„๊นŒ ํ•˜๋ฉด์„œ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ Brent Ozar์ด๋ผ๋Š” ์•„์ €์”จ๋ฅผ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์งง๊ณ  ๋ถ€์กฑํ•œ ์˜์–ด ์‹ค๋ ฅ์œผ๋กœ ์‚ฌ์ดํŠธ๋ฅผ ์กฐ๊ธˆ ๋‘˜๋Ÿฌ๋ณธ ๊ฒฐ๊ณผ ์ด ์•„์ €์”จ๋Š” SQL Server์˜ ๋‹ฌ์ธ์ธ ๊ฒƒ ๊ฐ™์•˜๋‹ค. Microsoft Certified Master์ด๊ณ  ํŠœ๋‹์ด๋‚˜ DB ๋ชจ๋‹ˆํ„ฐ๋ง ๋“ฑ์˜ ๊ฒฝํ—˜์ด ๋งŽ๊ณ , ๋ˆ ๋ฐ›๊ณ  ์ปจ์„คํŒ…๋„ ํ•ด์ค€๋‹ค๋Š” ๊ฒƒ ๊ฐ™์•˜๋‹ค. ์‚ฌ์ดํŠธ๋ฅผ..