🎧 Listen to this article: हिंदी · English · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · ଓଡ଼ିଆ · 日本語 · 中文
🌍 Read this in your language: हिंदी · தமிழ் · తెలుగు · ಕನ್ನಡ · മലയാളം · ଓଡ଼ିଆ · 日本語 · 中文
ഏതൊരു ഡെവലപ്പർക്കും ഇത് നിരാശാജനകമായ ഒരു സാഹചര്യമാണ്. ആപ്പിലെ ഒരു ഫീച്ചർ ഹാംഗ് ആകുന്നുവെന്ന് ഒരു യൂസർ റിപ്പോർട്ട് ചെയ്യുന്നു. ആപ്ലിക്കേഷൻ എക്സിക്യൂട്ട് ചെയ്ത അതേ SQL ക്വറി നിങ്ങൾ എടുത്ത്, SQL Server Management Studio (SSMS)-ൽ പേസ്റ്റ് ചെയ്ത് Execute അമർത്തുന്നു. ഇത് വെറും 0.02 സെക്കൻഡിനുള്ളിൽ പൂർത്തിയാകുന്നു. നിങ്ങൾ ഇത് വീണ്ടും റൺ ചെയ്യുന്നു. ഇത് ഇപ്പോഴും വളരെ വേഗത്തിലാണ് പ്രവർത്തിക്കുന്നത്. എന്നിരുന്നാലും, ആപ്ലിക്കേഷനുള്ളിൽ അത് ടൈംഔട്ട് ആയിക്കൊണ്ടിരിക്കുന്നു. ഈ സാഹചര്യം പലപ്പോഴും parameter sniffing എന്നറിയപ്പെടുന്ന ഒരു പൊതുവായ പ്രശ്നത്തിലേക്ക് വിരൽ ചൂണ്ടുന്നു.
ഇന്ന് 2026 ഓഗസ്റ്റ് 10 ആണ്, ഡാറ്റാബേസ് അധിഷ്ഠിത ആപ്ലിക്കേഷനുകളിൽ പ്രവർത്തിക്കുന്ന ഡെവലപ്പർമാർക്ക് parameter sniffing മനസ്സിലാക്കുന്നത് വളരെ പ്രധാനമാണ്. ആപ്ലിക്കേഷനുകൾ വളരുകയും ഡാറ്റാ വിതരണത്തിൽ മാറ്റങ്ങൾ വരികയും ചെയ്യുമ്പോൾ, പ്രത്യേകിച്ച് പ്രൊഡക്ഷൻ എൻവയോൺമെന്റുകളിൽ പെർഫോമൻസ് പ്രശ്നങ്ങൾ ഉണ്ടാകാം.
എന്താണ് Parameter Sniffing?
ഒരു parameterized query അല്ലെങ്കിൽ stored procedure ആദ്യമായി റൺ ചെയ്യുമ്പോൾ, ആ നിമിഷം പാസ് ചെയ്ത പാരാമീറ്ററുകൾ SQL Server പരിശോധിക്കുന്നു. എത്ര റോകൾ തിരികെ ലഭിക്കുമെന്ന് കണക്കാക്കാൻ ഈ മൂല്യങ്ങൾ ഉപയോഗിക്കുകയും ആ പ്രത്യേക സാഹചര്യത്തിന് അനുയോജ്യമായ ഒരു execution plan കമ്പൈൽ ചെയ്യുകയും ചെയ്യുന്നു. ഈ execution plan പിന്നീട് ഭാവിയിലെ ഉപയോഗത്തിനായി കാഷെ ചെയ്തുവെക്കുന്നു.
എന്നിരുന്നാലും, ഇത് പ്രശ്നങ്ങളിലേക്ക് നയിച്ചേക്കാം. ഉദാഹരണത്തിന്:
- സിനാരിയോ A: ആദ്യത്തെ റണ്ണിൽ 5 റോകൾ തിരികെ നൽകുന്ന ഒരു പാരാമീറ്റർ പാസ് ചെയ്യുന്നു. SQL Server, വേഗതയേറിയതും കാര്യക്ഷമവുമായ Index Seek ഉപയോഗിച്ച് ഒരു പ്ലാൻ ഉണ്ടാക്കുന്നു.
- സിനാരിയോ B: പിന്നീട്, മറ്റൊരു യൂസർ 500,000 റോകൾ തിരികെ നൽകുന്ന ഒരു പാരാമീറ്റർ പാസ് ചെയ്യുന്നു. SQL Server സിനാരിയോ A-യിലെ കാഷെ ചെയ്ത പ്ലാൻ വീണ്ടും ഉപയോഗിക്കുന്നു, ഇത് വലിയ ഡാറ്റാസെറ്റിന് അനുയോജ്യമല്ല. വൻകിട ഡാറ്റാസെറ്റിന് ലൈറ്റ്വെയ്റ്റ് പ്ലാൻ ബാധകമാക്കാൻ സെർവർ ബുദ്ധിമുട്ടുന്നു, ഇത് പെർഫോമൻസ് മന്ദഗതിയിലാകുന്നതിനും ടൈംഔട്ടുകൾക്കും കാരണമാകുന്നു.
Parameter Sniffing പ്രശ്നങ്ങൾ എങ്ങനെ തിരിച്ചറിയാം
കാഷെയിലെ മോശം execution plans കണ്ടെത്താൻ, നിങ്ങൾക്ക് plan cache പരിശോധിക്കാവുന്നതാണ്. കമ്പൈൽ ചെയ്യുമ്പോഴും എക്സിക്യൂട്ട് ചെയ്യുമ്പോഴും ഏതൊക്കെ പാരാമീറ്റർ മൂല്യങ്ങളാണ് ഉപയോഗിച്ചതെന്ന് കാണാൻ ഇത് സഹായിക്കുന്നു. പ്രതീക്ഷിച്ചതിലും സാവധാനത്തിൽ റൺ ചെയ്യുന്ന ക്വറികൾ കണ്ടെത്തുന്നതിന് ഉപയോഗിക്കാവുന്ന ഒരു വേഗത്തിലുള്ള SQL കമാൻഡ് ഇതാ:
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;
നിങ്ങൾ ഈ കമാൻഡ് റൺ ചെയ്യുമ്പോൾ, നിങ്ങൾക്ക് XML_Execution_Plan കോളം ക്ലിക്ക് ചെയ്ത് SSMS-ലെ യഥാർത്ഥ ഗ്രാഫിക്കൽ execution plan കാണാൻ സാധിക്കും. പ്രോപ്പർട്ടീസ് വിൻഡോയ്ക്കുള്ളിലെ Parameter List പരിശോധിക്കുക; അത് Compiled Value-വും Runtime Value-വും കാണിച്ചുതരും. ഈ മൂല്യങ്ങൾ വലിയ വ്യത്യാസമുള്ളവയാണെങ്കിൽ, നിങ്ങളുടെ parameter sniffing പ്രശ്നക്കാരനെ നിങ്ങൾ കണ്ടെത്താനിടയുണ്ട്.
Parameter Sniffing എങ്ങനെ പരിഹരിക്കാം
നിങ്ങളുടെ SQL Server പതിപ്പും പ്രത്യേക ബിസിനസ് കോൺടെക്സ്റ്റും അനുസരിച്ച് parameter sniffing പരിഹരിക്കാൻ നിരവധി മാർഗ്ഗങ്ങളുണ്ട്:
- ചേർക്കുക
OPTIMIZE FOR UNKNOWN: പ്രത്യേക പാരാമീറ്റർ മൂല്യങ്ങൾക്ക് അനുയോജ്യമായ രീതിയിലല്ലാതെ, പൊതുവായ ഒരു പ്ലാൻ ഉണ്ടാക്കാൻ ഈ query hint, SQL Server-നോട് ആവശ്യപ്പെടുന്നു. - ലോക്കൽ വേരിയബിളുകൾ ഉപയോഗിക്കുക: Stored procedures-ൽ പാരാമീറ്ററുകൾ നേരിട്ട് ഉപയോഗിക്കുന്നതിന് പകരം, കൂടുതൽ മികച്ച ഒരു പ്ലാൻ ഉണ്ടാക്കാൻ ലോക്കൽ വേരിയബിളുകൾ SQL Server-നെ സഹായിക്കും.
- പഴയ ഇൻഡക്സ് സ്റ്റാറ്റിസ്റ്റിക്സ് അപ്ഡേറ്റ് ചെയ്യുക: നിങ്ങളുടെ സ്റ്റാറ്റിസ്റ്റിക്സ് അപ് ടു ഡേറ്റ് ആയി നിലനിർത്തുന്നത് execution plans സംബന്ധിച്ച് മികച്ച തീരുമാനങ്ങൾ എടുക്കാൻ SQL Server-നെ സഹായിക്കും.
- Query Store ഉപയോഗിക്കുക: ഇനേബിൾ ചെയ്തിട്ടുണ്ടെങ്കിൽ, നിങ്ങളുടെ ക്വറികൾക്കായി അനുയോജ്യമായ പ്ലാൻ ഉപയോഗിക്കാൻ Query Store സഹായിക്കും.
ഉപസംഹാരം
പ്രൊഡക്ഷൻ എൻവയോൺമെന്റുകളിൽ പെർഫോമൻസ് പ്രശ്നങ്ങൾക്ക് കാരണമാകുന്ന ഒരു സങ്കീർണ്ണമായ വിഷയമാണ് Parameter sniffing. ഇത് എങ്ങനെ പ്രവർത്തിക്കുന്നുവെന്നും എങ്ങനെ തിരിച്ചറിയാമെന്നും പരിഹരിക്കാമെന്നും മനസ്സിലാക്കുന്നതിലൂടെ നിങ്ങളുടെ SQL ക്വറികളുടെ പെർഫോമൻസ് മെച്ചപ്പെടുത്താൻ സാധിക്കും.
ഗുണങ്ങൾ
- മന്ദഗതിയിലുള്ള ക്വറികൾ ഫലപ്രദമായി തിരിച്ചറിയാൻ സഹായിക്കുന്നു.
- Execution plans-നെ കുറിച്ച് കൂടുതൽ വിവരങ്ങൾ നൽകുന്നു.
- പ്രശ്നപരിഹാരത്തിനായി ഒന്നിലധികം മാർഗ്ഗങ്ങൾ നൽകുന്നു.
ദോഷങ്ങൾ
- SQL Server internals-നെ കുറിച്ച് അവഗാഹം ആവശ്യമാണ്.
- പ്രത്യേക സാഹചര്യങ്ങളെ അടിസ്ഥാനമാക്കി മാറ്റങ്ങൾ വരുത്തേണ്ടി വന്നേക്കാം.
- SQL Server പതിപ്പിനെ ആശ്രയിച്ച് പരിഹാരങ്ങളിൽ വ്യത്യാസം വന്നേക്കാം.
ശ്രദ്ധിക്കുക
ഈ ലേഖനം വിദ്യാഭ്യാസ ആവശ്യങ്ങൾക്കായി മാത്രമുള്ളതാണ്. വിവരങ്ങളെ ആശ്രയിക്കുന്നതിന് മുമ്പ് പ്ലേസ്ഹോൾഡർ മൂല്യങ്ങൾക്ക് പകരം നിങ്ങളുടെ യഥാർത്ഥ ഡാറ്റ നൽകുകയും വിവരങ്ങൾ യഥാർത്ഥ ഉറവിടങ്ങളുമായി ഒത്തുനോക്കി ഉറപ്പുവരുത്തുകയും ചെയ്യുക.
പതിവായി ചോദിക്കുന്ന ചോദ്യങ്ങൾ
- എന്താണ് parameter sniffing? — ഒരു ക്വറിയുടെ ആദ്യ എക്സിക്യൂഷനിലെ പാരാമീറ്റർ മൂല്യങ്ങൾ ഉപയോഗിച്ച് SQL Server ഒരു കാഷെ ചെയ്ത execution plan ഉണ്ടാക്കുന്നതിനെയാണ് Parameter sniffing എന്ന് പറയുന്നത്, ഇത് തുടർന്നുള്ള എക്സിക്യൂഷനുകൾക്ക് അനുയോജ്യമായ ഒന്നാകണമെന്നില്ല.
- Parameter sniffing എന്തുകൊണ്ടാണ് ക്വറികൾ സാവധാനത്തിലാക്കുന്നത്? — കാഷെ ചെയ്ത execution plan പിന്നീട് നടത്തുന്ന എക്സിക്യൂഷനുകളിലെ ഡാറ്റയുടെ അളവിനോ വിതരണത്തിനോ അനുയോജ്യമല്ലാത്തപ്പോൾ അത് ക്വറികൾ സാവധാനത്തിലാക്കാൻ ഇടയാക്കും.
- Parameter sniffing പ്രശ്നങ്ങൾ എങ്ങനെ തിരിച്ചറിയാം? — വ്യത്യാസങ്ങൾ കണ്ടെത്തുന്നതിനായി നിങ്ങൾക്ക് plan cache പരിശോധിക്കുകയും കമ്പൈൽ ചെയ്ത പാരാമീറ്റർ മൂല്യങ്ങളെ റൺടൈം മൂല്യങ്ങളുമായി താരതമ്യം ചെയ്യുകയും ചെയ്യാം.
- എന്താണ് execution plan? — ഒരു ക്വറി എങ്ങനെ എക്സിക്യൂട്ട് ചെയ്യണമെന്നും ഡാറ്റ എങ്ങനെ വീണ്ടെടുക്കണമെന്നും വിശദീകരിക്കുന്നതിന് SQL Server ഉപയോഗിക്കുന്ന ഒരു റോഡ്മാപ്പാണ് execution plan.
- Parameter sniffing എങ്ങനെ പരിഹരിക്കാം? — ഇതുപോലുള്ള സാങ്കേതിക വിദ്യകൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഇത് പരിഹരിക്കാം
OPTIMIZE FOR UNKNOWN, ലോക്കൽ വേരിയബിളുകൾ, സ്റ്റാറ്റിസ്റ്റിക്സ് അപ്ഡേറ്റ് ചെയ്യൽ, അല്ലെങ്കിൽ Query Store ഉപയോഗിക്കൽ. - Parameter sniffing എല്ലാ SQL Server പതിപ്പുകളെയും ബാധിക്കുമോ? — അതെ, 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.