Columns that are not part of the index key can be included in nonclustered indexes. Including the nonkey columns in the index can speed queries (Index covering) and can exceed the current index size limitations of a maximum of 16 key columns and a maximum index key size of 900 bytes
The new ALLOW_ROW_LOCKS and ALLOW_PAGE_LOCKS options in CREATE INDEX and ALTER INDEX can be used to control the level at which locking occurs for the index
The query optimizer can match more queries to indexed views than in previous versions, including queries that contain scalar expressions, scalar aggregate and user-defined functions, interval expressions, and equivalency conditions
Indexed view definitions can also now contain scalar aggregate and user-defined functions with certain restrictions.
Pilot of a newly developed internet pharmacy application
SQL Server running on a 2-CPU system
currently supporting 120 users
System crashing frequently
CPU (per MS Perf Mon) was pegging the box at 100%
Solution after 6 weeks?
add 2 more CPUs to double server capacity
performance was “acceptable”
but CPU was still at 95%
Panic had set in
going to 800+ users on initial production roll out
how much more hardware would they need?
so far, this increased their software license costs by $70K
Here is what we found Monday at 10AM
Time to Value – 1 Day
95% of 4 CPU’s
7% of 2 CPU’s
Drill Down: Instance> Database> Statement
Drilling down into root causes
Further drill down
Significant io wait
i3 traps, tracks, and stores all query plans…
… And will tell you when & why the plans change
Drilling Down into Stored Procedures
REPLACE WITH MORE RECENT PICTURE
Who is Doing the Work?
What tables are being accessed the most? Drill down and identify the queries hitting them.
You’ve found the high-activity table; how is it being accessed?
Ever wonder which indexes may be safely removed?
New Wait States
Case Study #2: Not in the Database
4-processor SQL Server in an Application Service Provider (ASP) environment
Key queries (stored procedures) were rewritten to run in under a half second, from 5-20 seconds.
Further follow-up found that application response time was still in the 5-second + category
We knew the issue was not in the database; but where was it?
How to demonstrate that it’s not the database
Where is the application spending its time?
When the vast majority of elapsed time is not in the database, you have evidence that it’s not your fault.
In this case, I had been brought in to tune the database, knocked all the queries down from 5-10 second range to significantly subsecond. Performance was still in the 3-6 second range for much of the application. I knew it was not a database issue, but what was it?
In this case, it was the result of significant requests to an SSL layer; it turned out that some of the screens were taking 5-6 seconds to encrypt due to the quantity of dynamic data displayed.
Why APM is Important
70% - studies have shown that 70%+ of all application performance issues are directly attributable to the source code, NOT INFRASTRUCTURE
It’s critical to monitor and track performance of the application code components
25% - studies have shown that only 25% of performance issues identified in production could have been anticipated and resolved in test/dev/QA
Monitoring production performance is critical to application availability and performance
60% of i3’s customer’s cancel or defer hardware upgrade purchases within the first year of ownership
Multi-tier web-based applications are extremely complex with great interdependency among hardware/software/application components. This makes it virtually impossible to determine root cause in a timely fashion – a typical response to the frustration is to upgrade expensive hardware. I3 streamlines your application components.
100% - i3’s customers have found that their staff can double their IT responsibility without additional workload
3 – i3 has an average payback of 3 months, 1.8 months at one large Federal agency
1-3% - i3 has an average overhead of 1-3% in production environments
24% of IT staff time is devoted to addressing application performance delays