🎧 Listen to this article: हिंदी · English · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · ଓଡ଼ିଆ · 日本語 · 中文
🌍 Read this in your language: हिंदी · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · ଓଡ଼ିଆ · 日本語 · 中文
ಯಾವುದೇ ಡೆವಲಪರ್ಗೆ ಇದು ನಿರಾಶಾದಾಯಕ ಸನ್ನಿವೇಶವಾಗಿದೆ. ಆ್ಯಪ್ನಲ್ಲಿನ ಒಂದು ಫೀಚರ್ ಹ್ಯಾಂಗ್ ಆಗುತ್ತಿದೆ ಎಂದು ಬಳಕೆದಾರರೊಬ್ಬರು ವರದಿ ಮಾಡುತ್ತಾರೆ. ಅಪ್ಲಿಕೇಶನ್ ಎಕ್ಸಿಕ್ಯೂಟ್ ಮಾಡಿದ ನಿಖರವಾದ SQL query ಅನ್ನು ನೀವು ಪಡೆದುಕೊಂಡು, ಅದನ್ನು SQL Server Management Studio (SSMS) ಗೆ ಪೇಸ್ಟ್ ಮಾಡಿ, Execute ಕ್ಲಿಕ್ ಮಾಡುತ್ತೀರಿ. ಅದು ಕೇವಲ 0.02 ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಪೂರ್ಣಗೊಳ್ಳುತ್ತದೆ. ನೀವು ಅದನ್ನು ಮತ್ತೆ ರನ್ ಮಾಡುತ್ತೀರಿ. ಅದು ಈಗಲೂ ಅತ್ಯಂತ ವೇಗವಾಗಿರುತ್ತದೆ. ಆದರೂ, ಅಪ್ಲಿಕೇಶನ್ನ ಒಳಗೆ, ಅದು time out ಆಗುತ್ತಲೇ ಇರುತ್ತದೆ. ಈ ಸನ್ನಿವೇಶವು ಹೆಚ್ಚಾಗಿ parameter sniffing ಎಂದು ಕರೆಯಲ್ಪಡುವ ಸಾಮಾನ್ಯ ಸಮಸ್ಯೆಯನ್ನು ಸೂಚಿಸುತ್ತದೆ.
ಇಂದು ಆಗಸ್ಟ್ 10, 2026, ಮತ್ತು ಡಾಟಾಬೇಸ್-ಆಧಾರಿತ ಅಪ್ಲಿಕೇಶನ್ಗಳೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವ ಡೆವಲಪರ್ಗಳಿಗೆ parameter sniffing ಅನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಅತ್ಯಂತ ಮುಖ್ಯವಾಗಿದೆ. ಅಪ್ಲಿಕೇಶನ್ಗಳು ಬೆಳೆದಂತೆ ಮತ್ತು ಡಾಟಾ ಹಂಚಿಕೆಗಳು ಬದಲಾದಂತೆ, ವಿಶೇಷವಾಗಿ production ವಾತಾವರಣಗಳಲ್ಲಿ ಕಾರ್ಯಕ್ಷಮತೆಯ (performance) ಸಮಸ್ಯೆಗಳು ಎದುರಾಗಬಹುದು.
Parameter Sniffing ಎಂದರೆ ಏನು?
ಒಂದು parameterized query ಅಥವಾ stored procedure ಮೊದಲ ಬಾರಿಗೆ ರನ್ ಆದಾಗ, SQL Server ಆ ಕ್ಷಣದಲ್ಲಿ ಪಾಸ್ ಮಾಡಲಾದ parameters ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಎಷ್ಟು ಸಾಲುಗಳು (rows) ಹಿಂತಿರುಗಿಸಲ್ಪಡುತ್ತವೆ ಎಂಬುದನ್ನು ಅಂದಾಜಿಸಲು ಅದು ಈ ಮೌಲ್ಯಗಳನ್ನು ಬಳಸುತ್ತದೆ ಮತ್ತು ಆ ನಿರ್ದಿಷ್ಟ ಸನ್ನಿವೇಶಕ್ಕೆ ಸೂಕ್ತವಾದ execution plan ಅನ್ನು ಕಂಪೈಲ್ ಮಾಡುತ್ತದೆ. ನಂತರ ಈ execution plan ಅನ್ನು ಭವಿಷ್ಯದ ಬಳಕೆಗಾಗಿ ಕ್ಯಾಶ್ (cache) ಮಾಡಲಾಗುತ್ತದೆ.
ಆದರೆ, ಇದು ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗಬಹುದು. ಉದಾಹರಣೆಗೆ:
- Scenario A: ಮೊದಲ ರನ್ 5 ಸಾಲುಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವ parameter ಅನ್ನು ಪಾಸ್ ಮಾಡುತ್ತದೆ. SQL Server ಒಂದು Index Seek ಅನ್ನು ಬಳಸಿಕೊಂಡು plan ಅನ್ನು ರಚಿಸುತ್ತದೆ, ಅದು ವೇಗವಾಗಿ ಮತ್ತು ಪರಿಣಾಮಕಾರಿಯಾಗಿರುತ್ತದೆ.
- Scenario B: ನಂತರ, ಮತ್ತೊಬ್ಬ ಬಳಕೆದಾರರು 500,000 ಸಾಲುಗಳನ್ನು ಹಿಂತಿರುಗಿಸುವ parameter ಅನ್ನು ಪಾಸ್ ಮಾಡುತ್ತಾರೆ. SQL Server, Scenario A ನ ಕ್ಯಾಶ್ ಮಾಡಲಾದ plan ಅನ್ನು ಮರುಬಳಕೆ ಮಾಡುತ್ತದೆ, ಇದು ಈ ದೊಡ್ಡ dataset ಗೆ ಸೂಕ್ತವಲ್ಲ. ಸರ್ವರ್ ಒಂದು ಬೃಹತ್ dataset ಗೆ ಹಗುರವಾದ plan ಅನ್ನು ಅನ್ವಯಿಸಲು ಹೆಣಗಾಡುತ್ತದೆ, ಇದರ ಪರಿಣಾಮವಾಗಿ ನಿಧಾನಗತಿಯ ಕಾರ್ಯಕ್ಷಮತೆ ಅಥವಾ time out ಗಳು ಸಂಭವಿಸುತ್ತವೆ.
Parameter Sniffing ಸಮಸ್ಯೆಗಳನ್ನು ಗುರುತಿಸುವುದು ಹೇಗೆ
ಕ್ಯಾಶ್ನಲ್ಲಿರುವ ದೋಷಪೂರಿತ execution plans ಅನ್ನು ಪತ್ತೆಹಚ್ಚಲು, ನೀವು plan cache ಅನ್ನು ಪರಿಶೀಲಿಸಬಹುದು. ಕಂಪೈಲೇಶನ್ ಹಾಗೂ ಎಕ್ಸಿಕ್ಯೂಶನ್ ಸಮಯದಲ್ಲಿ ಯಾವ parameter ಮೌಲ್ಯಗಳನ್ನು ಬಳಸಲಾಗಿದೆ ಎಂಬುದನ್ನು ನೋಡಲು ಇದು ನಿಮಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ. ನಿರೀಕ್ಷೆಗಿಂತ ನಿಧಾನವಾಗಿ ರನ್ ಆಗುತ್ತಿರುವ queries ಅನ್ನು ಕಂಡುಹಿಡಿಯಲು ನೀವು ಬಳಸಬಹುದಾದ ತ್ವರಿತ SQL command ಇಲ್ಲಿದೆ:
SELECT TOP 10 qs.execution_count AS [Exec_Count],
(qs.total_elapsed_time / 1000.0) / qs.execution_count AS [Avg_Duration_ms],
(qs.total_worker_time / 1000.0) / qs.execution_count AS [Avg_CPU_ms],
qs.total_logical_reads / qs.execution_count AS [Avg_Logical_Reads],
SUBSTRING(st.text, (qs.statement_start_offset / 2) + 1,
((CASE qs.statement_end_offset WHEN -1 THEN DATALENGTH(st.text) ELSE qs.statement_end_offset END - qs.statement_start_offset) / 2) + 1) AS [Query_Text],
qp.query_plan AS [XML_Execution_Plan]
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS st
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) AS qp
WHERE qs.execution_count > 5
ORDER BY (qs.total_elapsed_time / qs.execution_count) DESC;
ನೀವು ಈ command ಅನ್ನು ರನ್ ಮಾಡಿದಾಗ, ನೀವು XML_Execution_Plan ಕಾಲಮ್ ಅನ್ನು ಕ್ಲಿಕ್ ಮಾಡುವ ಮೂಲಕ SSMS ನಲ್ಲಿ ನೈಜ ಗ್ಲಾಫಿಕಲ್ execution plan ಅನ್ನು ವೀಕ್ಷಿಸಬಹುದು. ಪ್ರಾಪರ್ಟೀಸ್ ವಿಂಡೋದ ಒಳಗೆ Parameter List ಅನ್ನು ಹುಡುಕಿ; ಅದು ನಿಮಗೆ Compiled Value ಹಾಗೂ Runtime Value ನಡುವಿನ ವ್ಯತ್ಯಾಸವನ್ನು ತೋರಿಸುತ್ತದೆ. ಈ ಮೌಲ್ಯಗಳು ಗಣನೀಯವಾಗಿ ಭಿನ್ನವಾಗಿದ್ದರೆ, ನಿಮ್ಮ parameter sniffing ಸಮಸ್ಯೆಯ ಕಾರಣವನ್ನು ನೀವು ಕಂಡುಕೊಂಡಿದ್ದೀರಿ ಎಂದರ್ಥ.
Parameter Sniffing ಸರಿಪಡಿಸುವುದು ಹೇಗೆ
ನಿಮ್ಮ SQL Server ಆವೃತ್ತಿ ಮತ್ತು ನಿರ್ದಿಷ್ಟ ವ್ಯವಹಾರ ಸನ್ನಿವೇಶವನ್ನು ಆಧರಿಸಿ parameter sniffing ಪರಿಹರಿಸಲು ಹಲವು ತಂತ್ರಗಳಿವೆ:
- Add
OPTIMIZE FOR UNKNOWN: ಈ query hint, ನಿರ್ದಿಷ್ಟ parameter ಮೌಲ್ಯಗಳಿಗೆ ಸೂಕ್ತವಾಗಿಸುವ ಬದಲಿಗೆ, ಹೆಚ್ಚು ಸಾಮಾನ್ಯವಾದ (generic) plan ಅನ್ನು ರಚಿಸಲು SQL Server ಗೆ ಸೂಚಿಸುತ್ತದೆ. - Local Variables ಬಳಸಿ: Stored procedures ನಲ್ಲಿ ಪ್ರತ್ಯಕ್ಷವಾಗಿ parameters ಬಳಸುವ ಬದಲಿಗೆ, local variables ಬಳಕೆಯು SQL Server ಗೆ ಹೆಚ್ಚು ಸೂಕ್ತವಾದ (optimal) plan ರಚಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- Stale Index Statistics ಅಪ್ಡೇಟ್ ಮಾಡಿ: ನಿಮ್ಮ ಅಂಕಿಅಂಶಗಳನ್ನು (statistics) ಅಪ್-ಟು-ಡೇಟ್ ಆಗಿಡುವುದು execution plans ಕುರಿತು ಉತ್ತಮ ನಿರ್ಧಾರಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು SQL Server ಗೆ ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- Query Store ಬಳಸಿ: ಸಕ್ರಿಯಗೊಳಿಸಿದ್ದರೆ (enabled), ನಿಮ್ಮ queries ಗೆ ತಿಳಿದಿರುವ ಉತ್ತಮ plan ಅನ್ನು ಬಲವಂತವಾಗಿ ಅನ್ವಯಿಸಲು (force) Query Store ಸಹಾಯ ಮಾಡುತ್ತದೆ.
ಉಪಸಂಹಾರ
Parameter sniffing ಎಂಬುದು production ವಾತಾವರಣಗಳಲ್ಲಿ ಕಾರ್ಯಕ್ಷಮತೆಯ ಸಮಸ್ಯೆಗಳಿಗೆ ಕಾರಣವಾಗುವ ಒಂದು ಸಂಕೀರ್ಣ ಸಮಸ್ಯೆಯಾಗಬಹುದು. ಅದು ಹೇಗೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಅದನ್ನು ಹೇಗೆ ಗುರುತಿಸುವುದು ಹಾಗೂ ಸರಿಪಡಿಸುವುದು ಎಂಬುದನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವ ಮೂಲಕ, ನಿಮ್ಮ SQL queries ನ ಕಾರ್ಯಕ್ಷಮತೆಯನ್ನು ನೀವು ಸುಧಾರಿಸಬಹುದು.
ಪ್ರಯೋಜನಗಳು
- ನಿಧಾನಗತಿಯ queries ಅನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಗುರುತಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ.
- Execution plans ಕುರಿತು ಒಳನೋಟಗಳನ್ನು ನೀಡುತ್ತದೆ.
- ಪರಿಹಾರಕ್ಕಾಗಿ ಹಲವು ತಂತ್ರಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ.
ದೋಷಗಳು
- SQL Server ಆಂತರಿಕ ಕಾರ್ಯಾಚರಣೆಗಳ (internals) ಜ್ಞಾನದ ಅಗತ್ಯವಿದೆ.
- ನಿರ್ದಿಷ್ಟ ಸನ್ನಿವೇಶಗಳನ್ನು ಆಧರಿಸಿ ಹೊಂದಾಣಿಕೆಗಳ (adjustments) ಅಗತ್ಯವಿರಬಹುದು.
- SQL Server ಆವೃತ್ತಿಯನ್ನು ಆಧರಿಸಿ ಪರಿಹಾರಗಳು ಬದಲಾಗಬಹುದು.
ಎಚ್ಚರಿಕೆ
ಈ ಲೇಖನವು ಶೈಕ್ಷಣಿಕ ಉದ್ದೇಶಗಳಿಗಾಗಿ ಮಾತ್ರ. ಯಾವುದೇ ಪ್ಲೇಸ್ಹೋಲ್ಡರ್ (placeholder) ಮೌಲ್ಯಗಳನ್ನು ನಿಮ್ಮ ನೈಜ ಡಾಟಾದೊಂದಿಗೆ ಬದಲಾಯಿಸಿ ಮತ್ತು ಅವುಗಳನ್ನು ನೆಚ್ಚಿಕೊಳ್ಳುವ ಮೊದಲು ಮೂಲ ಆಕರಗಳಿಂದ ವರದಿಗಳನ್ನು ಪರಿಶೀಲಿಸಿ.
ಪದೇ ಪದೇ ಕೇಳಲಾಗುವ ಪ್ರಶ್ನೆಗಳು
- Parameter sniffing ಎಂದರೆ ಏನು? — SQL Server ಒಂದು query ನ ಮೊದಲ ಎಕ್ಸಿಕ್ಯೂಶನ್ನ parameter ಮೌಲ್ಯಗಳನ್ನು ಬಳಸಿಕೊಂಡು ಕ್ಯಾಶ್ ಮಾಡಲಾದ execution plan ಅನ್ನು ರಚಿಸುವುದಕ್ಕೆ Parameter sniffing ಎನ್ನಲಾಗುತ್ತದೆ, ಇದು ನಂತರದ ಎಕ್ಸಿಕ್ಯೂಶನ್ಗಳಿಗೆ ಸೂಕ್ತವಾಗಿಲ್ಲದಿರಬಹುದು.
- Parameter sniffing ನಿಂದಾಗಿ queries ಏಕೆ ನಿಧಾನವಾಗುತ್ತವೆ? — ಕ್ಯಾಶ್ ಮಾಡಲಾದ execution plan ನಂತರದ ಎಕ್ಸಿಕ್ಯೂಶನ್ಗಳ ಡಾಟಾ ಪ್ರಮಾಣಕ್ಕೆ ಅಥವಾ ಹಂಚಿಕೆಗೆ (distribution) ಸೂಕ್ತವಾಗಿಲ್ಲದಿದ್ದಾಗ, ಇದು ನಿಧಾನಗತಿಯ queries ಗೆ ಕಾರಣವಾಗಬಹುದು.
- Parameter sniffing ಸಮಸ್ಯೆಗಳನ್ನು ನಾನು ಹೇಗೆ ಗುರುತಿಸುವುದು? — ವ್ಯತ್ಯಾಸಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು ನೀವು plan cache ಅನ್ನು ಪರಿಶೀಲಿಸಬಹುದು ಮತ್ತು ಕಂಪೈಲ್ ಮಾಡಿದ parameter ಮೌಲ್ಯಗಳನ್ನು ರನ್ಟೈಮ್ (runtime) ಮೌಲ್ಯಗಳೊಂದಿಗೆ ಹೋಲಿಸಬಹುದು.
- Execution plan ಎಂದರೆ ಏನು? — Execution plan ಎಂಬುದು ಡಾಟಾವನ್ನು ಹೇಗೆ ಹಿಂಪಡೆಯುವುದು ಎಂಬುದನ್ನು ವಿವರಿಸಿ, SQL Server ಒಂದು query ಅನ್ನು ಎಕ್ಸಿಕ್ಯೂಟ್ ಮಾಡಲು ಬಳಸುವ ರೋಡ್ಮ್ಯಾಪ್ ಆಗಿದೆ.
- Parameter sniffing ಅನ್ನು ನಾನು ಹೇಗೆ ಸರಿಪಡಿಸಬಹುದು? — ಇವುಗಳಂತಹ ತಂತ್ರಗಳನ್ನು ಬಳಸಿಕೊಂಡು ನೀವು ಅದನ್ನು ಸರಿಪಡಿಸಬಹುದು
OPTIMIZE FOR UNKNOWN, local variables, statistics ಅಪ್ಡೇಟ್ ಮಾಡುವುದು ಅಥವಾ Query Store ಬಳಸುವುದು. - Parameter sniffing ಎಲ್ಲಾ SQL Server ಆವೃತ್ತಿಗಳ ಮೇಲೆಯೂ ಪರಿಣಾಮ ಬೀರುತ್ತದೆಯೇ? — ಹೌದು, ವಿಶೇಷವಾಗಿ ಡಾಟಾ ಹಂಚಿಕೆಗಳು (data distributions) ಅಸಮವಾಗಿದ್ದಾಗ, Parameter sniffing ವಿವಿಧ SQL Server ಆವೃತ್ತಿಗಳ ಮೇಲೆ ಪರಿಣಾಮ ಬೀರಬಹುದು.
ಟ್ಯಾಗ್ಗಳು
#database #sql #performance #queryoptimization #parametersniffing #sqlserver #executionplan #databases
API Security Testing Checklist
A practical workflow for testing authentication, authorization, input handling, business logic, and evidence without losing track of scope.
Free. No spam — unsubscribe in one click.


Responses
Sign in to leave a response.