Chat now with support
Chat with Support

SQL Optimizer for Oracle 9.2.2 - User Guide (Korean)

SQL Optimizer μ‚¬μš©

μžμŠ΅μ„œ: Optimize SQL(SQL Rewrite)

Optimize SQL의 SQL Rewrite λͺ¨λ“œλŠ” 두 단계λ₯Ό 톡해 μ‚¬μš©λ©λ‹ˆλ‹€. 첫 번째 λ‹¨κ³„μ—μ„œ SQL OptimizerλŠ” μ›λž˜ SQL λ¬Έμ— λŒ€ν•œ κ³ μœ ν•œ μ‹€ν–‰ κ³„νšκ³Ό 의미둠적으둜 λ™μΌν•œ λŒ€μ²΄ μ‹€ν–‰ κ³„νšμ„ μƒμ„±ν•©λ‹ˆλ‹€. μƒμ„±λœ 각 λŒ€μ²΄ μ‹€ν–‰ κ³„νšμ— λŒ€ν•΄ Oracle λΉ„μš© μ˜ˆμƒμΉ˜κ°€ ν‘œμ‹œλ©λ‹ˆλ‹€. 두 번째 λ‹¨κ³„μ—μ„œ SQL OptimizerλŠ” λŒ€μ²΄ μ‹€ν–‰ κ³„νšμ„ μ‹€ν–‰ν•˜μ—¬ 각 λ¬Έμž₯의 μ„±λŠ₯을 ν…ŒμŠ€νŠΈν•©λ‹ˆλ‹€. 이λ₯Ό 톡해 λ°μ΄ν„°λ² μ΄μŠ€ ν™˜κ²½μ— κ°€μž₯ μ ν•©ν•œ SQL 문을 찾을 수 μžˆλŠ” μ‹€ν–‰ μ‹œκ°„ 및 μ‹€ν–‰ μ‹œκ°„ 톡계λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€.

팁: Oracle λΉ„μš©μ€ SQL λ¬Έ 싀행에 ν•„μš”ν•œ λ¦¬μ†ŒμŠ€μ˜ μ˜ˆμƒ μ‚¬μš©μΉ˜λ₯Ό μ œκ³΅ν•  λΏμž…λ‹ˆλ‹€. λΉ„μš©μ΄ 높은 λ¬Έμž₯이 더 잘 μˆ˜ν–‰λ  수 μžˆμœΌλ―€λ‘œ μƒμ„±λœ λŒ€μ²΄ Execution Plan을 ν…ŒμŠ€νŠΈν•˜μ—¬ λ°μ΄ν„°λ² μ΄μŠ€ ν™˜κ²½μ— κ°€μž₯ μ ν•©ν•œ λ¬Έμž₯을 κ²°μ •ν•΄μ•Ό ν•©λ‹ˆλ‹€.

1단계: SQL λ¬Έ μ΅œμ ν™”

  1. μ£Ό μ°½μ—μ„œ Optimize SQL 탭을 μ„ νƒν•©λ‹ˆλ‹€.

  2. Optimize SQL μ‹œμž‘ νŽ˜μ΄μ§€μ—μ„œ SQL Rewriteλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

    μ°Έκ³ : μ‹œμž‘ νŽ˜μ΄μ§€κ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμœΌλ©΄ μ˜†μ˜ ν™”μ‚΄ν‘œλ₯Ό λˆ„λ₯΄κ³  New SQL Rewrite Session을 μ„ νƒν•©λ‹ˆλ‹€.

  3. Alternative Details 창에 SQL 문을 μž…λ ₯ν•©λ‹ˆλ‹€.

  4. 을 ν΄λ¦­ν•˜μ—¬ SQL 문의 Execution Plan을 κ²€μƒ‰ν•©λ‹ˆλ‹€.Select Connection and Schema 창이 ν‘œμ‹œλ©λ‹ˆλ‹€.

  5. μ‚¬μš©ν•  μ—°κ²° 및 μŠ€ν‚€λ§ˆλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  6. 을 ν΄λ¦­ν•˜μ—¬ SQL 문을 μ΅œμ ν™”ν•©λ‹ˆλ‹€.

  7. μ›λž˜ SQL λ¬Έκ³Ό μƒμ„±λœ λŒ€μ²΄ SQL 문을 λΉ„κ΅ν•˜λ €λ©΄ SQL Optimizerκ°€ SQL Rewrite ν”„λ‘œμ„ΈμŠ€λ₯Ό μ™„λ£Œν•œ ν›„ 을 λˆ„λ¦…λ‹ˆλ‹€.

2단계: λŒ€μ²΄ SQL λ¬Έ ν…ŒμŠ€νŠΈ

SQL Optimizerκ°€ μƒμ„±ν•˜λŠ” λŒ€μ²΄ λ¬Έμž₯을 ν…ŒμŠ€νŠΈν•˜λ €λ©΄ ν•˜λ‚˜ μ΄μƒμ˜ μ„ νƒλœ λŒ€μ²΄ λ¬Έμž₯을 ν…ŒμŠ€νŠΈν•˜μ—¬ μ‹€μ œ μ‹€ν–‰ 톡계λ₯Ό 얻을 수 μžˆμŠ΅λ‹ˆλ‹€. SQL OptimizerλŠ” λ°μ΄ν„°λ² μ΄μŠ€ μ„œλ²„μ—μ„œ κ²°κ³Ό 집합을 κ²€μƒ‰ν•˜μ§€ μ•Šκ³ λ„ μ΄λŸ¬ν•œ 톡계λ₯Ό μ œκ³΅ν•  수 μžˆμœΌλ―€λ‘œ 이 κΈ°λŠ₯이 λ„€νŠΈμ›Œν¬ νŠΈλž˜ν”½μ—λŠ” 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. λ˜ν•œ SELECT, SELECT INTO, INSERT, DELETE 및 UPDATE 문은 μ‹€ν–‰ 후에 λ‘€λ°±λ˜λŠ” νŠΈλžœμž­μ…˜μ—μ„œ μ‹€ν–‰λ˜λ―€λ‘œ μ΄λŸ¬ν•œ 문을 μ‚¬μš©ν•  경우 데이터 일관성이 μœ μ§€λ©λ‹ˆλ‹€.

λŒ€μ²΄ SQL 문을 ν…ŒμŠ€νŠΈν•˜λ €λ©΄

  1. 원본 SQL λ¬Έκ³Ό μƒμ„±λœ λŒ€μ²΄ SQL λ¬Έ κ°„μ˜ 비ꡐ가 λλ‚˜λ©΄ λ₯Ό ν΄λ¦­ν•©λ‹ˆλ‹€.
  2. μ˜†μ˜ λ“œλ‘­λ‹€μš΄ ν™”μ‚΄ν‘œλ₯Ό λˆ„λ₯΄κ³  Test Run - All을 μ„ νƒν•˜μ—¬ λͺ¨λ“  λŒ€μ²΄ SQL 문을 μ‹€ν–‰ν•©λ‹ˆλ‹€.
  3. Test Run Settings λŒ€ν™”μƒμžκ°€ μ—΄λ¦½λ‹ˆλ‹€. 이 ν…ŒμŠ€νŠΈ 싀행에 μ μš©ν•  기쀀을 μ„ νƒν•©λ‹ˆλ‹€. Usage 및 Symptom νŽ˜μ΄μ§€μ˜ μ§ˆλ¬Έμ— λ‹΅λ³€ν•˜μ—¬ SQL Optimizer이(κ°€) μ‚¬μš©μžμ— λŒ€ν•œ 섀정을 κ²°μ •ν•˜λ„λ‘ ν•  수 μžˆμŠ΅λ‹ˆλ‹€. λ˜λŠ” νŽ˜μ΄μ§€ ν•˜λ‹¨μ˜ Customize Test Run Settings 링크λ₯Ό ν΄λ¦­ν•˜μ—¬ ν…ŒμŠ€νŠΈ μ‹€ν–‰ 섀정을 μˆ˜λ™μœΌλ‘œ 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

    팁: 을(λ₯Ό) ν΄λ¦­ν•˜κ³  Optimize SQL | Test Run을 μ„ νƒν•¨μœΌλ‘œμ¨ 일뢀 Test Run Settings μ˜΅μ…˜μ— λŒ€ν•œ κΈ°λ³Έ 값을 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

  4. Alternatives μ°½μ—μ„œ μ‹€ν–‰ 톡계λ₯Ό κ²€ν† ν•©λ‹ˆλ‹€.

 

μžμŠ΅μ„œ: Optimize SQL(Plan Control)

Optimize SQLμ—μ„œ Plan Control λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것은 두 가지 λ‹¨κ³„λ‘œ κ΅¬μ„±λ©λ‹ˆλ‹€. 첫 번째 λ‹¨κ³„μ—μ„œ SQL OptimizerλŠ” μ†ŒμŠ€ μ½”λ“œλ₯Ό λ³€κ²½ν•˜μ§€ μ•Šκ³  SQL 문에 λŒ€ν•œ λŒ€μ²΄ Execution Plan을 μƒμ„±ν•©λ‹ˆλ‹€. μ΄λŸ¬ν•œ λŒ€μ²΄ Execution Plan을 μ‹€ν–‰ν•˜μ—¬ μ‹€ν–‰ μ‹œκ°„ 톡계λ₯Ό κ²€μƒ‰ν•˜κ³  λ°μ΄ν„°λ² μ΄μŠ€ ν™˜κ²½μ— κ°€μž₯ μ ν•©ν•œ λŒ€μ²΄ Execution Plan을 식별할 수 μžˆμŠ΅λ‹ˆλ‹€. 두 번째 λ‹¨κ³„μ—μ„œ Plan Control λͺ¨λ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ Execution Plan을 Oracle Plan Baseline으둜 Manage Plans λͺ¨λ“ˆμ— 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

μ°Έκ³ : 이 ν•­λͺ©μ—μ„œλŠ” μ‚¬μš©μžμ—κ²Œ μΉœμˆ™ν•˜μ§€ μ•Šμ„ 수 μžˆλŠ” 정보λ₯Ό μ€‘μ μ μœΌλ‘œ μ„€λͺ…ν•˜λ©° 단계 및 ν•„λ“œ μ„€λͺ…이 λͺ¨λ‘ ν¬ν•¨λ˜μ–΄ μžˆμ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€.

1단계: λŒ€μ²΄ Execution Plan 생성 및 μ‹€ν–‰

  1. μ£Ό μ°½μ—μ„œ Optimize SQL 탭을 μ„ νƒν•©λ‹ˆλ‹€.
  2. Optimize SQL μ‹œμž‘ νŽ˜μ΄μ§€μ—μ„œ Plan Control을 μ„ νƒν•©λ‹ˆλ‹€.

    μ°Έκ³ : μ‹œμž‘ νŽ˜μ΄μ§€κ°€ ν‘œμ‹œλ˜μ§€ μ•ŠμœΌλ©΄ μ˜†μ˜ ν™”μ‚΄ν‘œλ₯Ό λˆ„λ₯΄κ³  New Plan Control Session을 μ„ νƒν•©λ‹ˆλ‹€.

  3. Original SQL 창에 SQL 문을 μž…λ ₯ν•©λ‹ˆλ‹€.

    팁: SQL 문이 PL/SQL λΈ”λ‘μ—μ„œ μ‹œμž‘λœ 경우 This SQL is contained inside a PL/SQL block ν™•μΈλž€μ„ μ„ νƒν•©λ‹ˆλ‹€. 이 ν™•μΈλž€μ„ μ„ νƒν•˜λ©΄ μ‚¬μš©μžκ°€ λ§Œλ“  Baseline에 λŒ€ν•œ SQL ν…μŠ€νŠΈκ°€ λ°μ΄ν„°λ² μ΄μŠ€μ˜ SQL ν…μŠ€νŠΈμ™€ μΌμΉ˜ν•˜κ²Œ λ©λ‹ˆλ‹€.

  4. SQL 문에 λŒ€ν•œ λŒ€μ²΄ Execution Plan을 μƒμ„±ν•˜λ €λ©΄ 을 λˆ„λ¦…λ‹ˆλ‹€.Select Connection and Schema 창이 ν‘œμ‹œλ©λ‹ˆλ‹€.

  5. μ‚¬μš©ν•  μ—°κ²° 및 μŠ€ν‚€λ§ˆλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
  6. λͺ¨λ“  λŒ€μ²΄ Execution Plan을 μ‹€ν–‰ν•˜μ—¬ μ‹€ν–‰ μ‹œκ°„ 톡계λ₯Ό κ²€μƒ‰ν•˜λ €λ©΄ 을 λˆ„λ¦…λ‹ˆλ‹€.

  7. Plans μ°½μ—μ„œ μ‹€ν–‰ μ‹œκ°„ 톡계λ₯Ό κ²€ν† ν•˜μ—¬ μ΅œμƒμ˜ λŒ€μ²΄ ν•­λͺ©μ„ μ‹λ³„ν•©λ‹ˆλ‹€.

2단계: Execution Plan을 Baseline으둜 배포

  1. λ₯Ό λˆ„λ¦…λ‹ˆλ‹€ .

  2. μžμ„Έν•œ λ‚΄μš©μ€ λ‹€μŒμ„ κ²€ν† ν•˜μ‹­μ‹œμ˜€.

    배포 μ„€λͺ…

    Select a plan to deploy

    을 λˆ„λ₯΄κ³  Baseline Plan으둜 배포할 λŒ€μ²΄ μ‹€ν–‰ κ³„νšμ„ μ„ νƒν•©λ‹ˆλ‹€.

    μ„±λŠ₯ 비ꡐ

    μ„ νƒν•œ κ³„νšμ˜ μ„±λŠ₯을 원본과 λΉ„κ΅ν•˜μ—¬ κ²€ν† ν•˜λ €λ©΄ 이 ν•­λͺ©μ„ μ‚¬μš©ν•©λ‹ˆλ‹€.

    Mark the plan as

    μžμ„Έν•œ λ‚΄μš©μ€ λ‹€μŒμ„ κ²€ν† ν•˜μ‹­μ‹œμ˜€.

    • Enabled - 이 κ³„νšμ„ ν™œμ„±ν™”ν• μ§€ λ˜λŠ” λΉ„ν™œμ„±ν™”ν• μ§€λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
    • Fixed - 이 κ³„νšμ„ κ³ μ •λœ μƒνƒœλ‘œ 배포할지 λ˜λŠ” λΉ„κ³ μ • μƒνƒœλ‘œ 배포할지λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.
    • Not Auto-Purged - μ‚¬μš©ν•˜μ§€ μ•Šμ„ λ•Œ μžλ™μœΌλ‘œ μ œκ±°ν• μ§€λ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

    Plan name

    Plan의 이름을 μž…λ ₯ν•©λ‹ˆλ‹€.

    μ„€λͺ…

    이 Plan에 λŒ€ν•œ μ„€λͺ…을 μž…λ ₯ν•©λ‹ˆλ‹€.
  3. Manage Plans둜 Plan을 λ°°ν¬ν•˜λ €λ©΄ 을 λˆ„λ¦…λ‹ˆλ‹€.

 

 

μžμŠ΅μ„œ: Generate Indexes

SQL OptimizerλŠ” SQL ꡬ문, ν…Œμ΄λΈ” κ°„ 관계 및 데이터 선택을 λΆ„μ„ν•œ 후에 SQL 문의 λŒ€μ²΄ 인덱슀둜 μ‚¬μš©ν•  열을 μ‹λ³„ν•©λ‹ˆλ‹€. SQL OptimizerλŠ” 그런 λ‹€μŒ μ‹λ³„ν•œ λŒ€μ²΄ 인덱슀λ₯Ό 인덱슀 μ„ΈνŠΈμ— κ²°ν•©ν•©λ‹ˆλ‹€.

λŒ€μ²΄ 인덱슀λ₯Ό μƒμ„±ν•˜λ €λ©΄

  1. μ£Ό λ©”λ‰΄μ—μ„œ Optimize SQL 탭을 μ„ νƒν•©λ‹ˆλ‹€.

  2. Alternative Details 창에 SQL 문을 μž…λ ₯ν•©λ‹ˆλ‹€.

  3. 을 λˆ„λ¦…λ‹ˆλ‹€.Select Connection and Schema 창이 ν‘œμ‹œλ©λ‹ˆλ‹€.

  4. μ‚¬μš©ν•  μ—°κ²° 및 μŠ€ν‚€λ§ˆλ₯Ό μ„ νƒν•©λ‹ˆλ‹€.

  5. SQL Information μ°½μ—μ„œ Index Detailsλ₯Ό μ„ νƒν•˜μ—¬ 인덱슀 생성 정보λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.

  6. Alternative Details μ°½μ—μ„œ 인덱슀 이름, μ„ΈλΆ€ 정보 및 생성 슀크립트λ₯Ό 보렀면 인덱슀 집합을 μ„ νƒν•©λ‹ˆλ‹€.
  7. 인덱슀λ₯Ό ν…ŒμŠ€νŠΈν•˜λ €λ©΄ Alternatives μ°½μ—μ„œ 인덱슀λ₯Ό μ„ νƒν•œ λ‹€μŒ 을 ν΄λ¦­ν•©λ‹ˆλ‹€.

    μ°Έκ³ : Test Run κΈ°λŠ₯을 μ‚¬μš©ν•˜μ—¬ SQL Optimizerκ°€ μƒμ„±ν•œ 인덱슀 μ„ΈνŠΈλ₯Ό ν…ŒμŠ€νŠΈν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이 κΈ°λŠ₯은 λ°μ΄ν„°λ² μ΄μŠ€μ— μ‹€μ œλ‘œ 인덱슀λ₯Ό μž‘μ„±ν•˜κ³  SQL 문을 μ‹€ν–‰ν•˜κ³  μ‹€ν—Ή 톡계λ₯Ό κ²€μƒ‰ν•œ λ‹€μŒ, 인덱슀λ₯Ό μ‚­μ œν•©λ‹ˆλ‹€. 이 ν”„λ‘œμ„ΈμŠ€λŠ” λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ μ‹€μ œλ‘œ 인덱슀λ₯Ό μž‘μ„±ν•˜λ―€λ‘œ λ‹€λ₯Έ SQL 문의 μ„±λŠ₯에 영ν–₯을 λ―ΈμΉ  수 μžˆμŠ΅λ‹ˆλ‹€.

 

Related Documents

The document was helpful.

Select Rating

I easily found the information I needed.

Select Rating