SlideShare uma empresa Scribd logo
1 de 38
SQL Server 2016: In-Memory OLTP
Otimizando a performance
usando In-Memory OLTP
no SQL Server 2016
Felipe de Assis
@felipespas | DataEX
Felipe.assis@outlook.com
Luiz Henrique Garetti
@luizhgaretti | Microsoft
luizh.rosario@gmail.com
PATROCINADORES
PosConference – 09/10 – SP
Local:
Microsoft Brasil – SP
Inscrições:
http://tinyurl.com/SQLSat570
Felipe de Assis
 Consultor SQL Server na DataEX
 Graduado em Ciência da Computação
 MBA em Arquitetura e Gestão de TI
 Articulista na SQL Magazine
 MCTS, MCITP, MCSA, MCSE e MCT
 Blog: felipedba.wordpress.com
 Email: felipe.assis@outlook.com
Luiz Henrique Garetti
 vPFE SQL Server na Microsoft
 Graduado em Ciência da Computação
 Pós-graduado em Arquitetura de BDs
 Colunista no site iMasters e SQL Magazine
 MCT, MTA, MCTS, MCSA
 Blog: lhgaretti.wordpress.com
 Email: luizh.rosario@gmail.com
Agenda
BEGIN TRANSACTION
1- Introdução ao In-Memory OLTP
2- Principais conceitos
3- Índices
4- Procedures Nativamente Compiladas
5- Transaction Log
6- Migrando Disk Based para Memória
7- Cases Reais
COMMIT TRANSACTION
DEMONSTRAÇÃO
Afinal de contas, do que estamos falando?
Qual o potencial do In-Memory OLTP?
Referência: https://msdn.microsoft.com/en-us/library/dn133171.aspx
Introdução ao In-Memory OLTP
 Funcionalidade disponível a partir do SQL Server 2014
 Processamento transacional de altíssima performance
 Mecanismos de funcionamento totalmente repensados
 Novo conceito de armazenamento de dados
 Modelo otimista de concorrência
 Implantação praticamente transparente às aplicações
 Integrado com os principais recursos do SQL Server
Overview da arquitetura
DatafileLogfileIn-Memory FG
tabelas e índices in-memory query
interop
tabelas e índices disk-
based
execução de queries t-
sql
parser,
catalog,
optimizer
Compilador
in-memory
SPs nativamente
compiladas
tds handler
T1 IX1
T1 IX1T1 IX1
T2 IX2
T2 T2
• Disk-Based
• In-Memory
• Interop
Estrutura de arquivos In-Memory OLTP
CREATE DATABASE [Corporativo]
ON PRIMARY
(NAME = N‘Copor1',FILENAME = N'C:DataCoporrativo1.mdf'),
FILEGROUP [Hekaton_InMemory]
CONTAINS MEMORY_OPTIMIZED_DATA
(NAME = N‘Corp2', FILENAME = N'C:DataMemCorp2')
LOG ON (NAME = N‘Corp_log', FILENAME =
N'C:DataLogCorplog.ldf')
Filegroup Container
Create
Table
DDL
Code
Generated
and
Compiled
Table
DLL is
created
Table
DLL
loaded in
memory
DLLs geradas pelo In-Memory OLTP
Database ID
Module Loaded
sys.dm_os_loaded_modules
Object ID
Table
Tipos de Tabela In-Memory OLTP
 Dois novos tipos de tabelas:
 SCHEMA_ONLY
 Somente estrutura da tabela é persistida
 Índice requerido
 SCHEMA_AND_DATA
 Estrutura e dados da tabela são persistidos
 Dados são persistidos em arquivos chamados
Checkpoint Files (Filegroup In-Memory)
 Constraint Primary Key requerida
Criando tabelas otimizadas em memória
CREATE TABLE Example01_Data
(
Codigo INT NOT NULL IDENTITY,
Nome VARCHAR(100) COLLATE Latin1_General_100_BIN2 NOT NULL,
DataNasc DATETIME NOT NULL,
Endereco VARCHAR(100) NOT NULL,
Cidade VARCHAR(100) NOT NULL,
CONSTRAINT PK_Example01_Codigo
PRIMARY KEY NONCLUSTERED HASH (Codigo)
WITH (BUCKET_COUNT = 100),
INDEX IX_Nome NONCLUSTERED (Nome)
) WITH( MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA )
GO
Pré-requisito
para indexar
colunas do
tipo texto no
SQL Server
2014
Definição da Tabela como
Memory Optimized
Durabilidade:
SCHEMA_AND_DATA ou SCHEMA_ONLY
Índice na coluna Nome
Pré-Requisito:
Primary Key
Como funciona o armazenamento de dados
da maneira tradicional (Disk-Based)?
Buffer Cache
Data
Page
8KB
Data
Page
8KB
Index
Page
8KB
Buffer Buffer Buffer
Data
Page
8KB
Data
Page
8KB
Index
Page
8KB
Buffer Buffer Buffer
Data
Page
8KB
Data
Page
8KB
Data
Page
8KB
Buffer BufferBuffer
Data
Page
8KB
Data
Page
8KB
Index
Page
8KB
Buffer BufferBuffer
Datafile(s) mdf ou ndf
Data
Page
8KB
Data
Page
8KB
Data
Page
8KB
Index
Page
8KB
Data
Page
8KB
Data
Page
8KB
Data
Page
8KB
Index
Page
8KB
Como funciona o armazenamento de dados
no In-Memory OLTP?
 In-Memory OLTP
não utiliza páginas
e extents
 Registros são
armazenados
individualmente
 Índices são
utilizados para
conectar registros
da mesma tabela
Memória
Row 1
Row 2
Row 3
Row 4
Row 5
Row 6
Row 7
Row 8
Tabela A
Tabela B
Estrutura dos registros em memória
End Ts StmIdBegin Ts IdxLinkCount
{
8 bytes
{
{
4 bytes
{2 bytes
Padding
Index
Pointers
8 bytes
Row Header Payload
8 bytes
(por índice)
{
2 bytes
{
 Cada registro possui seu próprio cabeçalho
Persistência de dados no In-Memory OLTP
Codigo Nome Disciplina
1 Neymar Ed. Física
Memória
Checkpoint
Files
Disco
2 Gabriel Jesus Teologia
3 Gabigol Psicologia Checkpoint
Thread
Codigo Nome Disciplina
1 Neymar Ed. Física
2 Gabriel Jesus Teologia
3 Gabigol Psicologia
Inserts
Deletes
3
Data Files Delta Files
 Tá bom! Então tudo é armazenado em memória...
E se o servidor cair?
Novos tipos de índices In-Memory
 Hash Indexes
 Ideal para consultas que:
 Recuperam registros específicos (lookups)
 Procuram registros usando igualdade (=)
 Pesquisas em colunas com alta cardinalidade (poucos
valores repetidos)
 Funcionamento diferente em relação à queries com
filtros compostos (mais de um predicado)
 Memória alocada previamente, no momento da
criação da tabela/índice
 Necessário pré-definir a quantidade de Hash Buckets
que serão criados
Exemplo: Hash Indexes na coluna “nome”
1
0
3
2
5
4
7
6
Neymar Ed. Fisica60, ...
Index Pointer NameTimestamps Class
Gabigol Psicologia7, ...
Array de Ponteiros (Buckets)
Gabriel Jesus Teologia7, ...
RowChain
SELECT * FROM Clientes WHERE CPF = @CPF
Novos tipos de índices In-Memory
 Range Indexes
 Ideal para consultas que:
 Pesquisam por intervalos de registros
 Utilizam predicados como >, <, >=, <=, BETWEEN, etc.
 Quantidade de registros é desconhecida
 Baseado em uma variação de árvore balanceada
conhecida como BW-Tree
 Único “elemento” do In-Memory Engine que usa
o conceito de páginas, mas ainda sim, funciona
diferente do tradicional (disk-based)
Exemplo: Range Index na primeira letra
1
3
4
5
6
Page Mapping TabIe
(Memory Addresses)
2
7
8
AE
ABCD EFG
HK
HIJ KLMNOP
GPZ
QV
QRSTU VWXYZ
PID2 PID1 PID3
Root
PID0
0 Novo Conceito:
BW-Tree
M
M
M
M
Data Rows
(Chain)
SELECT * FROM Pedidos WHERE DataPedido > @Data
Novos tipos de índices In-Memory
 Columnstore Indexes
 Novidade no SQL Server 2016
 Utilizado apenas por consultas interop
 Procedures nativamente compiladas não fazem uso
 Queries interop podem fazer uso do paralelismo e do
modo de processamento batch de forma mais eficiente
 Podem ser considerados “nonclustered” porque
geram uma cópia adicional dos dados
 Podem consumir entre 10% e 100% da
quantidade de memória alocada para a tabela
Exemplo: Criando um Columnstore Index
CREATE TABLE dbo.OrderDetailsBig
(
PedidoID INT NOT NULL
,ProdutoID INT NOT NULL
,PrecoUnitario MONEY NOT NULL
,Quantidade SMALLINT NOT NULL
,Desconto MONEY NOT NULL
,CONSTRAINT PK_Order_Details
PRIMARY KEY NONCLUSTERED HASH (OrderID,ProductID)
WITH (BUCKET_COUNT = 1000000)
,INDEX clcsi_OrderDetailsBig CLUSTERED COLUMNSTORE WITH
(COMPRESSION_DELAY = 60)
)
WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA);
Criação do Índice Columnstore
Compression_Delay:
Periodicidade de compressão
DEMONSTRAÇÃO
Hash Indexes vs Range Indexes
Procedures Nativamente Compiladas
• T-SQL Compilado em DLLs (C++)
• Executado em baixo nível (Linguagem de Maquina)
• Somente para tabelas In-Memory – Oferece maior
performance e não permite interoperabilidade.
• T-SQL com limitações
In Memory
OLTP
Runtime
In Memory
OLTP
Compiler
DLL
Parser /
Algebrizer
Query
Optimizer
Query
Plan
Query
Tree
CREATE PROC
DDL
(T-SQL)
CREATE PROCEDURE [dbo].[InsertOrder]
(@id INT, @date DATETIME)
WITH
NATIVE_COMPILATION,
SCHEMABINDING,
AS
BEGIN ATOMIC
WITH
(TRANSACTION ISOLATION LEVEL = SNAPSHOT,
LANGUAGE = N'us_english')
-- Insert T-SQL…
END
Procedures Nativamente Compiladas
Identifica que a Procedure será
Nativamente Compilada em Memoria
Requerido
Transações >
Operações.
Isolation Level e Idioma
precisam ser definidos
no início da procedure
Uso do Transaction Log
T1 IX1 T2 IX2
UPDATE Example01
SET Descricao = 'Novo Valor'
WHERE Codigo = 1
Disk-Based In-Memory
In-Memory FG
Data Delta
In-Memory Checkpoint
- Transações In-Memory são
registradas no mesmo TLOG
- Apenas transações
confirmadas (commit) são
registradas
- Escrita mais eficiente obtida
através de compressão
DEMONSTRAÇÃO
Utilização do Transaction Log
em Tabelas In-Memory
Migrando tabelas Disk-Based para In-Memory
DEMONSTRAÇÃO
Table Usage Analysis
Migrando para In-Memory OLTP
Case – Shock Absorber
 Após mudar a arquitetura para utilizar in-memory (em
uma implementação conhecida como Shock Absorber)
o limite de throughput de envio de SMS passou de 1000
SMS/hora para 850 mil SMS/hora.
 Impacto positivo de 450%
na receita da empresa.
Case – Tabela Schema_Only
Procedure
de Insert
AVG Time
(2 Sessões paralelas)
Média CPU
(micro seg)
Disk-Based T-SQL 4025 ms 1.974.912
In-Memory T-SQL 708 ms 366.233
Onde:
Empresa de
processamento
de transações
de crédito.
Resultado:
Throughput de
processamento
otimizado em
mais de 400%.
OPCIONAL: DEMONSTRAÇÃO
Particionamento Lógico de Tabelas
usando In-Memory OLTP
https://msdn.microsoft.com/en-us/library/dn133171.aspx
Algumas referências...
White Paper: SQL Server 2016 CTP 3 In-Memory OLTP Internals
http://sqlblog.com/blogs/kalen_delaney/archive/2016/01/19/sql-server-2016-ctp3-in-
memory-oltp-internals-whitepaper.aspx
Book: SQL Server Internals: In-Memory OLTP
http://www.red-gate.com/library/sql-server-internals-in-memory-oltp
Shock Absorber
https://blogs.technet.microsoft.com/dataplatforminsider/2013/09/19/in-memory-oltp-
common-design-pattern-high-data-input-rateshock-absorber/
Calling Native Compiled Procedures Best Practices
http://sqlperformance.com/2015/06/t-sql-queries/how-not-to-call-hekaton-procedures
Felipe de Assis – Série sobre In Memory OLTP
https://felipedba.wordpress.com/category/in-memory-oltp
Não abordamos por limitações de tempo...
 Funções In-Memory (msdn): http://tinyurl.com/ztt33ho
 Isolation Levels (msdn): http://tinyurl.com/hh24e7u
 Checkpoint Files (msdn): http://tinyurl.com/gl47x56
 Constraints (Pinal Dave): http://tinyurl.com/jgxdalc
 Garbage Collector (msdn): http://tinyurl.com/hx6wbts
 Monitoração (Murilo Miranda): http://tinyurl.com/jfxmo38
 Resource Governor (msdn): http://tinyurl.com/zdhzvce
 Modelo otimista de concorrência (P. Dave): http://tinyurl.com/hn5oyqr
Próximos passos
Otimizando a performance com in memory no sql 2016
Otimizando a performance com in memory no sql 2016

Mais conteúdo relacionado

Mais procurados

PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantesEduardo Mendes
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012Rodrigo Ribeiro
 
Apostila Curso Php My Sql(Portugues)
Apostila Curso Php My Sql(Portugues)Apostila Curso Php My Sql(Portugues)
Apostila Curso Php My Sql(Portugues)guestcc491
 
ODI Series - Exportar Tabelas para Arquivo Texto
ODI Series -  Exportar Tabelas para Arquivo TextoODI Series -  Exportar Tabelas para Arquivo Texto
ODI Series - Exportar Tabelas para Arquivo TextoCaio Lima
 
SQL Server 2012
SQL Server 2012SQL Server 2012
SQL Server 2012Hcode
 
Odi tutorial configuração repositórios mestre e trabalho
Odi tutorial   configuração repositórios mestre e trabalhoOdi tutorial   configuração repositórios mestre e trabalho
Odi tutorial configuração repositórios mestre e trabalhoCaio Lima
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Marco Pinheiro
 
7869510 109domine-o-excel-2007[1]
7869510 109domine-o-excel-2007[1]7869510 109domine-o-excel-2007[1]
7869510 109domine-o-excel-2007[1]Paula Ferreira
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasCaio Lima
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebDalton Martins
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29Juliana Nascimento
 
ODI Tutorial - Modelo de Dados
ODI Tutorial - Modelo de DadosODI Tutorial - Modelo de Dados
ODI Tutorial - Modelo de DadosCaio Lima
 
Exercícios de mysql
Exercícios de mysqlExercícios de mysql
Exercícios de mysqlLeo Frazão
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_serverJosé Henrique Sento Sé
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoRangel Javier
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL BásicoIgor Alves
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosDanilo Braga
 

Mais procurados (20)

PHP e MySQL para iniciantes
PHP e MySQL para iniciantesPHP e MySQL para iniciantes
PHP e MySQL para iniciantes
 
T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012T-SQL na prática com SQL SERVER Express 2012
T-SQL na prática com SQL SERVER Express 2012
 
Apostila Curso Php My Sql(Portugues)
Apostila Curso Php My Sql(Portugues)Apostila Curso Php My Sql(Portugues)
Apostila Curso Php My Sql(Portugues)
 
ODI Series - Exportar Tabelas para Arquivo Texto
ODI Series -  Exportar Tabelas para Arquivo TextoODI Series -  Exportar Tabelas para Arquivo Texto
ODI Series - Exportar Tabelas para Arquivo Texto
 
Apostila ib
Apostila ibApostila ib
Apostila ib
 
SQL Server 2012
SQL Server 2012SQL Server 2012
SQL Server 2012
 
Odi tutorial configuração repositórios mestre e trabalho
Odi tutorial   configuração repositórios mestre e trabalhoOdi tutorial   configuração repositórios mestre e trabalho
Odi tutorial configuração repositórios mestre e trabalho
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)Linguagem SQL (com MySQL)
Linguagem SQL (com MySQL)
 
7869510 109domine-o-excel-2007[1]
7869510 109domine-o-excel-2007[1]7869510 109domine-o-excel-2007[1]
7869510 109domine-o-excel-2007[1]
 
ODI SERIES - Melhores Práticas
ODI SERIES - Melhores PráticasODI SERIES - Melhores Práticas
ODI SERIES - Melhores Práticas
 
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação WebAula 08 - Introdução ao banco de dados MySQL - Programação Web
Aula 08 - Introdução ao banco de dados MySQL - Programação Web
 
3260 php truquesmagicos %281%29
3260 php truquesmagicos %281%293260 php truquesmagicos %281%29
3260 php truquesmagicos %281%29
 
ODI Tutorial - Modelo de Dados
ODI Tutorial - Modelo de DadosODI Tutorial - Modelo de Dados
ODI Tutorial - Modelo de Dados
 
Exercícios de mysql
Exercícios de mysqlExercícios de mysql
Exercícios de mysql
 
37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server37 consultando tabelas_com_sql_no_sql_server
37 consultando tabelas_com_sql_no_sql_server
 
Banco de Dados - MySQL Basico
Banco de Dados - MySQL BasicoBanco de Dados - MySQL Basico
Banco de Dados - MySQL Basico
 
Aula 10 banco de dados
Aula 10   banco de dadosAula 10   banco de dados
Aula 10 banco de dados
 
Treinamento de SQL Básico
Treinamento de SQL BásicoTreinamento de SQL Básico
Treinamento de SQL Básico
 
PL/SQL - Conceitos Básicos
PL/SQL - Conceitos BásicosPL/SQL - Conceitos Básicos
PL/SQL - Conceitos Básicos
 

Destaque

SQL Server It Just Runs Faster
SQL Server It Just Runs FasterSQL Server It Just Runs Faster
SQL Server It Just Runs FasterBob Ward
 
SQL Server In-Memory OLTP: What Every SQL Professional Should Know
SQL Server In-Memory OLTP: What Every SQL Professional Should KnowSQL Server In-Memory OLTP: What Every SQL Professional Should Know
SQL Server In-Memory OLTP: What Every SQL Professional Should KnowBob Ward
 
Inside SQL Server In-Memory OLTP
Inside SQL Server In-Memory OLTPInside SQL Server In-Memory OLTP
Inside SQL Server In-Memory OLTPBob Ward
 
Psicopedagoga rj.com.br Cadastro
Psicopedagoga rj.com.br   CadastroPsicopedagoga rj.com.br   Cadastro
Psicopedagoga rj.com.br CadastroPsicopedagogaRJ
 
Creep Coursework Presentation
Creep Coursework PresentationCreep Coursework Presentation
Creep Coursework Presentationkess1a
 
Copia de resumen qué son los mapas conceptuales.doc%0 a
Copia de resumen qué son los mapas conceptuales.doc%0 aCopia de resumen qué son los mapas conceptuales.doc%0 a
Copia de resumen qué son los mapas conceptuales.doc%0 anoeliavillar
 
Pre Production (Planning)
Pre Production (Planning)Pre Production (Planning)
Pre Production (Planning)Rahul Karavadra
 
Context Based Learning for GIS: an Interdisciplinary Approach
Context Based Learning for GIS: an Interdisciplinary ApproachContext Based Learning for GIS: an Interdisciplinary Approach
Context Based Learning for GIS: an Interdisciplinary ApproachPatrick Rickles
 
портфолио голубович
портфолио голубовичпортфолио голубович
портфолио голубовичgolubovicholga
 
Continuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsContinuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsMichael Medin
 
Using puppet to leverage DevOps in Large Enterprise Oracle Environments
Using puppet to leverage DevOps in Large Enterprise Oracle Environments Using puppet to leverage DevOps in Large Enterprise Oracle Environments
Using puppet to leverage DevOps in Large Enterprise Oracle Environments Bert Hajee
 
Edition Based Redefinition - Continuous Database Application Evolution with O...
Edition Based Redefinition - Continuous Database Application Evolution with O...Edition Based Redefinition - Continuous Database Application Evolution with O...
Edition Based Redefinition - Continuous Database Application Evolution with O...Lucas Jellema
 
Nature and animal conservation by art
Nature and animal conservation by artNature and animal conservation by art
Nature and animal conservation by artART Raviteja akarapu
 
Continuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsContinuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsPrabhu Ramasamy
 
Twenty is Plenty
Twenty is PlentyTwenty is Plenty
Twenty is PlentyBob Ward
 
SQL Server R Services: What Every SQL Professional Should Know
SQL Server R Services: What Every SQL Professional Should KnowSQL Server R Services: What Every SQL Professional Should Know
SQL Server R Services: What Every SQL Professional Should KnowBob Ward
 
Qué fue el holocausto judío
Qué fue el holocausto judío Qué fue el holocausto judío
Qué fue el holocausto judío Yamila Valdez
 

Destaque (20)

SQL Server It Just Runs Faster
SQL Server It Just Runs FasterSQL Server It Just Runs Faster
SQL Server It Just Runs Faster
 
SQL Server In-Memory OLTP: What Every SQL Professional Should Know
SQL Server In-Memory OLTP: What Every SQL Professional Should KnowSQL Server In-Memory OLTP: What Every SQL Professional Should Know
SQL Server In-Memory OLTP: What Every SQL Professional Should Know
 
Inside SQL Server In-Memory OLTP
Inside SQL Server In-Memory OLTPInside SQL Server In-Memory OLTP
Inside SQL Server In-Memory OLTP
 
CopyofAResume
CopyofAResumeCopyofAResume
CopyofAResume
 
Psicopedagoga rj.com.br Cadastro
Psicopedagoga rj.com.br   CadastroPsicopedagoga rj.com.br   Cadastro
Psicopedagoga rj.com.br Cadastro
 
Creep Coursework Presentation
Creep Coursework PresentationCreep Coursework Presentation
Creep Coursework Presentation
 
Copia de resumen qué son los mapas conceptuales.doc%0 a
Copia de resumen qué son los mapas conceptuales.doc%0 aCopia de resumen qué son los mapas conceptuales.doc%0 a
Copia de resumen qué son los mapas conceptuales.doc%0 a
 
Pre Production (Planning)
Pre Production (Planning)Pre Production (Planning)
Pre Production (Planning)
 
Context Based Learning for GIS: an Interdisciplinary Approach
Context Based Learning for GIS: an Interdisciplinary ApproachContext Based Learning for GIS: an Interdisciplinary Approach
Context Based Learning for GIS: an Interdisciplinary Approach
 
портфолио голубович
портфолио голубовичпортфолио голубович
портфолио голубович
 
Portfolio Draft
Portfolio DraftPortfolio Draft
Portfolio Draft
 
Continuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database InsightsContinuous Delivery at Oracle Database Insights
Continuous Delivery at Oracle Database Insights
 
Using puppet to leverage DevOps in Large Enterprise Oracle Environments
Using puppet to leverage DevOps in Large Enterprise Oracle Environments Using puppet to leverage DevOps in Large Enterprise Oracle Environments
Using puppet to leverage DevOps in Large Enterprise Oracle Environments
 
Edition Based Redefinition - Continuous Database Application Evolution with O...
Edition Based Redefinition - Continuous Database Application Evolution with O...Edition Based Redefinition - Continuous Database Application Evolution with O...
Edition Based Redefinition - Continuous Database Application Evolution with O...
 
Nature and animal conservation by art
Nature and animal conservation by artNature and animal conservation by art
Nature and animal conservation by art
 
Continuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database ObjectsContinuous Integration - Oracle Database Objects
Continuous Integration - Oracle Database Objects
 
ckitterman resume
ckitterman resumeckitterman resume
ckitterman resume
 
Twenty is Plenty
Twenty is PlentyTwenty is Plenty
Twenty is Plenty
 
SQL Server R Services: What Every SQL Professional Should Know
SQL Server R Services: What Every SQL Professional Should KnowSQL Server R Services: What Every SQL Professional Should Know
SQL Server R Services: What Every SQL Professional Should Know
 
Qué fue el holocausto judío
Qué fue el holocausto judío Qué fue el holocausto judío
Qué fue el holocausto judío
 

Semelhante a Otimizando a performance com in memory no sql 2016

6338 111121071604-phpapp01
6338 111121071604-phpapp016338 111121071604-phpapp01
6338 111121071604-phpapp01Gilson Figueredo
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopDiego Sana
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdfQuitriaSilva550
 
MySQL - Wagner Bonfiglio - Navegg
MySQL - Wagner Bonfiglio - NaveggMySQL - Wagner Bonfiglio - Navegg
MySQL - Wagner Bonfiglio - NaveggFelipe Guimarães
 
Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Osny Pereira Filho
 
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...Fabrício Catae
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQlCezar Souza
 
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftPath to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftAmazon Web Services LATAM
 
Oracle 11g resumo
Oracle 11g resumoOracle 11g resumo
Oracle 11g resumomarcosgama
 
Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4André Phillip Bertoletti
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Emiliano Barbosa
 
Curso Enterprise Architect
Curso Enterprise ArchitectCurso Enterprise Architect
Curso Enterprise Architectrandearievilo
 

Semelhante a Otimizando a performance com in memory no sql 2016 (20)

6338 111121071604-phpapp01
6338 111121071604-phpapp016338 111121071604-phpapp01
6338 111121071604-phpapp01
 
Otimizando a performance com in-memory no SQL 2016
Otimizando a performance com in-memory no SQL 2016Otimizando a performance com in-memory no SQL 2016
Otimizando a performance com in-memory no SQL 2016
 
Mongo Db - PHP Day Workshop
Mongo Db - PHP Day WorkshopMongo Db - PHP Day Workshop
Mongo Db - PHP Day Workshop
 
Introdução ao BD Postgre
Introdução ao BD PostgreIntrodução ao BD Postgre
Introdução ao BD Postgre
 
MySQL - Workshop Buscapé
MySQL - Workshop BuscapéMySQL - Workshop Buscapé
MySQL - Workshop Buscapé
 
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
364722271-Modulo-III-Linguagem-SQL-Versao-Final.pdf
 
MySQL - Wagner Bonfiglio - Navegg
MySQL - Wagner Bonfiglio - NaveggMySQL - Wagner Bonfiglio - Navegg
MySQL - Wagner Bonfiglio - Navegg
 
Hibernate-consultas
Hibernate-consultasHibernate-consultas
Hibernate-consultas
 
Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01Express2012simples 130312140529-phpapp01
Express2012simples 130312140529-phpapp01
 
3260 php truquesmagicos
3260 php truquesmagicos3260 php truquesmagicos
3260 php truquesmagicos
 
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
TechEd 2011: Raio-X do SQL Server: Arquitetura Interna do Gerenciador de Ban...
 
Minicurso PostgreSQl
Minicurso PostgreSQlMinicurso PostgreSQl
Minicurso PostgreSQl
 
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftPath to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
 
Crud
CrudCrud
Crud
 
Sql
SqlSql
Sql
 
Oracle 11g resumo
Oracle 11g resumoOracle 11g resumo
Oracle 11g resumo
 
Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4Banco de Dados II - Unimep/Pronatec - Aula 4
Banco de Dados II - Unimep/Pronatec - Aula 4
 
Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8Fundamentos de SQL - Parte 3 de 8
Fundamentos de SQL - Parte 3 de 8
 
Curso Enterprise Architect
Curso Enterprise ArchitectCurso Enterprise Architect
Curso Enterprise Architect
 
2832014 curso plsql
2832014 curso plsql2832014 curso plsql
2832014 curso plsql
 

Mais de Luiz Henrique Garetti Rosário

Sql saturday joinville 2019 sql server 2019 Big Data Clustes
Sql saturday  joinville 2019   sql server 2019 Big Data ClustesSql saturday  joinville 2019   sql server 2019 Big Data Clustes
Sql saturday joinville 2019 sql server 2019 Big Data ClustesLuiz Henrique Garetti Rosário
 
High Availability and Disaster Recovery salvando vidas
High Availability and Disaster Recovery salvando vidasHigh Availability and Disaster Recovery salvando vidas
High Availability and Disaster Recovery salvando vidasLuiz Henrique Garetti Rosário
 
High availability e Disaster Recovery é o seguro de vida de todo DBA
High availability e Disaster Recovery é o seguro de vida de todo DBAHigh availability e Disaster Recovery é o seguro de vida de todo DBA
High availability e Disaster Recovery é o seguro de vida de todo DBALuiz Henrique Garetti Rosário
 

Mais de Luiz Henrique Garetti Rosário (14)

Streaming architecture with big data clusters
Streaming architecture with big data clustersStreaming architecture with big data clusters
Streaming architecture with big data clusters
 
TDC - Planejando data Lake com big data clusters
TDC - Planejando data Lake com big data clustersTDC - Planejando data Lake com big data clusters
TDC - Planejando data Lake com big data clusters
 
SQL SAT Salvador - Arquitetando Data Lake Multicloud
SQL SAT Salvador - Arquitetando Data Lake MulticloudSQL SAT Salvador - Arquitetando Data Lake Multicloud
SQL SAT Salvador - Arquitetando Data Lake Multicloud
 
Meetup - Data Lake
Meetup - Data LakeMeetup - Data Lake
Meetup - Data Lake
 
Imasters - HA e DR como seguro de vida do DBA
Imasters - HA e DR como seguro de vida do DBAImasters - HA e DR como seguro de vida do DBA
Imasters - HA e DR como seguro de vida do DBA
 
Meetup Tivir - Big Data Clusters
Meetup Tivir - Big Data ClustersMeetup Tivir - Big Data Clusters
Meetup Tivir - Big Data Clusters
 
Sql maniacs sql server 2019 Big Data Clusters
Sql maniacs   sql server 2019 Big Data ClustersSql maniacs   sql server 2019 Big Data Clusters
Sql maniacs sql server 2019 Big Data Clusters
 
Sql saturday joinville 2019 sql server 2019 Big Data Clustes
Sql saturday  joinville 2019   sql server 2019 Big Data ClustesSql saturday  joinville 2019   sql server 2019 Big Data Clustes
Sql saturday joinville 2019 sql server 2019 Big Data Clustes
 
SQL Saturday SP - SQL Server 2019 Big Data Clusters
SQL Saturday SP - SQL Server 2019 Big Data ClustersSQL Saturday SP - SQL Server 2019 Big Data Clusters
SQL Saturday SP - SQL Server 2019 Big Data Clusters
 
SQL Maniacs - SQL Server 2019 Big Data Clusters
SQL Maniacs - SQL Server 2019 Big Data ClustersSQL Maniacs - SQL Server 2019 Big Data Clusters
SQL Maniacs - SQL Server 2019 Big Data Clusters
 
Sql server 2019 big data cluster
Sql server 2019 big data clusterSql server 2019 big data cluster
Sql server 2019 big data cluster
 
High Availability and Disaster Recovery salvando vidas
High Availability and Disaster Recovery salvando vidasHigh Availability and Disaster Recovery salvando vidas
High Availability and Disaster Recovery salvando vidas
 
High availability e Disaster Recovery é o seguro de vida de todo DBA
High availability e Disaster Recovery é o seguro de vida de todo DBAHigh availability e Disaster Recovery é o seguro de vida de todo DBA
High availability e Disaster Recovery é o seguro de vida de todo DBA
 
Escovando bit com alwayson sql server 2014
Escovando bit com alwayson sql server 2014Escovando bit com alwayson sql server 2014
Escovando bit com alwayson sql server 2014
 

Otimizando a performance com in memory no sql 2016

  • 1. SQL Server 2016: In-Memory OLTP Otimizando a performance usando In-Memory OLTP no SQL Server 2016 Felipe de Assis @felipespas | DataEX Felipe.assis@outlook.com Luiz Henrique Garetti @luizhgaretti | Microsoft luizh.rosario@gmail.com
  • 3. PosConference – 09/10 – SP Local: Microsoft Brasil – SP Inscrições: http://tinyurl.com/SQLSat570
  • 4. Felipe de Assis  Consultor SQL Server na DataEX  Graduado em Ciência da Computação  MBA em Arquitetura e Gestão de TI  Articulista na SQL Magazine  MCTS, MCITP, MCSA, MCSE e MCT  Blog: felipedba.wordpress.com  Email: felipe.assis@outlook.com
  • 5. Luiz Henrique Garetti  vPFE SQL Server na Microsoft  Graduado em Ciência da Computação  Pós-graduado em Arquitetura de BDs  Colunista no site iMasters e SQL Magazine  MCT, MTA, MCTS, MCSA  Blog: lhgaretti.wordpress.com  Email: luizh.rosario@gmail.com
  • 6. Agenda BEGIN TRANSACTION 1- Introdução ao In-Memory OLTP 2- Principais conceitos 3- Índices 4- Procedures Nativamente Compiladas 5- Transaction Log 6- Migrando Disk Based para Memória 7- Cases Reais COMMIT TRANSACTION
  • 7. DEMONSTRAÇÃO Afinal de contas, do que estamos falando? Qual o potencial do In-Memory OLTP? Referência: https://msdn.microsoft.com/en-us/library/dn133171.aspx
  • 8. Introdução ao In-Memory OLTP  Funcionalidade disponível a partir do SQL Server 2014  Processamento transacional de altíssima performance  Mecanismos de funcionamento totalmente repensados  Novo conceito de armazenamento de dados  Modelo otimista de concorrência  Implantação praticamente transparente às aplicações  Integrado com os principais recursos do SQL Server
  • 9. Overview da arquitetura DatafileLogfileIn-Memory FG tabelas e índices in-memory query interop tabelas e índices disk- based execução de queries t- sql parser, catalog, optimizer Compilador in-memory SPs nativamente compiladas tds handler T1 IX1 T1 IX1T1 IX1 T2 IX2 T2 T2 • Disk-Based • In-Memory • Interop
  • 10. Estrutura de arquivos In-Memory OLTP CREATE DATABASE [Corporativo] ON PRIMARY (NAME = N‘Copor1',FILENAME = N'C:DataCoporrativo1.mdf'), FILEGROUP [Hekaton_InMemory] CONTAINS MEMORY_OPTIMIZED_DATA (NAME = N‘Corp2', FILENAME = N'C:DataMemCorp2') LOG ON (NAME = N‘Corp_log', FILENAME = N'C:DataLogCorplog.ldf') Filegroup Container Create Table DDL Code Generated and Compiled Table DLL is created Table DLL loaded in memory
  • 11. DLLs geradas pelo In-Memory OLTP Database ID Module Loaded sys.dm_os_loaded_modules Object ID Table
  • 12. Tipos de Tabela In-Memory OLTP  Dois novos tipos de tabelas:  SCHEMA_ONLY  Somente estrutura da tabela é persistida  Índice requerido  SCHEMA_AND_DATA  Estrutura e dados da tabela são persistidos  Dados são persistidos em arquivos chamados Checkpoint Files (Filegroup In-Memory)  Constraint Primary Key requerida
  • 13. Criando tabelas otimizadas em memória CREATE TABLE Example01_Data ( Codigo INT NOT NULL IDENTITY, Nome VARCHAR(100) COLLATE Latin1_General_100_BIN2 NOT NULL, DataNasc DATETIME NOT NULL, Endereco VARCHAR(100) NOT NULL, Cidade VARCHAR(100) NOT NULL, CONSTRAINT PK_Example01_Codigo PRIMARY KEY NONCLUSTERED HASH (Codigo) WITH (BUCKET_COUNT = 100), INDEX IX_Nome NONCLUSTERED (Nome) ) WITH( MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA ) GO Pré-requisito para indexar colunas do tipo texto no SQL Server 2014 Definição da Tabela como Memory Optimized Durabilidade: SCHEMA_AND_DATA ou SCHEMA_ONLY Índice na coluna Nome Pré-Requisito: Primary Key
  • 14. Como funciona o armazenamento de dados da maneira tradicional (Disk-Based)? Buffer Cache Data Page 8KB Data Page 8KB Index Page 8KB Buffer Buffer Buffer Data Page 8KB Data Page 8KB Index Page 8KB Buffer Buffer Buffer Data Page 8KB Data Page 8KB Data Page 8KB Buffer BufferBuffer Data Page 8KB Data Page 8KB Index Page 8KB Buffer BufferBuffer Datafile(s) mdf ou ndf Data Page 8KB Data Page 8KB Data Page 8KB Index Page 8KB Data Page 8KB Data Page 8KB Data Page 8KB Index Page 8KB
  • 15. Como funciona o armazenamento de dados no In-Memory OLTP?  In-Memory OLTP não utiliza páginas e extents  Registros são armazenados individualmente  Índices são utilizados para conectar registros da mesma tabela Memória Row 1 Row 2 Row 3 Row 4 Row 5 Row 6 Row 7 Row 8 Tabela A Tabela B
  • 16. Estrutura dos registros em memória End Ts StmIdBegin Ts IdxLinkCount { 8 bytes { { 4 bytes {2 bytes Padding Index Pointers 8 bytes Row Header Payload 8 bytes (por índice) { 2 bytes {  Cada registro possui seu próprio cabeçalho
  • 17. Persistência de dados no In-Memory OLTP Codigo Nome Disciplina 1 Neymar Ed. Física Memória Checkpoint Files Disco 2 Gabriel Jesus Teologia 3 Gabigol Psicologia Checkpoint Thread Codigo Nome Disciplina 1 Neymar Ed. Física 2 Gabriel Jesus Teologia 3 Gabigol Psicologia Inserts Deletes 3 Data Files Delta Files  Tá bom! Então tudo é armazenado em memória... E se o servidor cair?
  • 18. Novos tipos de índices In-Memory  Hash Indexes  Ideal para consultas que:  Recuperam registros específicos (lookups)  Procuram registros usando igualdade (=)  Pesquisas em colunas com alta cardinalidade (poucos valores repetidos)  Funcionamento diferente em relação à queries com filtros compostos (mais de um predicado)  Memória alocada previamente, no momento da criação da tabela/índice  Necessário pré-definir a quantidade de Hash Buckets que serão criados
  • 19. Exemplo: Hash Indexes na coluna “nome” 1 0 3 2 5 4 7 6 Neymar Ed. Fisica60, ... Index Pointer NameTimestamps Class Gabigol Psicologia7, ... Array de Ponteiros (Buckets) Gabriel Jesus Teologia7, ... RowChain SELECT * FROM Clientes WHERE CPF = @CPF
  • 20. Novos tipos de índices In-Memory  Range Indexes  Ideal para consultas que:  Pesquisam por intervalos de registros  Utilizam predicados como >, <, >=, <=, BETWEEN, etc.  Quantidade de registros é desconhecida  Baseado em uma variação de árvore balanceada conhecida como BW-Tree  Único “elemento” do In-Memory Engine que usa o conceito de páginas, mas ainda sim, funciona diferente do tradicional (disk-based)
  • 21. Exemplo: Range Index na primeira letra 1 3 4 5 6 Page Mapping TabIe (Memory Addresses) 2 7 8 AE ABCD EFG HK HIJ KLMNOP GPZ QV QRSTU VWXYZ PID2 PID1 PID3 Root PID0 0 Novo Conceito: BW-Tree M M M M Data Rows (Chain) SELECT * FROM Pedidos WHERE DataPedido > @Data
  • 22. Novos tipos de índices In-Memory  Columnstore Indexes  Novidade no SQL Server 2016  Utilizado apenas por consultas interop  Procedures nativamente compiladas não fazem uso  Queries interop podem fazer uso do paralelismo e do modo de processamento batch de forma mais eficiente  Podem ser considerados “nonclustered” porque geram uma cópia adicional dos dados  Podem consumir entre 10% e 100% da quantidade de memória alocada para a tabela
  • 23. Exemplo: Criando um Columnstore Index CREATE TABLE dbo.OrderDetailsBig ( PedidoID INT NOT NULL ,ProdutoID INT NOT NULL ,PrecoUnitario MONEY NOT NULL ,Quantidade SMALLINT NOT NULL ,Desconto MONEY NOT NULL ,CONSTRAINT PK_Order_Details PRIMARY KEY NONCLUSTERED HASH (OrderID,ProductID) WITH (BUCKET_COUNT = 1000000) ,INDEX clcsi_OrderDetailsBig CLUSTERED COLUMNSTORE WITH (COMPRESSION_DELAY = 60) ) WITH (MEMORY_OPTIMIZED = ON, DURABILITY = SCHEMA_AND_DATA); Criação do Índice Columnstore Compression_Delay: Periodicidade de compressão
  • 25. Procedures Nativamente Compiladas • T-SQL Compilado em DLLs (C++) • Executado em baixo nível (Linguagem de Maquina) • Somente para tabelas In-Memory – Oferece maior performance e não permite interoperabilidade. • T-SQL com limitações In Memory OLTP Runtime In Memory OLTP Compiler DLL Parser / Algebrizer Query Optimizer Query Plan Query Tree CREATE PROC DDL (T-SQL)
  • 26. CREATE PROCEDURE [dbo].[InsertOrder] (@id INT, @date DATETIME) WITH NATIVE_COMPILATION, SCHEMABINDING, AS BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'us_english') -- Insert T-SQL… END Procedures Nativamente Compiladas Identifica que a Procedure será Nativamente Compilada em Memoria Requerido Transações > Operações. Isolation Level e Idioma precisam ser definidos no início da procedure
  • 27. Uso do Transaction Log T1 IX1 T2 IX2 UPDATE Example01 SET Descricao = 'Novo Valor' WHERE Codigo = 1 Disk-Based In-Memory In-Memory FG Data Delta In-Memory Checkpoint - Transações In-Memory são registradas no mesmo TLOG - Apenas transações confirmadas (commit) são registradas - Escrita mais eficiente obtida através de compressão
  • 28. DEMONSTRAÇÃO Utilização do Transaction Log em Tabelas In-Memory
  • 29. Migrando tabelas Disk-Based para In-Memory
  • 31. Case – Shock Absorber  Após mudar a arquitetura para utilizar in-memory (em uma implementação conhecida como Shock Absorber) o limite de throughput de envio de SMS passou de 1000 SMS/hora para 850 mil SMS/hora.  Impacto positivo de 450% na receita da empresa.
  • 32. Case – Tabela Schema_Only Procedure de Insert AVG Time (2 Sessões paralelas) Média CPU (micro seg) Disk-Based T-SQL 4025 ms 1.974.912 In-Memory T-SQL 708 ms 366.233 Onde: Empresa de processamento de transações de crédito. Resultado: Throughput de processamento otimizado em mais de 400%.
  • 33. OPCIONAL: DEMONSTRAÇÃO Particionamento Lógico de Tabelas usando In-Memory OLTP https://msdn.microsoft.com/en-us/library/dn133171.aspx
  • 34. Algumas referências... White Paper: SQL Server 2016 CTP 3 In-Memory OLTP Internals http://sqlblog.com/blogs/kalen_delaney/archive/2016/01/19/sql-server-2016-ctp3-in- memory-oltp-internals-whitepaper.aspx Book: SQL Server Internals: In-Memory OLTP http://www.red-gate.com/library/sql-server-internals-in-memory-oltp Shock Absorber https://blogs.technet.microsoft.com/dataplatforminsider/2013/09/19/in-memory-oltp- common-design-pattern-high-data-input-rateshock-absorber/ Calling Native Compiled Procedures Best Practices http://sqlperformance.com/2015/06/t-sql-queries/how-not-to-call-hekaton-procedures Felipe de Assis – Série sobre In Memory OLTP https://felipedba.wordpress.com/category/in-memory-oltp
  • 35. Não abordamos por limitações de tempo...  Funções In-Memory (msdn): http://tinyurl.com/ztt33ho  Isolation Levels (msdn): http://tinyurl.com/hh24e7u  Checkpoint Files (msdn): http://tinyurl.com/gl47x56  Constraints (Pinal Dave): http://tinyurl.com/jgxdalc  Garbage Collector (msdn): http://tinyurl.com/hx6wbts  Monitoração (Murilo Miranda): http://tinyurl.com/jfxmo38  Resource Governor (msdn): http://tinyurl.com/zdhzvce  Modelo otimista de concorrência (P. Dave): http://tinyurl.com/hn5oyqr

Notas do Editor

  1. Falem que o evento é gratuito pra todos, e que os patrocinadores são os responsáveis por garantir o coffee e a infra-estrutura basica pro evento acontecer. Em contra partida, eles querem mostrar seus produtos e serviços, é legal aos participantes conhecerem o que eles tem a oferecer e aceitar receber contatos deles via email.