Summit officially began today. I had a great time meeting new people, talking to vendors and learning stuff.
The big things today were they Keynote, Extended Events, Enterprise Information Management and Performance Tuning.
MS is clearly taking the threat from SAP's HANA seriously with making a new in-memory storage engine fr SQL Server. It will be in the next major release and is expected to speed up existing applications substantially.
Extended Events are interesting and really are complex enough that there would be a real benefit from having an actual book assembled about them. It is replacing a very simple tool (Profiler) with a very complex and powerful one. I learned just enough to know that I need to send a lot of quality time to understand it as much as I'd like.
So far it looks like Microsoft is taking the approach of going after the smaller, simpler data to Master instead of trying to battle in the arena of CDI or PIM where there are large established player. This follows the approach MS has had for a while. Something like Informatica is just overkill to manage Jill's spreadsheet that everyone shares, but MDS is perfect for managing and distributing the information throughout the company.
Some of my notes from today are below:
KeynoteMS Announced Hekaton : An in-memory engine for SQL Server
- There will be an adviser on when to use it
- Live as part of the DBMS server as a different storage engine. Heterogeneous
- Lock and latch free
- The storage engine for tables can be changed to move them in and out of memory. If the table no longer fits it switches to the conventional model. Because this can be done seamlessly the data is likely persisted to disk in the conventional DBMS way.
- Exadata uses flash as a sort of cache fusion
- HANA is designed as Memory primary and disk secondary so has huge performance drops when memory limits are exceeded.
- Stored procedure optimization compiled to native code
- Included in the next version of SQL Server
Parallel Data Warehouse
* Polybase allows seems connection to Hadoop / Hive and SQL Server DB to allow a single point of federated querying
Extended EventsSQL Trace and Profiler are deprecated. With SQL 2012 every traceable is now available in Extended Events
Extended events are much lighter than Profiler (similar to trace) of the previous options with support for multiple targets. http://www.sqlperformance.com/2012/10/sql-trace/observer-overhead-trace-extended-events
The available targets are:
- Event Bucketing (Bucketizer) is a specialized ringbuffer, storing aggregates
- Event Pairing allows the tracking of things like everything happening between lock_acquired and lock_released
- Event file (xml)
- Synchronous Event Counter only tracks number of times and event fired, no details
The SQL Server audit events have been merged into the normal extended events.
System Overhead (as tested by SQLCAT)
- Query Time increases by 2 microseconds. As more actions are tracked this does increase.
- Memory increases by 4MB for the RingBuffer
- Disk storage is more verbose, always try to avoid logging to the Data / Log volumes
- If the event tracking causes too much of a slowdown, it will be automatically disconnected until it has less impact on performance.
In general the learning curve is steeper but you can do more with Extended Events than with Profiler.
The GUI is not as nice and profiler and there is a larger learning curve. Also the SQL 2012 GUI does not work with SQL 2008.
Event information is recorded in an XML structure that is fairly consistent. Use XQuery to extract the results in a tabular form.
One mental model for understanding the different parts of the setup is to think of it like an insert statement
INSERT INTO [TARGET]
SELECT [EVENT DATA]
LEFT OUTER JOIN [ACTION]
The predicate will short circuit, this is means that Criteria should be placed with the most restrictive rules first!
More good stuff on Jonathan Kehayias's blog
Because traces are very light they can run in the background. For example, the old SQL Trace Blackbox has returned as an Extended Event session called "system_health" and is visible under: Server>Management>Extended Events>Sessions and is using two targets, an event file and the ring_buffer.
Performance Tuning5 Mains areas to consider when there is a problem
- Locks and Blocks
Activity Monitor is MUCH better than it was in SQL 2005. Most of the common troubleshooting DMVs are presented there.
The only system process with a SPID > 50 is... SERVICE BROKER! That is a feature that really gets no respect and it turns out the other system process don't want to be associated with it either
When a WAIT x:y:z is displayed, the variables represent
- x : DBID
- y : File ID
- z : Page
- page 1 contains the page free space bitmap, contnention here is typically for heaps (most temp tables and table variables are heaps). Scalar and non-inlined TVFs can abuse this by creating and destroying objects swiftly.