SQL Track: In Memory OLTP in SQL Server

Post on 26-May-2015

202 views 4 download

Tags:

description

With SQL server 2014, Microsoft introduced In-Memory OLTP, codename Hekaton. This technology contains revolutionary concepts for optimizing the performance of OLTP workloads via natively compiled stored procedures,memory optimized tables and much more. This session will give you an overview of the different aspects of In-memory OLTP and how this is integrated in the SQL server engine. By giving demo's we will show you what is (im)possible with this new feature and how this really can increase your database performance!

transcript

In Memory OLTP

SQL server 2014 Hekaton Engine

Frederik Bogaerts

Give me more

NSLOOKUP 127.0.0.0

Hekaton in a nutshell

Please ExplainWhy Demo

So long …

Hekaton – In Memory OLTPHash

Indexes

Memory Optimiz

ed Tables

Range Indexe

s

Latch-free

Hekaton Engine

Source: Microsoft.com

Prepare your databaseCreate Database Add memory optimized filegroup Add file to filegroup

Memory Optimized TablesCREATE 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

HashRange 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 OWNERAS BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english')

-- insert T-SQL hereEND

LimitationsOnly 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

DiagnosticsAll 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 MindData in memory at all times

Still using log files

Do not exceed 256 GB of InMem table

Going For Gold

Please ExplainWhy Demo

Follow Technet Belgium@technetbelux

Subscribe to the TechNet newsletteraka.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