Your SlideShare is downloading. ×

Ajuste (tuning) del rendimiento de SQL Server 2008

8,520

Published on

En el siguiente webcast http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032438450&Culture=es-AR analizamos las herramientas de desempeño de SQL Server 2008 y cómo utilizarlas. …

En el siguiente webcast http://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032438450&Culture=es-AR analizamos las herramientas de desempeño de SQL Server 2008 y cómo utilizarlas.


Saludos,
Ing. Eduardo Castro Martínez, PhD – Microsoft SQL Server MVP
http://mswindowscr.org
http://comunidadwindows.org
Costa Rica

Technorati Tags: SQL Server
LiveJournal Tags: SQL Server
del.icio.us Tags: SQL Server

http://ecastrom.blogspot.com
http://ecastrom.wordpress.com
http://ecastrom.spaces.live.com
http://universosql.blogspot.com
http://todosobresql.blogspot.com
http://todosobresqlserver.wordpress.com
http://mswindowscr.org/blogs/sql/default.aspx
http://citicr.org/blogs/noticias/default.aspx
http://sqlserverpedia.blogspot.com/

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
8,520
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
251
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Ing. Eduardo Castro, PhD ecastro@grupoasesor.net http://ComunidadWindows.org
  • 2. Session Objectives: Get familiar with database performance tuning tools, especially what SQL Server 2008 offers Understand methodology of database performance bottleneck analysis Learn features/improvements of SQL Server 2008 that help improve performance
  • 3. Target the most challenging and innovative SQL Server applications 10+ TB DW, 3k/tran/s OLTP, Large 500GB+ Cubes, Competitive migrations, Complex deployments, Server Consolidation (1000+) Invest in large scale, referenceable SQL Server projects across the world Provide SQLCAT technical & project experience Conduct architecture and design reviews covering performance, operation, scalability and availability Offer use of HW lab in Redmond with direct access to SQL Server development team
  • 4. Performance Tuning Tools I/O Bottleneck CPU Bottleneck Memory Bottleneck
  • 5. System Performance Monitor (Perfmon) SQL Profiler Trace Dynamic Management Views/Functions DBCC commands SQLDiag (Shipped with SQL 2005/2008) SQLIO, SQLIOSim KernRate Debugging tools (Windbg, DebugDiag,…) More…
  • 6. Data Collector & Management Data Warehouse (MDW) Extended Events Activity Monitor New DMVs/DMFs
  • 7. MDW Host MDW Client Workstation Target Server Snapshot Data dcexec.exe Management Studio SSIS Pkgs Cache Collection Set MDW Metadata Files Reports Job Metadata SQL Agent msdb
  • 8. Time line Navigation control Resource usage
  • 9. Highly scalable with low overhead Future of SQL tracing
  • 10. Built-in system_health session select event_session_id, name, startup_state from sys.server_event_sessions Session definition example create event session session_error on server ADD EVENT sqlserver.error_reported (action (sqlserver.sql_text, sqlserver.tsql_stack, sqlserver.client_app_name) where error = 50001) ADD target package0.ring_buffer with (max_dispatch_latency = 1 seconds) go alter event session session_error on server state = start; go
  • 11. Memory allocation tracking sys.dm_os_memory_brokers sys.dm_os_memory_nodes Reqource Governor sys.dm_resource_governor_configuration sys.dm_resource_governor_resource_pools sys.dm_resource_governor_workload_groups Query performance (hash value for query and plan) sys.dm_exec_query_stats Sys.dm_exec_requests sys.dm_exec_procedure_stats sys.dm_exec_trigger_stats More…
  • 12. Bottleneck – A point or component of a process where throughput is the slowest. Understanding where time is spent Elapsed Time = Running + Waiting Key is the waiting - what type of wait(s)?
  • 13. Monitor and identify I/O bottleneck Resource Monitor & Performance Monitor MDW DMV & Extended Events What is driving high I/O load? Inefficient query plan Too much data to read/write Slow I/O subsystem
  • 14. File level I/O throughput and disk response time
  • 15. Runtime Performance monitoring System Reports What counters to look at?
  • 16. Physical Disk Object: Avg. Disk Queue Length Avg. Disk Sec/Read Avg. Disk Sec/Write %Disk Time Disk Transfers/Sec Avg. Disk Bytes/Read Avg. Disk Bytes/Write Disk Read Bytes/Sec Disk Write Bytes/Sec SQL Server Buffer Manager Object: (memory pressure could cause I/O pressure) Buffer Cache hit ratio Page Life Expectancy Checkpoint pages/sec Lazywrites/sec
  • 17. Page I/O waits in Buffer pool WriteLog and LogBuffer waits
  • 18. High I/O Latch sys.dm_os_wait_stats Wait Time sys.dm_exec_requests pending/stalled sys.dm_io_pending_io_requests I/O sys.dm_io_virtual_file_stats ERRORLOG This is 15 second delay in IO warnings of I/O completion way too delays slow
  • 19. sqlos package sqlserver package • async_io_requested • physical_page_read • async_io_completed • physical_page_write • wait_info • file_read • wait_info_external • file_write • long_io_detected 2009-04-13 18:30:10.170 spid5s SQL Server has encountered 1 occurrence(s) of I/O requests taking longer than 15 seconds to complete on file [T:tempdbtemplog.ldf] in database [tempdb] (2). The OS file handle is 0x0000000000000670. The offset of the latest long I/O is: 0x000007eecac000 king longer than 15 seconds to complete on file [e:myslowdb.mdf] in database [myslowdb] (1). The OS file handle is 0x00000438. The offset of the latest long IO is: 0x000000513ce000
  • 20. Look if there is memory pressure Further narrow down to what queries are generating the I/O workload. Tune these queries. Explore data compression to reduce I/O load Upgrade storage hardware
  • 21. Compress tables/indexes to reduce database size Compression ratio depends on schema & data distribution (avg 50-60%) Reduce query runtime I/O (increase cpu) Identify compression candidates sp_estimate_data_compression_savings sys.dm_db_index_operational_stats
  • 22. Sustained %Processor Time > 80% Performance Monitor/Task Manager MDW Server Activity Report DMV & Extended Events What is driving high CPU? Recompilations Cursors Inefficient query plans More…
  • 23. Resource • Monitor it Live Monitor/Task Manager Performance Monitor • Watch Live or Log Counters counters you like System Data Collector • Formatted Perfmon Reports counter based report Windows Performance • Dig deeper using ETW Toolkit (XPerf)
  • 24. Processor object: %Privileged Time %Processor Time New in SQL Server 2008 for Resource %User Time Governor feature Process object (SQL Server): %Privileged Time %Processor Time %User Time SQL Server:Workload Group Stats CPU usage % Max request cpu time SQL Server:Resource Pool Stats CPU usage % CPU usage target %
  • 25. SQL Server:SQL Statistics Batch requests/sec SQL Compilations/sec SQL Re-Compilations/sec SQL Server:Cursor Manager by Type SQL Server:Cursor Manager Total Concurrent processing of multiple cursors could be cpu intensive
  • 26. Total CPU waits CPU cycles that did the real work Wait in runnable queue Thread voluntarily yields
  • 27. sys.dm_exec_query_stats Sys.dm_exec_sessions sys.dm_exec_requests sys.dm_exec_procedure_stats Sys.sysprocesses sys.dm_exec_trigger_stats cpu_time cpu_time total_worker_time cpu total_scheduled_tim e total_elapsed_time total_elapsed_time Backward compatibility view Sql_handle/query_h total_elapsed_time query_hash ash
  • 28. sqlos package sqlserver package •scheduler_monitor_non_yielding_ring_buffer_recorded •sql_statement_completed •spinlock_backoff •sp_statement_completed •Wait_info •cursor_manager_cursor_end •wait_info_external •checkpoint_end Extended Event can track individual statement level events like Profiler does with minimal impact - ADD EVENT sqlserver.sql_statement_completed (action (sqlserver.sql_text) WHERE duration > 0), ADD EVENT sqlserver.sp_statement_completed (action (sqlserver.sql_text) WHERE duration > 0) select top 10 CONVERT(xml, event_data).value('(/event/data/value)[4]','int') as 'cpu'
  • 29. High cpu doesn’t necessarily mean it’s a problem. Drill down to specific workload and queries that drive cpu usage. Tune them. Use Resource Governor to protect high priority workloads Upgrade hardware
  • 30. Resource Governor allocate cpu/memory to prioritized workloads based on connection string parameters Mixed workloads: OLTP, Reporting, Maintenance Soft Numa Node configuration (soft numa node and cpu affinity) Network Configuration (soft numa node and tcp port)
  • 31. Monitor and identify memory pressure Performance Monitor/Task Manager MDW Server Activity Report DMV & Extended Events What is eating up my memory? External or internal memory pressure Inefficient query plan (hashing, sorting,…)
  • 32. AWE 32-bit uses AWE to cache data/index pages 64-bit uses AWE to implement “Locked pages in memory” Environment Virtual Address Max physical Space memory 32-bit on 32-bit OS 2 GB 64 GB 32-bit on 64-bit OS (Wow) 4 GB 64 GB 64-bit on 64-bit OS 8 TB 2 TB
  • 33. Perfmon is golden tool to identify memory pressure Memory object: Available K/M bytes Commit Limit Paging File %Usage (Peak) Page reads/sec Process object: Private bytes Virtual bytes Working set
  • 34. SQL Server Memory Manager object: Connection Memory Lock Memory Somebody is waiting on Optimizer Memory memory Memory Grants Pending … SQL Server Buffer Manager object: Buffer cache hit ratio Checkpoint pages/sec Free list stalls/sec Free pages Lazy writes/sec Page life expectancy How long will the page Stolen pages live? Target pages Total pages SQL Server Plan Cache object SQL Server Resource Pool Stats object
  • 35. Query execution waits on memory for sorting, hashing,…
  • 36. DBCC MEMORYSTATUS sys.dm_os_sys_memory system_memory_state_desc a good indicator of available physical memory sys.dm_os_process_memory process_physical_memory_low = 1 indicates low physical memory. memory_utilization_percentage value below 100% indicates external memory pressure. sys.dm_os_memory_clerks
  • 37. sys.dm_os_ring_buffers RING_BUFFER_SCHEDULER_MONITOR RING_BUFFER_RESOURCE_MONITOR RING_BUFFER_OOM RING_BUFFER_MEMORY_BROKER RING_BUFFER_BUFFER_POOL
  • 38. sqlos package sqlserver package • page_heap_memory_allocated • sort_memory_grant_adjustment • page_heap_memory_freed • plan_cache_cache_hit • memory_node_oom_ring_buffer_recorded • plan_cache_cache_attempt • cursor_manager_cursor_memory_usage 2009-04-14 09:27:15.43 spid62 Failed allocate pages: FAIL_PAGE_ALLOCATION 1
  • 39. Check memory configuration – sp_configure External memory pressure – Identify what other processes are competing Internal memory pressure – Identify which SQL component is main consumer Workload/query tuning (sorting, hash join…) Resource Governor Hardware upgrade
  • 40. Focus on methodology – no guess Correlate data points from multiple tools Performance tuning is iterative process – bottleneck could move Resource contention impacts each other Lack of memory -> high cpu & I/O Slow I/O -> tempdb contention …
  • 41. Ing. Eduardo Castro, PhD ecastro@grupoasesor.net
  • 42. “Troubleshooting Performance Problems in SQL Server 2008” http://msdn.microsoft.com/en- us/library/dd672789.aspx

×