In Memory OLTP
SQL server 2014 Hekaton Engine
Frederik Bogaerts
Give me more
NSLOOKUP 127.0.0.0
Hekaton in a nutshell
Please
Explain
Why Demo
So long …
Hekaton – In Memory OLTP
Hekaton Engine
Source: Microsoft.com
Prepare your database
Create Database
Add memory optimized filegroup
Add file to filegroup
Memory Optimized Tables
CREATE TABLE [Customer](
[CustomerID] INT NOT NULL
PRIMARY KEY NONCLUSTERED HASH WITH (BUCKET_COUNT = 1000000),
[Name] NVARCHAR(250) NOT NULL,
[CustomerSince] DATETIME NULL
INDEX [ICustomerSince] NONCLUSTERED
)
WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);
Limitations
No DML
no LOBs, no XML and no CLR data types
No Foreign Key or Check constraints
No UNIQUE indexes other than PK
Max 8 indexes
Data Structures
New Row
Format
Versioning :
Timestamps
No data
page
containers
Row header Payload (table columns)
Begin Ts End Ts StmtId IdxLinkCount
8 bytes 8 bytes 4 bytes 2 + 2 (padding)
bytes
8 bytes * (IdxLinkCount)
Source: Microsoft.com
Indexes
Buckets
Point
Lookups
Hash
Range
Scanning
BW-Tree
Non
Clustered
Hash Indexes
Source: Microsoft.com
Range Indexes
Source: Microsoft.com
Natively Compiled Procs
CREATE PROCEDURE [dbo].[InsertOrder] @id INT, @date DATETIME
WITH
NATIVE_COMPILATION,
SCHEMABINDING,
EXECUTE AS OWNER
AS
BEGIN ATOMIC
WITH
(TRANSACTION
ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'us_english')
-- insert T-SQL here
END
Limitations
Only In MEM tables
No OUTER JOIN, no DISTINCT no OR, no subqueries, no CASE
Limited built-in functions
BUT:
Fastest way!
Good news : Interface will be expanded in next version
T-SQL (Not) Supported
INTEROP
Truncate
Dynamic en
keyset
cursors
Cross
database
Linked
servers
Locking
Hints –
Isolation
Levels
Merge
Garbage Collection
Multi
Versioning
Stale
Rows
Scans
slow
Bloathing
memory
Diagnostics
All starting with sys.dm_db_xtpDMO
•sys.dm_db_xtp_checkpoint_files
•sys.dm_db_xtp_table_memory_stats
•Sys.dm_db_xtp_index_stats
XEvents
•From SYS.dm_xe_objects O JOIN SYS.dm.xe_packages P on O.package_guid = P.guid where P.name = ‘XtpEngine’
Perfomance Counters
•From sys.dm_os_performance_counters where object_name like ‘XTP%’
Keep In Mind
Data in memory at all times
Still using log files
Do not exceed 256 GB of InMem table
Going For Gold
Please
Explain
Why Demo
Follow Technet Belgium
@technetbelux
Subscribe to the TechNet newsletter
aka.ms/benews
Be the first to know
A SQL query walks into a bar and sees two tables.
He walks up to them and says 'Can I join you?
The SQL query found the table by doing a full scan of the
other tables…
In the meanwhile, the waitress arrived at the table.
Woohoow what a nice view…
Thank You!
Belgium’s biggest IT PRO Conference

SQL Track: In Memory OLTP in SQL Server

Editor's Notes

  • #3 http://msdn.microsoft.com/en-us/library/dn720242.aspx
  • #7 As always with new technology, there are new concepts introduced. Throughout my session I’ll talk about these topics one by one.
  • #19 Kicks in after a couple of minutes.
  • #20 There are also addons done to the SYS.tables, here we can check whether we are dealing with In memory tables and the durability level of the