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

๐Ÿ“ŒCS/DB15

[DB] N + 1 ๋ฌธ์ œ ๊ฐœ๋… ORM์—์„œ ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๊ฐ€์žฅ ํ”ํ•œ ์›์ธ์œผ๋กœ N+1 Problem์ด ์–ธ๊ธ‰๋œ๋‹ค. N+1 Problem์€ ์ฟผ๋ฆฌ 1๋ฒˆ์œผ๋กœ N๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™”๋Š”๋ฐ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ด N๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ์ดํ„ฐ ์ˆ˜ ๋งŒํผ ๋ฐ˜๋ณตํ•ด์„œ 2์ฐจ์ ์œผ๋กœ ์ฟผ๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ORM : (Object Relational Mapping) ๊ฐ์ฒด-๊ด€๊ณ„ ๋งคํ•‘ ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ž๋™์œผ๋กœ ๋งคํ•‘(์—ฐ๊ฒฐ)ํ•ด์ฃผ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ…Œ์ด๋ธ”์„ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ์ฒด ๋ชจ๋ธ๊ณผ ๊ด€๊ณ„ํ˜• ๋ชจ๋ธ ๊ฐ„์— ๋ถˆ์ผ์น˜๊ฐ€ ์กด์žฌํ•œ๋‹ค. ORM์„ ํ†ตํ•ด ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ SQL์„ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ๋ถˆ์ผ์น˜๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. Persistence API๋ผ๊ณ ๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค. JPA : (Java.. 2021. 4. 11.
[DB] Index ์ธ๋ฑ์Šค๋ž€? ์ธ๋ฑ์Šค == ๋ชฉ์ฐจ, RDBMS์—์„œ ๊ฒ€์ƒ‰ ์†๋„๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•œ ๊ธฐ์ˆ  ์ธ๋ฑ์Šค๋Š” ๊ฒฐ๊ตญ ์ง€์ •ํ•œ ์ปฌ๋Ÿผ๋“ค์„ ๊ธฐ์ค€์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ์ผ์ข…์˜ ๋ชฉ์ฐจ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ธ๋ฑ์Šค๊ฐ€ ํ•„์š”ํ•œ ์ด์œ  ์ปดํ“จํ„ฐ๋Š” ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ(ํ…Œ์ด๋ธ” ๋“ฑ)๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆฌ๋Š”๋ฐ, ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด ๋””์Šคํฌ์—์„œ ํ…Œ์ด๋ธ” ์ „์ฒด๋ฅผ ํ›‘์œผ๋ฉด์„œ ์ฐพ์•„์•ผ ํ•˜๊ณ  ์ด๋ฅผ Full Table Scan์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ์—์„œ๋Š” ๊ต‰์žฅํžˆ ๋น„ํšจ์œจ์ ์ด๋‹ค. ๊ทธ๋ž˜์„œ Full Table Scan์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ชฉ์ฐจ์™€ ๊ฐ™์€ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ํŠน์ง• ์ธ๋ฑ์Šค๋Š” ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋œ๋‹ค. B-Tree ํ˜•ํƒœ๋กœ ์ €์žฅ๋จ ์ž์‹ ๋…ธ๋“œ๊ฐ€ 2๊ฐœ ์ด์ƒ ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” Page(Block)์„ ๊ฐ€์žฅ ๊ธฐ๋ณธ๋‹จ์œ„ ๋กœ ์‚ผ๋Š”๋‹ค. ๋””์Šคํฌ ์ฝ๊ธฐ ์“ฐ.. 2021. 4. 4.
[SQL] ๋‹ค์ค‘์ •๋ ฌ ORDER BY ๊ฒฐ๊ณผ ์ง‘ํ•ฉ์„ ์—ฌ๋Ÿฌ ์—ด๋กœ ์ •๋ ฌํ•˜๋ ค๋ฉด ORDER BY ์ ˆ์— ,(์‰ผํ‘œ) ๋กœ ๊ตฌ๋ถ„๋œ ์—ด ๋ชฉ๋ก์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค. ํ…Œ์ด๋ธ” id user_id title status created_at 1 123456789 ๊ฐ์žํƒ• OK 2020-01-08 2 456789 ๋ƒ‰๋ฉด OK 2020-01-09 3 123789 ์‚ผ๊ณ„ํƒ• COMPLETE 2020-01-10 4 12312 ์ผ€์ต OK 2020-01-09 5 45678943 ์กฑ๋ฐœ COMPLETE 2020-01-13 ์กฐ๊ฑด ์ตœ์‹ ์ˆœ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ฒŒ ํ•œ๋‹ค. status ๊ฐ’์ด COMPLETE ์ธ row๋Š” ๋งจ ์•„๋ž˜์— ๋ฐฐ์น˜๋˜์–ด์•ผ ํ•œ๋‹ค. SQL ORDER BY ๋‹ค์ค‘์ •๋ ฌ์„ ํ•  ๋•Œ, ์™ผ์ชฝ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ์ •๋ ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์ˆœ์„œ๋ฅผ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. (=์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜์—ดํ•˜์ž.) ์ฆ‰, .. 2020. 1. 9.
[MySQL] Resotre Workspace ์˜ค๋ฅ˜ DB์„œ๋ฒ„ ์ ‘์†์‹œ ์ด์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋œจ๋ฉด ๊ทธ ์ดํ›„์—๋‹ค๋ฅธ DB์„œ๋ฒ„์— ์ ‘์†์ด ์•ˆ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๋‹ค. C:\Users\์œ ์ €์ด๋ฆ„\AppData\Roaming\MySQL\Workbench\sql_workspaces์ด ์•„๋ž˜์˜ ๋‚ด์šฉ์„ ๋ชจ๋‘ ์ œ๊ฑฐํ•˜๋ฉด ์ •์ƒํ™” ๋œ๋‹ค. ์›๋ณธ๊ธ€ 2019. 12. 10.
[Sequelize v5] ์‹œํ€„๋ผ์ด์ฆˆ find ํ•จ์ˆ˜ ์˜ค๋ฅ˜ (1) ๋ฌธ์ œ TypeError: User.find is not a function ์œ„์˜ ์˜ค๋ฅ˜๊ฐ€ ์ดํ‹€๋™์•ˆ ๋‚˜๋ฅผ ๊ดด๋กญํ˜”๋‹ค.. ์ฝ”๋“œ๋ฅผ ์ƒ…์ƒ…์ด ๋’ค์ง€๋ฉฐ ์˜คํƒ€๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์ฃผ์„์œ„์น˜๋„ ๋ฐ”๊ฟ”๋ณด๊ณ  ๋…ธ์˜ค๋ ฅ์„ ํ•ด๋ดค์ง€๋งŒ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ  ์ด์ œ ์˜์‹ฌํ• ๊ฒƒ์€ find ํ•จ์ˆ˜์— ๋Œ€ํ•œ ์˜์‹ฌ๋ฐ–์— ๋‚จ์ง€ ์•Š์€ ์ƒํƒœ์˜€๋‹ค. (2) ํ•ด๊ฒฐ ํ‚ค์›Œ๋“œ๋Š” '์‹œํ€„๋ผ์ด์ฆˆ find ํ•จ์ˆ˜ ์‚ฌ์šฉ' ์œผ๋กœ ๊ฒ€์ƒ‰ํ•ด์„œ ์•„๋ž˜ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋‚ฌ๊ณ  ์ด์ „์— ๋ฌธ์ œ๊ฐ€ ๋˜์—ˆ๋˜ ์˜ค๋ฅ˜๋“ค์˜ ํ•ด๊ฒฐ๋ฐฉ์•ˆ๋„ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค. https://www.zerocho.com/category/etc/post/5b4c1d526a3abe001b94de0b (etc) Node.js ๊ต๊ณผ์„œ ์งˆ์˜์‘๋‹ต์šฉ ํฌ์ŠคํŠธ FAQ ์Šค์Šค๋กœ ํ•ด๋ณด๊ธฐ ํ’€์ด๋Š” ์—†๋‚˜์š”? - ์œ ํŠœ๋ธŒ๋‚˜ ์ธํ”„๋Ÿฐ ๊ฐ•์ขŒ์—์„œ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(์ธํ”„๋Ÿฐ์—์„œ๋„ ๋ฌด.. 2019. 5. 29.
[MySQL] MySQL ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ๋ฐฉ๋ฒ• (1) MySQL ์ ‘์†ํ•˜๊ธฐ cmd๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ์ด์ „ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. $ mysql -u root -p Enter password: mysql -u ๋’ค์—๋Š” ์‚ฌ์šฉ์ž๋ช…, -p ๋Š” ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ ์ฐฝ์ด ๋œจ๋ฉด MySQL ์„ค์น˜ ์‹œ ์„ค์ •ํ–ˆ๋˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. (2) ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ์œ„ํ•ด mysql ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‚ฌ์šฉ ํ”„๋กฌํ”„ํŠธ๊ฐ€ mysql> ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค๋ฉด ์ ‘์†๋œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. mysql> use mysql; Reading table information for completion of table and column names You can turn off this feature to get a quicker startup with -A Database .. 2019. 5. 22.