SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part...
Transcript of SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part...
![Page 1: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/1.jpg)
SQL Server 2014 In-MemoryTables (Hekaton)
![Page 2: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/2.jpg)
DID YOU EVER WORK ON A SOFTWARE PROJECT
THAT WAS LATE?
![Page 3: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/3.jpg)
Xanadu, The World’s Most Delayed Software, Is Finally Released After 54 Years In The Making!
![Page 4: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/4.jpg)
Andy Novick
• SQL Server Developer/Consultant
• SQL Server MVP since 2010
• Author of 2 books on SQL Server
• www.NovickSoftware.com
![Page 5: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/5.jpg)
Objectives of this presentation
• Overview of In-Memory Technology
• Tools to get started trying them out
![Page 6: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/6.jpg)
Databases with In-Memory Capability
Source: InformationWeek
![Page 7: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/7.jpg)
RAM Prices Over the Last 40 Years
-2
-1
0
1
2
3
4
5
6
7
Year
19
72
19
74
19
76
19
78
19
80
19
82
19
84
19
86
19
88
19
90
19
92
19
94
19
96
19
98
20
00
20
02
20
04
20
06
20
08
20
10
20
12
20
14
20
16
RAM - Log10($ per GB)
Log10($ per GB)
![Page 8: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/8.jpg)
Why In-Memory?
Fast OLTP
![Page 9: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/9.jpg)
What’s a Heketon?
• SQL Server In-Memory Technology
• 100 Times Faster!
– They didn’t get there
• But impressively close
![Page 10: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/10.jpg)
What goes into Hekaton
• In-Memory Tables
– Tables with the ACID Properties
• Natively Compiled T-SQL Stored Procedures
– Compiled to machine code including query plans
![Page 11: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/11.jpg)
![Page 12: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/12.jpg)
In-Memory Tables: Requirements
• 64 Bit System
• Enterprise Edition
• Processor with cmpxchg16b instruction
• Windows Server 2008 R2 SP2 or Windows Server 2012 R2
![Page 13: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/13.jpg)
IN-MEMORY TABLES
![Page 14: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/14.jpg)
In-Memory Tables: 3 things you must know
• They’re Tables
• They’re Tables
• They’re Tables
![Page 15: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/15.jpg)
In-Memory Tables - What Makes the Them Fast?
• No locks, latches, spinlocks, etc.
• Data is written sequentially, only!
• No indexes are stored or logged. They’re in memory only.
• Non-durable tables. No I/O
• Checkpoints are background sequential I/O
• Compatible with Delayed Durability
![Page 16: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/16.jpg)
In-Memory Tables – CREATE TABLE
CREATE TABLE Product_inmem(ProdID int IDENTITY(1,1) NOT NULL,Name nvarchar(50) COLLATE Latin1_General_100_BIN2 NOT NULL,Color nvarchar(15) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,ModifiedDate datetime2(7) NOT NULL
CONSTRAINT DF_Product_ModifiedDate DEFAULT (sysdatetime()),
CONSTRAINT IMPK_Product_ProdID PRIMARY KEY NONCLUSTERED HASH(ProdID) WITH ( BUCKET_COUNT = 1048576),
INDEX IX_Name NONCLUSTERED (Name ASC),
)WITH ( MEMORY_OPTIMIZED = ON , DURABILITY = SCHEMA_AND_DATA )
![Page 17: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/17.jpg)
In-Mem Tables - Indexes
• Must have one index
• Up to 8 indexes per table
• Inherently covering– NO INCLUDE needed
• Types– HASH – good for equality predicates
– RANGE – good for index seeks, ordering, etc.
![Page 18: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/18.jpg)
In-Mem Tables - Logging
• Uses the traditional log
– The same one for disk based tables
• Only logical changes are logged.
• All 3 recovery models are supported
![Page 19: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/19.jpg)
In-Mem Tables - Durability
• It’s optional – Data and Schema
– Schema Only
• Can be delayed
• Implemented with 2 types of 2 files– Data files
– Delta files
![Page 20: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/20.jpg)
In-Mem Tables Adding the FileGroup
ALTER DATABASE AdventureWorks2014ADD FILEGROUP AdventureWorks2014_mod
CONTAINS MEMORY_OPTIMIZED_DATA
ALTER DATABASE AdventurWorks2014ADD FILE (name=‘AdventureWorks2014_mod',
filename=‘c:\db\inmem\AdventureWorks2014_mod')TO FILEGROUP AdventureWorks2014_mod
![Page 21: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/21.jpg)
In-Mem Tables - Recovery
• Recovery at the speed of I/O
• This is a function of database size!
![Page 22: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/22.jpg)
In-Mem Tables - Merge Process
• Processes the changes and produces a new starting data file
• sys.sp_xtp_merge_checkpoint_files@database_name
, @transaction_lower_bound, @transaction_upper_bound
• DBA job
![Page 23: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/23.jpg)
In-Mem Tables – Limitations (1)
• No LOB – Varchar(MAX), NVARCHAR(MAX)– Text, ntext, image, varbinary(max)
• No computed columns
• No CHECK, Unique or Foreign Key constraints
• No Triggers
• No Replication
• No Collations other than Bin2! (‘A’ != ‘a’)
![Page 24: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/24.jpg)
In-Mem Tables – Limitations (2)
• Only Code Page 1252
• Update of Primary Key Columns
• No Alter Table
• Create or Drop Index
![Page 25: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/25.jpg)
In-Mem Tables - Memory Consumption
• Memory Size = Table Size + SUM(Index Size)
• TABLE Size = Row Size * Row Count• Row Size = SUM (Column Size) + Header• Header = 24 + 8 * Index Count
• Hash Index size = Bucket_Count * 8 bytes
• The multiply it all by 2
![Page 26: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/26.jpg)
In-Mem Tables - Can They Crash SQL Server?
• YES
• Integrated with Resource Governor
CREATE RESOURCE POOL Pool_AdventureWorksMemoryWITH ( MAX_MEMORY_PERCENT = 80);
ALTER RESOURCE GOVERNOR RECONFIGURE;
![Page 27: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/27.jpg)
In-mem Tables: Table Variables
• Created using a table type (CREATE TYPE)
• Requires at least one index
• Restrictions on data types, etc. remain
• The table is in the user database not tempdb
• No parallel plans
WITH ( MEMORY_OPTIMIZED = ON )
![Page 28: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/28.jpg)
In-Mem Tables: Table Variable Example
CREATE TYPE Sales.SalesOrderDetailType_inmem AS TABLE(OrderQty smallint NOT NULL,ProductID int NOT NULL,SpecialOfferID int NOT NULL,
INDEX IX_ProdID NONCLUSTERED HASH (ProductID) WITH (BUCKET_COUNT = 8),INDEX IX_SpclOfferID NONCLUSTERED HASH (SpecialOfferID)
WITH ( BUCKET_COUNT = 8)) WITH ( MEMORY_OPTIMIZED = ON )GOdeclare @tab Sales.SalesOrderDetailType_inmeminsert into @tab values (1, 1, 1), (2,2,2), (3,3,3)
select * from @tab
![Page 29: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/29.jpg)
In-Mem Tables: Table Variable Advantages
• Not transactional
• Can be used in Cross-Database queries
• Can be used as Table-Valued Parameters to stored procedures
![Page 30: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/30.jpg)
In-Memory Tables: Interop
• Interpreted T-SQL can use both In-Mem and On-Disk tables
• Some Restrictions
– Not target of MERGE
• No Parallel Plans
![Page 31: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/31.jpg)
Not Supported – Interpreted TSQL
• TRUNCATE TABLE
• MERGE (memory-optimized table as target)
• Dynamic and keyset cursors (these automatically degrade to static).
• Access from CLR modules, using the context connection.
• Referencing a memory-optimized table from an indexed view.
• Cross-database queries
• Cross-database transactions
• Linked servers
![Page 32: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/32.jpg)
Interop vs Compiled Stored Procedure
![Page 33: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/33.jpg)
Interop vs Compiled Stored Procedure
Interop• Use memory and disk tables
• Most of T-SQL
• Best for
– Ad hoc queries
– Reporting Queries
– Migration
In-Mem /Compiled Sproc• Only Memory tables
• Limited T-SQL
• Best for
– OLTP
– Optimized performance
![Page 34: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/34.jpg)
DEMO – IN-MEMORY TABLES
![Page 35: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/35.jpg)
Concurrency: Optimistic Locking
• There are no traditional:– Locks
– Latches
– Spin-locks
• Multi-version Optimistic Locking
• You MUST code for failure.
![Page 36: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/36.jpg)
Isolation Levels
• Repeatable Read– Reads same row version a commit time as earlier
• Serializable– As if there were no concurrent transactions– All actions happen at a single commit time
• Snapshot– Reads are consistent as of the start of the TXN– Writes are always consistent
![Page 37: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/37.jpg)
Concurrency: How
• Global Transaction Timestamp
• Multiple Row versions can live in memory
• Every row has a
– BeginT(imestamp)
– EndT(imestamp)
![Page 38: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/38.jpg)
Concurrency: Issues it solves
• Dirty Reads
– Read data from uncommitted transactions
• Non-Repeatable Reads
– Multiple reads in a TRAN get different rows
• Phantom Reads
– New rows read in second read in a TRAN
![Page 39: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/39.jpg)
Concurrency: Isolation Level
Isolation Level Dirty Reads
Non-Repeatable Reads
PhantomReads
Rows As-of Read-WriteWrite-Write
Read Uncommitted Yes Yes Yes Now N/A
Read Committed No Yes Yes Committed/Now
BlocksN/A
Repeatable Read No No Yes First Read Blocks/No-BlockFail at COMMIT
Serializable No No No First Read Blocks/No-BlockFails at COMMIT
Snapshot No No No Begin TRAN as-of BEGIN TRANFails at COMMIT
Locking in Microsoft SQL Server (Part 19) – Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich
![Page 40: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/40.jpg)
COMPILED T-SQL PROCEDURES
![Page 41: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/41.jpg)
Compiled Stored Procedures
• T-SQL stored procedure
• Compiled to C then Machine Code
– Not Dot Net
• Include the Query Plans
• Limited Surface Area
![Page 42: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/42.jpg)
Compiled Stored Procedures
• Native Compilation
• SCHEMABINDING
• EXECUTE AS OWNER
• BEGIN Atomic – Begin a Tran or Savepoint– Isolation Level Must be declared
– LANGUAGE – Fixed at compile time
![Page 43: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/43.jpg)
Compiled Proc - Surface Area Limitations
• Memory optimized tables only
• INNER JOIN supported
• OUTER JOIN not supported
• Also no: MERGE, OUTPUT, OR, ……
![Page 44: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/44.jpg)
DEMO – COMPILED SPROC
![Page 45: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/45.jpg)
What’s not faster
• Chatty applications may not see any gain.
• Logging is still done (except for indexes)
– So Low Log Latency is still important
• DML on many rows
![Page 46: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/46.jpg)
Hardware Required
• Memory– All the memory you need for disk based tables, plus– 2 x Amount of In-Memory tables– Resource Governor can prevent excess memory use
• Disk – Log – Must be fast (SSD, PCIe based Flash)– Data
• Mostly Sequential • I/O path speed is key
![Page 47: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/47.jpg)
No Supported in Compiled Sprocs
• Merge
• OUTER JOINS
• Lots of other stuff
– OUTPUT
– CURSOR
![Page 48: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/48.jpg)
DEMO
![Page 49: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/49.jpg)
OLTP DemoStored Procedure Calls
OnDisk Seconds InMem Seconds
1,000,000 133 14
![Page 50: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/50.jpg)
SQL Server 2014: Other Great Features
• Delayed Durability
• New Cardinality Estimates
• Incremental Statistics
• Buffer Pool extended to SSD
• 640 Processors and 4 TB of RAM
• Updatable Column Store Indexes
![Page 51: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/51.jpg)
References
• SQL Server 2014 In-Mem Samplehttp://msftdbprodsamples.codeplex.com/releases/view/125550
• Why Hekaton is Truly Revolutionaryhttp://sqlblog.com/blogs/merrill_aldrich/archive/2013/10/21/why-hekaton-in-memory-oltp-truly-is-revolutionary.aspx
![Page 52: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/52.jpg)
Downloads
• Adventure Works 2014 Sample Databases– http://msftdbprodsamples.codeplex.com/releases/view/125550
– exec sp_ChangeDBOwner sa
• SQL Server 2014 RTM In-Memory OLTP Sample– http://msftdbprodsamples.codeplex.com/releases/view/114491
– Change file location and be sure to use SQLCMD mode
• RML Utilities for SQL Server (x64) CU4 – http://www.microsoft.com/en-us/download/details.aspx?id=4511
![Page 53: SQL Server 2014 In-MemoryTables (Hekaton) · 2015. 7. 21. · Locking in Microsoft SQL Server (Part 19) –Concurrency model in in-memory OLTP (Hekaton) Dmitry Korotkevich. COMPILED](https://reader033.fdocuments.us/reader033/viewer/2022051903/5ff3f611fa13da4a417e8c93/html5/thumbnails/53.jpg)
Coming Attractions
• Writing Faster Stored Procedures– Sea Coast SQL Server User Group– April 27th
• New England Microsoft Developers– Meets 1st Thursday of the Month– At Foliage: 20 North Ave. Burlington, MA– Meetup http://www.meetup.com/NE-MSFT-Devs/