Skip to content

Large Files and Limits

Sangyong Bae edited this page Sep 26, 2026 · 2 revisions

ํฐ ํŒŒ์ผ๊ณผ ๊ธฐ๋Šฅ ์ œํ•œ โ€” Nexa SQL์ด ํฌ๊ธฐ์— ๋”ฐ๋ผ ๋ฌด์—‡์„ ๋„๋Š”๊ฐ€

์‚ฌ์šฉ์ž์šฉ ์„ค๋ช…์ž…๋‹ˆ๋‹ค. ๊ธฐ์ˆ  ์›์žฅ(๊ทผ๊ฑฐ ์ฝ”๋“œ ยท ์‹ค์ธก)์€ ์ €์žฅ์†Œ์˜ docs/72.

Nexa SQL์€ SQL ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ปค์ง€๋ฉด ํƒญ๋งˆ๋‹ค ๋‹จ๊ณ„๋ฅผ ์ •ํ•˜๊ณ , ๊ทธ ๋‹จ๊ณ„์—์„œ ๋ถ€๋‹ด์ด ํฐ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์„ ์ž๋™์œผ๋กœ ๋•๋‹ˆ๋‹ค. ํŽธ์ง‘ยท์„ ํƒยท์ฐพ๊ธฐยท์‹คํ–‰์€ ์–ด๋А ํฌ๊ธฐ์—์„œ๋„ ๊ทธ๋Œ€๋กœ ๋ฉ๋‹ˆ๋‹ค โ€” ๊บผ์ง€๋Š” ๊ฒƒ์€ "๋ณด๊ธฐ ์ข‹๊ฒŒ ํ•ด ์ฃผ๋Š”" ๊ธฐ๋Šฅ๋ฟ์ž…๋‹ˆ๋‹ค.

1. ๋‹จ๊ณ„๋Š” ์ด๋ ‡๊ฒŒ ์ •ํ•ด์ง‘๋‹ˆ๋‹ค

๋‹จ๊ณ„ ๊ธฐ์ค€(๋‘˜ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ๋„˜์œผ๋ฉด) ๊ธฐ๋ณธ๊ฐ’
๋ณดํ†ต โ€” โ€”
L1 ํŒŒ์ผ ํฌ๊ธฐ ๋˜๋Š” ์ค„ ์ˆ˜ 5 MB / 100,000์ค„
L2 ํŒŒ์ผ ํฌ๊ธฐ ๋˜๋Š” ์ค„ ์ˆ˜ 20 MB / 300,000์ค„
์—ด๊ธฐ ์ „์— ๋ฌป๊ธฐ ํŒŒ์ผ ํฌ๊ธฐ 50 MB
  • ๋‹จ๊ณ„๋Š” ํŒŒ์ผ์„ ์—ด ๋•Œ์™€ ์ €์žฅํ•  ๋•Œ ๋‹ค์‹œ ์ •ํ•ฉ๋‹ˆ๋‹ค. ์—ด ๋•Œ ์ƒํƒœ์ค„์— ์•ˆ๋‚ด๊ฐ€ ๋œจ๊ณ , ๊ทธ ํƒญ์ด ํ™œ์„ฑ์ธ ๋™์•ˆ ์ƒํƒœ์ค„ ์˜ค๋ฅธ์ชฝ์— L1/L2 ํ‘œ์‹์ด ๋Š˜ ๋ณด์ž…๋‹ˆ๋‹ค.
  • ๊ธฐ์ค€ ๋ฐ”๊พธ๊ธฐ: ์„ค์ • ์ฐฝ โ–ธ Files โ–ธ "Large file L1/L2 (MB ยท lines)" ๋˜๋Š” CLI nsql config set file.large_l1_mb 10 ยท nsql config set file.large_l2_lines 500000
  • ์ด ํƒญ๋งŒ ์ „๋ถ€ ์ผœ๊ณ  ์‹ถ์œผ๋ฉด: ๋ช…๋ น ํŒ”๋ ˆํŠธ(Ctrl+Shift+P) โ–ธ Toggle Large File Optimizations (This Tab) โ€” ์ƒํƒœ์ค„์˜ L1/L2 ํ‘œ์‹์ด ์‚ฌ๋ผ์ง€๊ณ  ๋ชจ๋“  ๊ธฐ๋Šฅ์ด ์ผœ์ง‘๋‹ˆ๋‹ค(๋‹ค์Œ์— ์—ด๊ฑฐ๋‚˜ ์ €์žฅํ•  ๋•Œ๊นŒ์ง€ ์œ ์ง€).

2. ๋‹จ๊ณ„๋ณ„๋กœ ๊บผ์ง€๋Š” ๊ธฐ๋Šฅ

๊ธฐ๋Šฅ L1๋ถ€ํ„ฐ L2๋ถ€ํ„ฐ ๋ฐ”๊พธ๋Š” ์„ค์ •
๋ฏธ๋‹ˆ๋งต ๋” ๋” (๋‹จ๊ณ„ ๊ณ ์ • ยท ๋ณดํ†ต ํฌ๊ธฐ์—์„œ๋„ 4,000์ค„๊นŒ์ง€๋งŒ ๊ทธ๋ฆผ)
๊ฐ™์€ ๋‹จ์–ด ์ƒ์ž(์„ ํƒ์–ด ๊ฐ•์กฐ) ๋” ๋” ๋‹จ๊ณ„ ๊ณ ์ •
์ค„ ๋ณ€๊ฒฝ ํ‘œ์‹œ(๊ฑฐํ„ฐ ๋ ) ๋” ๋” ๋‹จ๊ณ„ ๊ณ ์ •
๊ด„ํ˜ธ ์ƒ‰ยท์ง ํ‘œ์‹œ(Rainbow Pairs ํ™•์žฅ) ๋” ๋” file.large_ext_level = 0(์ œํ•œ ์—†์Œ) / l1 / l2 ยท ํ™•์žฅ ์ž์ฒด ์ƒํ•œ rainbowpair.max_kb(๊ธฐ๋ณธ 0 = ๋‹จ๊ณ„ ๋”ฐ๋ฆ„)
๊ตฌ๋ฌธ ๊ฐ•์กฐ ์ผฌ ๋”(ํ‰๋ฌธ) file.large_syntax_level = 0 / l1 / l2
์žฌ์‹œ์ž‘ ๋’ค ๋˜๋Œ๋ฆฌ๊ธฐ(๊ธฐ๋ก ํŒŒ์ผ) ์ €์žฅ ์•ˆ ํ•จ ์ €์žฅ ์•ˆ ํ•จ ๋‹จ๊ณ„ ๊ณ ์ •(editor.undo_persist_mb 4 MB ์ดํ•˜ ํŒŒ์ผ๋งŒ)
์™ธ๋ถ€์—์„œ ๋ฐ”๋€ ํŒŒ์ผ ์ž๋™ ๋ณ‘ํ•ฉ ๊ณ ์น˜์ง€ ์•Š์•˜์œผ๋ฉด ๊ทธ๋Œ€๋กœ ๋‹ค์‹œ ์ฝ์Œ ยท ๊ณ ์ณค์œผ๋ฉด ์–ด๋–ป๊ฒŒ ํ• ์ง€ ๋ฌผ์Œ ๊ฐ™์Œ file.external_merge_max_kb(2 MB)

3. ํฌ๊ธฐ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋Š˜ ๊ฑธ๋ฆฌ๋Š” ์ƒํ•œ

๋™์ž‘ ์ƒํ•œ ๋„˜์œผ๋ฉด ์„ค์ •
ํฐ ์„ ํƒ ์œ„์— ํƒ€์ดํ•‘ยท๋ถ™์—ฌ๋„ฃ๊ธฐยท์‚ญ์ œ ํ•œ ๋ฒˆ์— ์ง€์šฐ๋Š” ๊ธ€์ž 32 MB ๋จผ์ € ์•ˆ๋‚ด๊ฐ€ ๋œจ๊ณ , ๊ฐ™์€ ๋™์ž‘์„ ํ•œ ๋ฒˆ ๋” ํ•˜๋ฉด ์‹คํ–‰ editor.undo_giant_mb(0 = ์•ˆ ๋ฌผ์Œ)
๋‹ค์ค‘ ์„ ํƒ ๊ตฌ๊ฐ„ ์ˆ˜(Ctrl+D ยท Alt+F3 ยท Ctrl+ํด๋ฆญ ยท Split into Lines ยท ์—ด ์„ ํƒ) 10,000๊ฐœ ๊ฑฐ๊ธฐ์„œ ๋ฉˆ์ถ”๊ณ  ์ƒํƒœ์ค„์— ์•ˆ๋‚ด editor.max_occurrences
ํฐ ์„ ํƒ ๋ณต์‚ฌ/์ž˜๋ผ๋‚ด๊ธฐ(Ctrl+C/X) 32 MB ์ฒซ ๋ˆ„๋ฆ„์€ ์•ˆ๋‚ด, 3์ดˆ ์•ˆ์— ๋‹ค์‹œ ๋ˆ„๋ฅด๋ฉด ์‹คํ–‰ editor.copy_confirm_mb(0 = ์•ˆ ๋ฌผ์Œ)
๋˜๋Œ๋ฆฌ๊ธฐ ๋ฉ”๋ชจ๋ฆฌ 64 MB ยท 1,000 ๋‹จ๊ณ„ ์˜ค๋ž˜๋œ ๋‹จ๊ณ„๋ถ€ํ„ฐ ๋ฒ„๋ฆผ editor.undo_budget_mb ยท editor.undo_max
์„ ํƒ ๋˜๋Œ๋ฆฌ๊ธฐ(Ctrl+U) 500 ๋‹จ๊ณ„ ์˜ค๋ž˜๋œ ๋‹จ๊ณ„๋ถ€ํ„ฐ ๋ฒ„๋ฆผ โ€”
ํŒŒ์ผ ๊ฒ€์ƒ‰(Find in Files) ํŒŒ์ผ ํ•˜๋‚˜ 1 MB ๊ทธ ํŒŒ์ผ์€ ๊ฑด๋„ˆ๋œ€ search.max_file_kb
๊ฒฐ๊ณผ ์ž๋™ ํŽ˜์น˜ 200ํ–‰์”ฉ ์Šคํฌ๋กค ๋์—์„œ ๋‹ค์Œ 200ํ–‰ ยท ฮฃ = ๊ฑด์ˆ˜ ยท ์ „์ฒด ์กฐํšŒ ๋ฒ„ํŠผ grid.max_rows
๊ฒฐ๊ณผ ๋ฉ”๋ชจ๋ฆฌ 1 GB ํŽ˜์น˜๋ฅผ ๋ฉˆ์ถ”๊ณ  ์•ˆ๋‚ด grid.memory_budget_mb
๊ฒฐ๊ณผ ํƒญ 8๊ฐœ ๊ณ ์ •ํ•˜์ง€ ์•Š์€ ์˜ค๋ž˜๋œ ํƒญ๋ถ€ํ„ฐ ๋‹ซํž˜ grid.result_tabs_max
์‹คํ–‰ ์นด๋“œ 30์žฅ(ํ–ฅ์ƒ ๋ชจ๋“œ 8) ๋๋‚œ ์นด๋“œ๋ถ€ํ„ฐ ์‚ฌ๋ผ์ง run.toast_max
๋ณ€์ˆ˜ ๊ฐ’ 1 MB ์ž˜๋ผ ์ €์žฅ + ์•ˆ๋‚ด vars.max_value_kb
ํ”„๋กœ์ ํŠธ ํด๋” ์—ด๊ฑฐ ํด๋”๋‹น 5,000 "โ€ฆ ๋” ์žˆ์Œ" project.scan_max
ํŒŒ์ผ ์—ด๊ธฐ ๋‹ค์ค‘ ์„ ํƒ 10๊ฐœ ์ดˆ๊ณผ๋ถ„์€ ์ œ์™ธ ํ‘œ์‹œ file.open_max

4. ์ œํ•œ ์—†์ด ๋˜๋Š” ๊ฒƒ(๊ถ๊ธˆํ•ดํ•  ๋งŒํ•œ ๊ฒƒ)

  • ์ „์ฒด ์„ ํƒ(Ctrl+A) ยท ๋“œ๋ž˜๊ทธยทShift ์„ ํƒ ยท ๋‹ค์ค‘ ์บ๋Ÿฟ ยท ์—ด ์„ ํƒ โ€” ์–ด๋–ค ํฌ๊ธฐ๋“  ์ฆ‰์‹œ. ์„ ํƒ์€ "์‹œ์ž‘ยท๋" ๋‘ ์œ„์น˜์ผ ๋ฟ์ด๊ณ  ํ™”๋ฉด์— ๋ณด์ด๋Š” ์ค„๋งŒ ๊ทธ๋ฆฌ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ๊ทธ ์„ ํƒ ์œ„์— ํŽธ์ง‘ํ•˜๋ฉด ์œ„ 32 MB ํ™•์ธ์ด ํ•œ ๋ฒˆ ๋ง‰์•„ ์ค๋‹ˆ๋‹ค.
  • ์ฐพ๊ธฐ/๋ฐ”๊พธ๊ธฐ(์ฐพ๊ธฐ ๋ง‰๋Œ€) โ€” ์ค„ ๋‹จ์œ„๋กœ ๊ฒ€์ƒ‰ํ•ด 65 MB ํŒŒ์ผ์—์„œ๋„ ๋ฉ๋‹ˆ๋‹ค.
  • ์‹คํ–‰ โ€” ํŽธ์ง‘๊ธฐ์— ์‹ฃ์ง€ ์•Š๊ณ  ํŒŒ์ผ์—์„œ ๋ฐ”๋กœ ์‹คํ–‰(File โ–ธ Run SQL Fileโ€ฆ)๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด ๊ฒฝ๋กœ์™€ CLI nsql์€ ํŒŒ์ผ์„ ํ†ต์งธ๋กœ ์ฝ์–ด ๋ฌธ์žฅ์œผ๋กœ ๋‚˜๋ˆ„๋ฏ€๋กœ(์ŠคํŠธ๋ฆฌ๋ฐ ์—†์Œ) ๋ฉ”๋ชจ๋ฆฌ๋Š” ํŒŒ์ผ ํฌ๊ธฐ์˜ 2~3๋ฐฐ๊ฐ€ ์ž ์‹œ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

5. 50 MB๊ฐ€ ๋„˜์œผ๋ฉด ์—ด๊ธฐ ์ „์— ๋ฌป์Šต๋‹ˆ๋‹ค

์„ ํƒ ๋œป
๊ทธ๋Œ€๋กœ ์—ด๊ธฐ L2๋กœ ์—ฝ๋‹ˆ๋‹ค(์œ„ ํ‘œ๋Œ€๋กœ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ๋”)
์•ž๋ถ€๋ถ„๋งŒ 8 MB ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์•ž๋ถ€๋ถ„๋งŒ(file.large_head_mb)
์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ์—ด๊ธฐ ์‹ค์ˆ˜๋กœ ๊ณ ์น˜์ง€ ์•Š๊ฒŒ
์—ด์ง€ ์•Š๊ณ  ์‹คํ–‰ ํŽธ์ง‘๊ธฐ์— ์‹ฃ์ง€ ์•Š๊ณ  ์‹คํ–‰๋งŒ

๋ฌป์ง€ ์•Š๊ฒŒ ํ•˜๋ ค๋ฉด nsql config set file.large_ask_mb 0.

6. ์„ฑ๋Šฅ ํ–ฅ์ƒ ๋ชจ๋“œ์™€์˜ ์ฐจ์ด

์„ค์ • โ–ธ Performance boost(perf.boost)๋Š” ๋ชจ๋“  ํƒญ์—์„œ ๋ฏธ๋‹ˆ๋งตยท๊ฐ•์กฐยท์• ๋‹ˆ๋ฉ”์ด์…˜ ๋“ฑ์„ ๋„๋Š” ์ „์—ญ ์Šค์œ„์น˜์ด๊ณ , ์œ„ ๋‹จ๊ณ„๋Š” ๊ทธ ํŒŒ์ผ ํ•˜๋‚˜์˜ ํฌ๊ธฐ๋กœ ์ •ํ•ด์ง‘๋‹ˆ๋‹ค. ๋‘˜ ๋‹ค ์ผœ์ ธ ์žˆ์œผ๋ฉด ๋‘˜ ๋‹ค ๊บผ์ง„ ์ƒํƒœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

7. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰ ๋ณด๊ธฐ

์ƒํƒœ์ค„ ์˜ค๋ฅธ์ชฝ์˜ NN MB ๊ฐ€ ์ด ์•ฑ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ด๋Ÿ‰(๋งฅ = ํ™œ์„ฑ ์ƒํƒœ ๋ณด๊ธฐ์˜ "๋ฉ”๋ชจ๋ฆฌ" ยท Windows = Private Bytes)์ž…๋‹ˆ๋‹ค. ํด๋ฆญํ•˜๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ฐฝ์ด ์—ด๋ฆฝ๋‹ˆ๋‹ค(View โ–ธ Memory Usage ยท ํŒ”๋ ˆํŠธ "Memory Usage").

  • ์œ„ ๋ง‰๋Œ€ = ์ด๋Ÿ‰์„ 100 %๋กœ ๋ฐ์ดํ„ฐ ์˜์—ญ(์ƒ‰) ๊ณผ ๊ธฐํƒ€(ํšŒ์ƒ‰ ยท ๋Ÿฐํƒ€์ž„ยท๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ) ์˜ ๋น„์œจ.
  • Data = ๊ฒฐ๊ณผ ๋ฐ์ดํ„ฐ ยท ๊ฒฐ๊ณผ ํ…์ŠคํŠธ ์บ์‹œ ยท ํŽธ์ง‘๊ธฐ ๋ณธ๋ฌธ ยท ๋˜๋Œ๋ฆฌ๊ธฐ ๊ธฐ๋ก ยท ํŽธ์ง‘๊ธฐ ๊ทธ๋ฆฌ๊ธฐ ์บ์‹œ ยท ๋ฉ”ํƒ€(ํƒ์ƒ‰๊ธฐยท์™„์„ฑ) ยท ์™„์„ฑ ยท ๋กœ๊ทธ ยท ์ฐฝ ํ‘œ๋ฉด ยท ์•„์ด์ฝ˜ ์บ์‹œ. ๊ฐ’์€ ์–ด๋ฆผ์ž…๋‹ˆ๋‹ค.
  • System = ํ’‹ํ”„๋ฆฐํŠธ ยท ์ƒ์ฃผ ยท ์ต๋ช…(ํž™ยท์Šคํƒ) ยท ํŒŒ์ผ ๋งคํ•‘(๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌยท๊ธ€๊ผด) ยท ์••์ถ• ยท ํž™ ์‚ฌ์šฉ ์ค‘ ยท ํž™ ์—ฌ์œ (์˜ˆ์•ฝยท๊ฐ€์ƒ).
  • ์ฐฝ์ด ์—ด๋ ค ์žˆ๋Š” ๋™์•ˆ 1์ดˆ๋งˆ๋‹ค(์„ค์ • mem.refresh_ms) ๊ฐฑ์‹ ๋˜๊ณ , ๋‹ซ์œผ๋ฉด ์•„๋ฌด๊ฒƒ๋„ ๋Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Top ์Šค์œ„์น˜ = ๋‹ค๋ฅธ ์ฐฝ ์œ„์— ๊ณ ์ •(์„ค์ • mem.always_on_top). ์ƒํƒœ์ค„ ์ˆซ์ž๋ฅผ ๋„๋ ค๋ฉด mem.statusbar.

Clone this wiki locally