12. Common Concurrency Issues with Applications Wrong transaction isolation level Incorrect locking granularity Missing Indexes Accessing large dataset leading to lock escalation Long running transactions User interactions in active transaction Accessing objects in reverse order across transactions
14. GreenRoad Case Study:RCSI GreenRoad is an Israeli startup improving driving behavior for fleets and consumers Works as SAAS More than 400 inserts/sec Users running queries and reports frequently Method used to increase concurrency: RCSI: Read Committed Snapshot Isolation
16. Read Committed SnapshotStatement-Level ‘Snapshot Isolation’ New “flavor” of read committed Turn ON/OFF on a database Readers see committed values as of beginning of statement Writers do not block Readers Readers do not block Writers Writers do block writers Can greatly reduce locking / deadlocking without changing applications
18. Lock Escalation HOBT T1: IX T1: X Page Page Page T1: X T1: X T1: X T1: X T1: X Row Row Row T1: X T1: X T1: X Lock Escalation T1: IX
19. Lock Escalation Converting finer-grain locks to coarse grain locks. Row to Table Page to Table. Benefits Reduced locking overhead Reduces Memory requirement Triggered when Number of locks acquired on a rowset > 5000 Memory pressure
20. Partitioned Tables and Indexes SQL Server 2005 introduced partitioning, which some customers use to scale a query workload Another common use is to streamline maintenance and enable fast range inserts and removals from tables Partitioned Table FG1 FG2 FG3 Partition 2 Partition 3 Partition 1
21. Lock escalation on partitioned tables reduces concurrency as the table lock locks ALL partitions Only way to solve this in SQL Server 2005 is to disable lock escalation Lock Escalation: The Problem Query 1 Query 2 Partitioned Table IX X ESCALATE update update Partition 2 Partition 1 Partition 3 FG1 FG2 FG3
22. Lock Escalation: The Solution SQL Server 2008 allows lock escalation to the partition level, allowing concurrent access to other partitions Escalation to partition level does not block queries on other partitions Query 1 Query 2 Partitioned Table IX ESCALATE update update X Partition 2 Partition 1 Partition 3 FG1 FG2 FG3
25. Silent Blocker: Page Latches What is a Pagelatch? Access patterns leading to latch contention Clustering index has a increasing primary key with high rate of inserts Relatively small tables with a lot of read/write/delete Indexes with low cardinality in the key with high rate of inserts Allocation Structures (e.g. SGAM) Observed with 16+ concurrent threads Page Header R1 Free Offset R2 R3
26. Silent Blocker: Page Latches What can you do? Cluster on some other column Partition the table on some other attribute (computed column (hash)) Add another major key column Change the application
29. Codename Lyngby Case Study: Power of bulk inserts Security/audit system 50GB of data inserted daily Data is kept for one year and should be available for queries and reports at any time Method used to increase concurrency: Bulk inserts
30. Benefits of Bulk Inserts Improved concurrency Allow application-database decoupling In Lyngby case – 50GB a day! http://www.tapuz.co.il/blog/userBlog.asp?FolderName=Hygge
31. Bulk Inserts & RCSI: SQLCAT Benchmark What happens when you query a table while bulk inserts are running?
32. Bulk Inserts & RCSI: SQLCAT Benchmark And with RCSI? Bulk loading does not affect the size of the version store in tempdb under RCSI Keep in mind: RCSI adds 14 noncompressible bytes into every row in every table Bottom line: RCSI works extremely well with bulk inserts and achieves improved concurrency More details about this benchmark: http://sqlcat.com/technicalnotes/archive/2009/04/06/bulk-loading-data-into-a-table-with-concurrent-queries.aspx
33. StreamInsight:Complex Event Processing SQL Server 2008 R2 feature Processing and querying of event data streams Data queried while “in flight” May involve multiple concurrent event sources Works with high data rates Aims for near-zero latency
34. Isn’t This Just a Database Application? Event request output stream input stream response
38. Tapuz Case Study: Offloading Traffic Tapuz is the leading user content based website in Israel 1,200 forums 74,000 blogs 500,000 visitors each month More than 4000 queries/sec Method used to increase concurrency: Offloading using Transactional Replication
39. Database Scale Out Queries scaled out (often geographically) similar to reporting cases Databases replicate reciprocally and are writable Redundancy provides fault tolerance and lowers maintenance downtime Online upgrades possible
41. Denali HADR V.Next, code named “Denali” offers a brand new HADR feature High-availability and disaster recovery feature, using up to 4 replicas Replicas can be synchronous or asynchronous CTP supports only single asynchronous replica
44. Related sessions Monday 14:00-15:15 New High Availability Solution in SQL Server “Denali” Justin Erickson & Oren Bouni Tuesday 09:30-10:45 Mission Critical: Improving High Availability and Reliability Assaf Fraenkel 12:30-13:30 Designing High Performance I/O System with SQL Server Dubi Lebel 11:15-12:15 Troubleshoot Like a Pro with the Microsoft SQL Server 2008 Tools Guy Glantser
45. Open your mind to uncommon features and technologies in SQL Server and try them Using these features, amazing concurrency can be achieved by any DBA using SQL Server!
47. Recommended Courses: SQL 2008 Maintaining a Microsoft SQL Server 2008 Database Implementing a Microsoft SQL Server 2008 Database ועכשיו מבצע מיוחד! הרשם לאחד מקורסי SQL המוצעים כאן קנה בחינת הסמכה משלימה: 70-432 TS: Microsoft SQL Server 2008, Implementation and Maintenance 70-433 TS: Microsoft SQL Server 2008, Database Development וקבל מנוי שנתי ל- TechNet ואפשרות לבחינה חוזרת ללא עלות לפרטים נוספים והרשמה, פנה למכללות המוסמכות
No escalation from Row to PageEach lock structure is 100 bytesNumber of locks acquired on a rowset > 5000 - Periodically after that
Self-explanatory. See Books Online for more details about partitioning. Also see http://msdn2.microsoft.com/en-us/library/ms345146.aspx
Query 1 is updating partition 1. It hits the escalation threshold and escalates to a TABLE X lock. Query 2 tries to update partition 3 and can’t because of the table X lock, even though nothing in partition 3 is being altered by query 1.
Instead of escalating to the table level and blocking all other queries on the table, you can now choose to have escalation to the partition level, which allows concurrent queries on different partitions.
Sunil Agarwal – Principal Program Manager
אחד האהובים עלי
Complex event processing involves the processing and querying of data when the data is in flight. The data needs to be processed before there is time to persist it.Such processing involves very high data rates and often deals with multiple concurrent event sources and multiple output data.The aim is to process with as little latency as possible.
Database applications work in much slower times. For complex event processing applications, the latencies involved are much smaller.
Complex event processing involves the processing and querying of data when the data is in flight. The data needs to be processed before there is time to persist it.Such processing involves very high data rates and often deals with multiple concurrent event sources and multiple output data.The aim is to process with as little latency as possible.
Complex event processing involves the processing and querying of data when the data is in flight. The data needs to be processed before there is time to persist it.Such processing involves very high data rates and often deals with multiple concurrent event sources and multiple output data.The aim is to process with as little latency as possible.
Complex event processing involves the processing and querying of data when the data is in flight. The data needs to be processed before there is time to persist it.Such processing involves very high data rates and often deals with multiple concurrent event sources and multiple output data.The aim is to process with as little latency as possible.
Complex event processing involves the processing and querying of data when the data is in flight. The data needs to be processed before there is time to persist it.Such processing involves very high data rates and often deals with multiple concurrent event sources and multiple output data.The aim is to process with as little latency as possible.
Complex event processing involves the processing and querying of data when the data is in flight. The data needs to be processed before there is time to persist it.Such processing involves very high data rates and often deals with multiple concurrent event sources and multiple output data.The aim is to process with as little latency as possible.
Complex event processing involves the processing and querying of data when the data is in flight. The data needs to be processed before there is time to persist it.Such processing involves very high data rates and often deals with multiple concurrent event sources and multiple output data.The aim is to process with as little latency as possible.