{"id":11319,"date":"2019-04-05T10:52:03","date_gmt":"2019-04-05T10:52:03","guid":{"rendered":"https:\/\/dbtut.com\/?p=11319"},"modified":"2019-04-05T11:18:03","modified_gmt":"2019-04-05T11:18:03","slug":"in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017","status":"publish","type":"post","link":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/","title":{"rendered":"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017"},"content":{"rendered":"<p>In this article, we will explain what is In Memory OLTP and how to use this feature in SQL Server 2014 and what is limitations. Then, we&#8217;ll examine how this feature develops with SQL Server 2016 and SQL Server 2017 step by step.<\/p>\n<h1>What is In Memory OLTP<\/h1>\n<p>In Memory OLTP is a feature announced with SQL Server 2014. With this feature, we can now store our data in memory. When we say we can store the data in memory, a lot of people who are interested in sql server think it is buffer pool. As an important point, data is not stored in the buffer pool, but directly in memory. I mentioned the buffer pool in my article &#8220;<a href=\"https:\/\/dbtut.com\/index.php\/2018\/10\/24\/what-is-buffer-pool-extension\/\" target=\"_blank\" rel=\"noopener noreferrer\">What is Buffer Pool Extension<\/a>&#8220;.<\/p>\n<p>Of course, it is often not possible to store all of our data in memory. We can use this feature for our critical tables.<\/p>\n<p>The most important feature of &#8220;In Memory OLTP&#8221; is that there is not <strong>lock and latch<\/strong>. So it increases performance very seriously. Microsoft specifies that there is a performance increase of up to <strong>5-30 times<\/strong>.<\/p>\n<p>Normal tables that we know are called as <strong>Disk Based Table<\/strong>. When you select Disk Based Tables, the data is transferred from disk to cache. Memory Optimized Tables are already stored in memory, so no such process is required.<\/p>\n<p>Memory Optimized Tables uses the same transaction log file as Disk Based Tables. As you know, this file is stored on disk. You may want to read my article &#8220;What is SQL Server Transaction Log&#8221;.<\/p>\n<p>Indexes are always stored in memory. They are automatically rebuild after restart. This increases the recovery time. Therefore, you need to be careful when creating an index. You may want to read the below article for learning more about recovery time.<\/p>\n<p>&#8220;<a href=\"https:\/\/dbtut.com\/index.php\/2018\/05\/28\/what-is-database-checkpoint\/\" target=\"_blank\" rel=\"noopener noreferrer\">What is Database Checkpoint<\/a>&#8221;<\/p>\n<p>Access to Memory Optimized tables is the same as accessing normal tables. The same application can use both memory optimized tables and disk based tables in the same database.<\/p>\n<p>Memory Optimized tables use optimistic concurrency control. You may want to read my article &#8220;<a href=\"https:\/\/dbtut.com\/index.php\/2018\/08\/26\/optimistic-and-pessimistic-concurrency-control\/\" target=\"_blank\" rel=\"noopener noreferrer\">Optimistic and Pessimistic Concurrency Control<\/a>&#8221;<\/p>\n<h2>Is it Safe to Store Data in Memory?<\/h2>\n<p>Storing data in memory does not cause data loss when the server unexpectedly shuts down. Because each committed transaction is written to the transaction log. In addition, some checkpoint files (data and delta files) are stored on the memory optimized filegroup so that the data stored in memory is not lost and the database can be recovered in a healthy way. These data and delta files are generated asynchronously from the transaction log(when checkpoint triggered).<\/p>\n<p>After the data and delta files are generated from the transaction log file, transaction log file will be truncated when checkpoint triggered. If data and delta files are not generated, even if checkpoint is triggered, transaction log will not truncate.<\/p>\n<h2>Data and Delta Files<\/h2>\n<p>All data and the new inserts are stored in the data files.<\/p>\n<p>The pointers of the deleted records are stored in the delta files.<\/p>\n<p>So we store the data in both memory and disk.<\/p>\n<h2>The most important &#8220;In Memory OLTP&#8221; concepts are as follows:<\/h2>\n<ul>\n<li>Memory Optimized Table<\/li>\n<li>Natively Compiled Stored Procedure<\/li>\n<\/ul>\n<p>The best performance in In Memory OLTP is achieved by using natively compiled stored procedures with memory optimized tables. You may want to read my article &#8220;What is Natively Compiled Stored Procedure and How to Use It&#8221;.<\/p>\n<h2>Memory Optimized Tables in SQL Server 2014<\/h2>\n<p>First, let&#8217;s create the memory optimized table and then explain these commands.<\/p>\n<p>In order to create the table, we need to create the memory optimized filegroup with the help of the following script.<\/p>\n<p>After creating the filegroup in the script below, we create at least one file. The files we create in Memory optimized filegroup are also called containers. Microsoft recommends that we create more than one container on different disks for more performance.<\/p>\n<p>I recommend creating at least 4 containers on two disks. Because, SQL Server uses round robin algorithm to write &#8220;data files&#8221; and &#8220;delta files&#8221; to the containers. Thus, first &#8220;data file&#8221; and the first &#8220;delta file&#8221; will be in the first container and second data file and second delta file will be in the second container. Because data files and delta files are properly distributed to containers, performance will be better.<\/p>\n<h3>Add Memory Optimized File Group<\/h3>\n<pre class=\"lang:default decode:true \">ALTER DATABASE [Test]\nADD FILEGROUP [InMemoryFileGroup] CONTAINS MEMORY_OPTIMIZED_DATA\nGO\nALTER DATABASE[Test]\nADD FILE(\nNAME=N'InMemoryFile1',\nFILENAME=N'C:\\MSSQL\\InMemoryFilegroup\\InMem1'\n) TO FILEGROUP [InMemoryFileGroup]\nGO\nALTER DATABASE[Test]\nADD FILE(\nNAME=N'InMemoryFile2',\nFILENAME=N'C:\\MSSQL\\InMemoryFilegroup\\InMem2'\n) TO FILEGROUP [InMemoryFileGroup]\nGO\nALTER DATABASE[Test]\nADD FILE(\nNAME=N'InMemoryFile3',\nFILENAME=N'D:\\MSSQL\\InMemoryFilegroup\\InMem3'\n) TO FILEGROUP [InMemoryFileGroup]\nGO\nALTER DATABASE[Test]\nADD FILE(\nNAME=N'InMemoryFile4',\nFILENAME=N'D:\\MSSQL\\InMemoryFilegroup\\InMem4'\n) TO FILEGROUP [InMemoryFileGroup]\n<\/pre>\n<h3>Create Memory Optimized Table<\/h3>\n<pre class=\"lang:default decode:true \">CREATE TABLE  dbo.MemoryOptimizedTable_Example\n(\nID int NOT NULL\nPRIMARY KEY NONCLUSTERED HASH (ID)  WITH  (BUCKET_COUNT =1024),\n[Name] varchar(250) NOT NULL\nINDEX IDX_Name  HASH ([Name]) WITH  (BUCKET_COUNT =1024)\n) WITH (MEMORY_OPTIMIZED=ON,DURABILITY=SCHEMA_AND_DATA)\n<\/pre>\n<p>You may receive an error as follows when you want to create the table.<\/p>\n<p><span style=\"color: #ff0000;\"><em>Msg 12329, Level 16, State 103, Line 1<\/em><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em>The data types char(n) and varchar(n) using a collation that has a code page other than 1252 are not supported with memory optimized tables.<\/em><\/span><\/p>\n<p>This error is due to the fact that memory optimized tables do not support all collation types.<\/p>\n<p>You can see the collation types supported by the following script.<\/p>\n<pre class=\"lang:default decode:true\">SELECT NAME AS [Collation] ,COLLATIONPROPERTY(NAME, 'codepage') AS [CodePage] \nFROM sys.fn_helpcollations() WHERE COLLATIONPROPERTY(NAME, 'codepage') = 1252\n<\/pre>\n<p>In order to create the table, you can change the collation of the database with the following script.<\/p>\n<pre class=\"lang:default decode:true \">USE master\nGO\nALTER DATABASE Test COLLATE SQL_Latin1_General_CP1_CI_AS\nGO\n<\/pre>\n<p>Or you can create a table with the help of the following script without changing the database collation.<\/p>\n<pre class=\"lang:default decode:true \">CREATE TABLE  dbo.MemoryOptimizedTable_Example\n(\nID int NOT NULL\nPRIMARY KEY NONCLUSTERED HASH (ID)  WITH  (BUCKET_COUNT =1024),\n[Name] varchar(250) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL\nINDEX IDX_Name  HASH ([Name]) WITH  (BUCKET_COUNT =1024)\n) WITH (MEMORY_OPTIMIZED=ON,DURABILITY=SCHEMA_AND_DATA)\n<\/pre>\n<p>Oops. We receive the error again. I could share with you the script that runs directly without receiving these errors, but I wanted you to see these errors too. Now the error we received is as follows.<\/p>\n<p><span style=\"color: #ff0000;\"><em>Msg 12328, Level 16, State 102, Line 1<\/em><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em>Indexes on character columns that do not use a *_BIN2 collation are not supported with indexes on memory optimized tables.<\/em><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em>Msg 1750, Level 16, State 0, Line 1<\/em><\/span><\/p>\n<p><span style=\"color: #ff0000;\"><em>Could not create constraint or index. See previous errors.<\/em><\/span><\/p>\n<p>To create the index for a varchar column, the collation must be BIN2. With the help of the following query, you can list the collations of type BIN2 and choose the one that suits you.<\/p>\n<pre class=\"lang:default decode:true \">SELECT NAME AS [Collation] ,COLLATIONPROPERTY(NAME, 'codepage') AS [CodePage] FROM sys.fn_helpcollations() \nWHERE COLLATIONPROPERTY(NAME, 'codepage') = 1252 and NAME like '%BIN2%'\n<\/pre>\n<p>I am recreating the table with the collation of Latin1_General_BIN2 as follows.<\/p>\n<pre class=\"lang:default decode:true\">CREATE TABLE  dbo.MemoryOptimizedTable_Example\n(\nID int NOT NULL\nPRIMARY KEY NONCLUSTERED HASH (ID)  WITH  (BUCKET_COUNT =1024),\n[Name] varchar(250) COLLATE Latin1_General_BIN2 NOT NULL\nINDEX IDX_Name  HASH ([Name]) WITH  (BUCKET_COUNT =1024)\n) WITH (MEMORY_OPTIMIZED=ON,DURABILITY=SCHEMA_AND_DATA)\n<\/pre>\n<p>This time we were able to create the table without error.<\/p>\n<p>If we examine the script a little, there are a few things that are different.<\/p>\n<h3><span lang=\"en-US\">MEMORY_OPTIMIZED = ON<\/span><\/h3>\n<p><span lang=\"tr\">&nbsp;<\/span><span lang=\"tr\">Indicates that the table is a memory optimized table.<\/span><\/p>\n<h3>HASH INDEX<\/h3>\n<p>Memory optimized tables do not support normal btree index. Each memory optimized table must have at least one index. When Hash Index is created, the data is placed in the cells we specify with bucket_count by passing through the hash algorithm. If you use &#8220;=&#8221; in the where clause of the query, this index type is useful.<\/p>\n<h3>BUCKET_COUNT<\/h3>\n<p>Specifies the number of unique rows in that column when creating the hash index in a column. If you do not specify a correct number for bucket count, the performance decreases and the recovery time of the database is increased. If you can not specify bucket_count, you can use the range index instead.<\/p>\n<h3>RANGE INDEX<\/h3>\n<p>The structure is similar to B-tree indexes and is called as Bw-tree. If you do not specify the index as hash, the range index will be created by default. If you want to query a specific range in a Query, the range index will work more efficiently according to the Hash Index.<\/p>\n<h3>DURABILITY<\/h3>\n<p>It can be SCHEMA_AND_DATA or SCHEMA_ONLY.<\/p>\n<p>If set to SCHEMA_AND_DATA, both the schema structure and the data are retained in the event of an unexpected crash or always on failover.<\/p>\n<p>If set to SCHEMA_ONLY, only the schema structure is retained in the event of an unexpected crash or always on failover. So you lose your data.<\/p>\n<h2>LIMITATIONS<\/h2>\n<p>In Memory OLTP has a number of limitations that you won&#8217;t like very much in SQL Server 2014.<\/p>\n<p>Memory Optimized Tables does not support the following items in SQL Server 2014:<\/p>\n<ul type=\"disc\">\n<li>DML Trigger<\/li>\n<li>XML ve CLR data types.<\/li>\n<li>LOB data types like Varchar(MAX) .<\/li>\n<li>FOREIGN KEY<\/li>\n<li>CHECK Constraint<\/li>\n<li>ALTER TABLE<\/li>\n<li>Creating Index after creating table.(You must re-create the table)<\/li>\n<li>TRUNCATE TABLE<\/li>\n<li>does not suppot more than 8 indexes.<\/li>\n<\/ul>\n<h2>What&#8217;s new with SQL Server 2016 In Memory OLTP?<\/h2>\n<p>You can see the In Memory OLTP differences, between SQL Server 2014 and SQL Server 2016 in the following table.<\/p>\n<div>\n<table class=\"responsive-table\">\n<tbody>\n<tr>\n<td style=\"width: 393.6px;\">&nbsp;<\/td>\n<td style=\"width: 136px;\"><strong>SQL Server 2014<\/strong><\/td>\n<td style=\"width: 211.2px;\"><strong>SQL Server 2016<\/strong><\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Max Table Size<\/td>\n<td style=\"width: 136px;\">256 GB<\/td>\n<td style=\"width: 211.2px;\">No Limit<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Transparent Data Encryption (TDE)<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Nested Natively Compiled Procedure<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Natively-compiled scalar UDF (user defined function)<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">ALTER TABLE, PROCEDURE, INDEX<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported (OFFLINE)<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">AFTER TRIGGER<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported (WITH NATIVE_COMPILATION)<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Index on nullable columns<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Index in non-BIN2 columns<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Foreign Keys<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Check\/Unique Constraints<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Parallelism<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">OUTER JOIN, OR, NOT, UNION [ALL],DISTINCT, EXISTS, IN<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Multiple Active Result Sets (MARS)<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Table Design in SSMS<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">ColumnStore Index in Memory Optimized Tables<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">Varbinary(max), varchar(max), nvarchar(max)<\/td>\n<td style=\"width: 136px;\">Not Supported<\/td>\n<td style=\"width: 211.2px;\">Supported<\/td>\n<\/tr>\n<tr>\n<td style=\"width: 393.6px;\">&#8220;EXECUTE AS OWNER&#8221; Statement is neededin &#8220;Natively Compiled SP&#8221;?<\/td>\n<td style=\"width: 136px;\">Needed<\/td>\n<td style=\"width: 211.2px;\">Not Needed<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>By rebuilding Index, you can modify BUCKET_COUNT as follows.<\/p>\n<pre class=\"lang:default decode:true \">ALTER TABLE dbo.MemoryOptimizedTable_Example\n  ALTER INDEX IDX_ID\n  REBUILD WITH (BUCKET_COUNT = 1042);\n<\/pre>\n<h2>What&#8217;s new with SQL Server 2017 In Memory OLTP?<\/h2>\n<ul type=\"disc\">\n<li>sp_spaceused can be used for memory optimized tables.<\/li>\n<li>sp_rename memory can be used for memory optimized tables and natively compiled stored modules.<\/li>\n<li>CASE support for Natively compiled modules.<\/li>\n<li>Memory optimized tables had 8 index limits. This limit has been removed.<\/li>\n<li>TOP (N) WITH TIES is now supported in Natively compiled modules.<\/li>\n<li>ALTER TABLE operation is now faster in Memory optimized tables.<\/li>\n<li>Transaction Log redo operation is now parallel. This shortened the recovery time.<\/li>\n<li>Memory optimized filegroups can be stored in Azure Blob Storage.<\/li>\n<li>Memory optimized tables support computed column. And we can create index on this computed column.<\/li>\n<li>JSON functions can be used in Natively compiled modules and in CHECK Constraint.<\/li>\n<li>CROSS APPLY operator can be used in Natively compiled modules.<\/li>\n<li>Rebuild operation of nonclustered indexes in memory optimized tables has been optimized. With this improvement, recovery time for databases that has memory optimized table with non clustered index has been shortened.<\/li>\n<\/ul>\n\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_11319\" class=\"pvc_stats all  \" data-element-id=\"11319\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>In this article, we will explain what is In Memory OLTP and how to use this feature in SQL Server 2014 and what is limitations. Then, we&#8217;ll examine how this feature develops with SQL Server 2016 and SQL Server 2017 step by step. What is In Memory OLTP In Memory OLTP is a feature announced &hellip;<\/p>\n<div class=\"pvc_clear\"><\/div>\n<p id=\"pvc_stats_11319\" class=\"pvc_stats all  \" data-element-id=\"11319\" style=\"\"><i class=\"pvc-stats-icon medium\" aria-hidden=\"true\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chart-bar\" role=\"img\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 512 512\" class=\"svg-inline--fa fa-chart-bar fa-w-16 fa-2x\"><path fill=\"currentColor\" d=\"M396.8 352h22.4c6.4 0 12.8-6.4 12.8-12.8V108.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v230.4c0 6.4 6.4 12.8 12.8 12.8zm-192 0h22.4c6.4 0 12.8-6.4 12.8-12.8V140.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v198.4c0 6.4 6.4 12.8 12.8 12.8zm96 0h22.4c6.4 0 12.8-6.4 12.8-12.8V204.8c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v134.4c0 6.4 6.4 12.8 12.8 12.8zM496 400H48V80c0-8.84-7.16-16-16-16H16C7.16 64 0 71.16 0 80v336c0 17.67 14.33 32 32 32h464c8.84 0 16-7.16 16-16v-16c0-8.84-7.16-16-16-16zm-387.2-48h22.4c6.4 0 12.8-6.4 12.8-12.8v-70.4c0-6.4-6.4-12.8-12.8-12.8h-22.4c-6.4 0-12.8 6.4-12.8 12.8v70.4c0 6.4 6.4 12.8 12.8 12.8z\" class=\"\"><\/path><\/svg><\/i> <img loading=\"lazy\" decoding=\"async\" width=\"16\" height=\"16\" alt=\"Loading\" src=\"https:\/\/dbtut.com\/wp-content\/plugins\/page-views-count\/ajax-loader-2x.gif\" border=0 \/><\/p>\n<div class=\"pvc_clear\"><\/div>\n","protected":false},"author":1,"featured_media":11333,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[3],"tags":[3123,3124,3148,3116,3115,3139,3142,3128,3122,3114,3119,3120,3117,3118,3126,3101,3130,3144,3134,3135,3145,3102,3103,3104,3112,3105,3106,3146,3147,3113,3131,3143,3138,3137,3140,3136,3141,3127,3125,3133,3132,3121,3111,3149,3109,3107,3108,3110,3150,3129],"class_list":["post-11319","post","type-post","status-publish","format-standard","has-post-thumbnail","","category-mssql","tag-bucket-count-for-hash-indexes","tag-bucket_count-for-hash-indexes","tag-create-memory-optimized-stored-procedure","tag-detemine-bucket_count","tag-determine-bucket-count","tag-durability-schema_only","tag-features-supported-with-in-memory-oltp-technology","tag-hash-index-sql-example","tag-how-to-determine-bucket_count-for-hash-indexes","tag-how-to-determine-bucket_count-in-memory-oltp","tag-how-to-identify-bucket-count","tag-how-to-identify-bucket_count","tag-how-to-specify-bucket-count","tag-how-to-specify-bucket_count","tag-in-memory-index","tag-in-memory-oltp","tag-in-memory-oltp-achieves-the-best-performance-with","tag-in-memory-oltp-bucket_counts","tag-in-memory-oltp-enhancements-in-sql-server-2016","tag-in-memory-oltp-enhancements-in-sql-server-2017","tag-in-memory-oltp-hash-index","tag-in-memory-oltp-in-sql-server-2014","tag-in-memory-oltp-in-sql-server-2016","tag-in-memory-oltp-in-sql-server-2017","tag-in-memory-oltp-limitations","tag-in-memory-oltp-new-features-in-sql-server-2016","tag-in-memory-oltp-new-features-in-sql-server-2017","tag-in-memory-oltp-range-index","tag-in-memory-oltp-requirements","tag-in-memory-oltp-restrictions","tag-in-memory-oltp-sql-server-2016-example","tag-in-memory-oltp-stored-procedure","tag-sql-server-2014-in-memory-oltp-limitations","tag-sql-server-2016-in-memory-oltp-limitations","tag-sql-server-2016-in-memory-oltp-enhancements","tag-sql-server-2017-in-memory-oltp-limitations","tag-sql-server-2017-in-memory-oltp-enhancements","tag-sql-server-in-memory-table-performance","tag-sql-server-memory-optimized-table","tag-supported-features-of-in-memory-oltp","tag-unsupported-features-of-in-memory-oltp","tag-what-is-bucket-count","tag-what-is-bucket-count-in-memory-oltp","tag-what-is-hash-index-in-memory-oltp","tag-what-is-in-memory-oltp-in-sql-server-2014","tag-what-is-in-memory-oltp-in-sql-server-2016","tag-what-is-in-memory-oltp-in-sql-server-2017","tag-what-is-memory-optimized-table","tag-what-is-range-index-in-memory-oltp","tag-which-index-can-be-scannable-in-parallel-in-memory-optimized-table"],"aioseo_notices":[],"a3_pvc":{"activated":true,"total_views":834,"today_views":0},"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017 - Database Tutorials<\/title>\n<meta name=\"description\" content=\"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017 - Database Tutorials\" \/>\n<meta property=\"og:description\" content=\"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/\" \/>\n<meta property=\"og:site_name\" content=\"Database Tutorials\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-05T10:52:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-04-05T11:18:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png\" \/>\n\t<meta property=\"og:image:width\" content=\"502\" \/>\n\t<meta property=\"og:image:height\" content=\"298\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"dbtut\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"dbtut\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/\"},\"author\":{\"name\":\"dbtut\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/fc047c39e1e53dce28fc4253529ea408\"},\"headline\":\"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017\",\"datePublished\":\"2019-04-05T10:52:03+00:00\",\"dateModified\":\"2019-04-05T11:18:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/\"},\"wordCount\":1636,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png\",\"keywords\":[\"bucket count for hash indexes\",\"bucket_count for hash indexes\",\"create memory optimized stored procedure\",\"detemine bucket_count\",\"determine bucket count\",\"durability = schema_only\",\"features supported with in memory oltp technology\",\"hash index sql example\",\"How to determine BUCKET_COUNT for Hash Indexes\",\"how to determine bucket_count in memory oltp\",\"how to identify bucket count\",\"how to identify bucket_count\",\"how to specify bucket count\",\"how to specify bucket_count\",\"in memory index\",\"in memory oltp\",\"in memory oltp achieves the best performance with\",\"in memory oltp bucket_counts\",\"in memory oltp enhancements in sql server 2016\",\"in memory oltp enhancements in sql server 2017\",\"in memory oltp hash index\",\"in memory oltp in sql server 2014\",\"in memory oltp in sql server 2016\",\"in memory oltp in sql server 2017\",\"in memory oltp limitations\",\"in memory oltp new features in sql server 2016\",\"in memory oltp new features in sql server 2017\",\"in memory oltp range index\",\"in memory oltp requirements\",\"in memory oltp restrictions\",\"in memory oltp sql server 2016 example\",\"in memory oltp stored procedure\",\"sql server 2014 in memory oltp limitations\",\"sql server 2016 in memory oltp limitations\",\"sql server 2016 in-memory oltp enhancements\",\"sql server 2017 in memory oltp limitations\",\"sql server 2017 in-memory oltp enhancements\",\"sql server in memory table performance\",\"sql server memory optimized table\",\"supported features of in memory oltp\",\"unsupported features of in memory oltp\",\"what is bucket count\",\"what is bucket count in memory oltp\",\"what is hash index in memory oltp\",\"What is in memory OLTP in SQL Server 2014?\",\"What is in memory OLTP in SQL Server 2016?\",\"What is in memory OLTP in SQL Server 2017?\",\"What is memory optimized table?\",\"what is range index in memory oltp\",\"Which index can be scannable in parallel in memory optimized table?\"],\"articleSection\":[\"MSSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/\",\"url\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/\",\"name\":\"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017 - Database Tutorials\",\"isPartOf\":{\"@id\":\"https:\/\/dbtut.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png\",\"datePublished\":\"2019-04-05T10:52:03+00:00\",\"dateModified\":\"2019-04-05T11:18:03+00:00\",\"description\":\"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017\",\"breadcrumb\":{\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#primaryimage\",\"url\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png\",\"contentUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png\",\"width\":502,\"height\":298},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/dbtut.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/dbtut.com\/#website\",\"url\":\"https:\/\/dbtut.com\/\",\"name\":\"Database Tutorials\",\"description\":\"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux\",\"publisher\":{\"@id\":\"https:\/\/dbtut.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/dbtut.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/dbtut.com\/#organization\",\"name\":\"dbtut\",\"url\":\"https:\/\/dbtut.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"contentUrl\":\"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg\",\"width\":223,\"height\":36,\"caption\":\"dbtut\"},\"image\":{\"@id\":\"https:\/\/dbtut.com\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/fc047c39e1e53dce28fc4253529ea408\",\"name\":\"dbtut\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/dbtut.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c322c32021bf651d9e103b183963c479a9c9791ead0715f4348203496c39aa54?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c322c32021bf651d9e103b183963c479a9c9791ead0715f4348203496c39aa54?s=96&d=mm&r=g\",\"caption\":\"dbtut\"},\"description\":\"We are a team with over 10 years of database management and BI experience. Our Expertises: Oracle, SQL Server, PostgreSQL, MySQL, MongoDB, Elasticsearch, Kibana, Grafana.\",\"sameAs\":[\"http:\/\/NurullahCAKIR\"],\"url\":\"https:\/\/dbtut.com\/index.php\/author\/dbtut\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017 - Database Tutorials","description":"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/","og_locale":"en_US","og_type":"article","og_title":"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017 - Database Tutorials","og_description":"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017","og_url":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/","og_site_name":"Database Tutorials","article_published_time":"2019-04-05T10:52:03+00:00","article_modified_time":"2019-04-05T11:18:03+00:00","og_image":[{"width":502,"height":298,"url":"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png","type":"image\/png"}],"author":"dbtut","twitter_card":"summary_large_image","twitter_misc":{"Written by":"dbtut","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#article","isPartOf":{"@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/"},"author":{"name":"dbtut","@id":"https:\/\/dbtut.com\/#\/schema\/person\/fc047c39e1e53dce28fc4253529ea408"},"headline":"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017","datePublished":"2019-04-05T10:52:03+00:00","dateModified":"2019-04-05T11:18:03+00:00","mainEntityOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/"},"wordCount":1636,"commentCount":0,"publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"image":{"@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#primaryimage"},"thumbnailUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png","keywords":["bucket count for hash indexes","bucket_count for hash indexes","create memory optimized stored procedure","detemine bucket_count","determine bucket count","durability = schema_only","features supported with in memory oltp technology","hash index sql example","How to determine BUCKET_COUNT for Hash Indexes","how to determine bucket_count in memory oltp","how to identify bucket count","how to identify bucket_count","how to specify bucket count","how to specify bucket_count","in memory index","in memory oltp","in memory oltp achieves the best performance with","in memory oltp bucket_counts","in memory oltp enhancements in sql server 2016","in memory oltp enhancements in sql server 2017","in memory oltp hash index","in memory oltp in sql server 2014","in memory oltp in sql server 2016","in memory oltp in sql server 2017","in memory oltp limitations","in memory oltp new features in sql server 2016","in memory oltp new features in sql server 2017","in memory oltp range index","in memory oltp requirements","in memory oltp restrictions","in memory oltp sql server 2016 example","in memory oltp stored procedure","sql server 2014 in memory oltp limitations","sql server 2016 in memory oltp limitations","sql server 2016 in-memory oltp enhancements","sql server 2017 in memory oltp limitations","sql server 2017 in-memory oltp enhancements","sql server in memory table performance","sql server memory optimized table","supported features of in memory oltp","unsupported features of in memory oltp","what is bucket count","what is bucket count in memory oltp","what is hash index in memory oltp","What is in memory OLTP in SQL Server 2014?","What is in memory OLTP in SQL Server 2016?","What is in memory OLTP in SQL Server 2017?","What is memory optimized table?","what is range index in memory oltp","Which index can be scannable in parallel in memory optimized table?"],"articleSection":["MSSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/","url":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/","name":"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017 - Database Tutorials","isPartOf":{"@id":"https:\/\/dbtut.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#primaryimage"},"image":{"@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#primaryimage"},"thumbnailUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png","datePublished":"2019-04-05T10:52:03+00:00","dateModified":"2019-04-05T11:18:03+00:00","description":"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017","breadcrumb":{"@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#primaryimage","url":"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png","contentUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2019\/04\/Ads\u0131z-13.png","width":502,"height":298},{"@type":"BreadcrumbList","@id":"https:\/\/dbtut.com\/index.php\/2019\/04\/05\/in-memory-oltp-in-sql-server-2014-sql-server-2016-and-sql-server-2017\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dbtut.com\/"},{"@type":"ListItem","position":2,"name":"In Memory OLTP in SQL Server 2014, SQL Server 2016 and SQL Server 2017"}]},{"@type":"WebSite","@id":"https:\/\/dbtut.com\/#website","url":"https:\/\/dbtut.com\/","name":"Database Tutorials","description":"MSSQL, Oracle, PostgreSQL, MySQL, MariaDB, DB2, Sybase, Teradata, Big Data, NOSQL, MongoDB, Couchbase, Cassandra, Windows, Linux","publisher":{"@id":"https:\/\/dbtut.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dbtut.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dbtut.com\/#organization","name":"dbtut","url":"https:\/\/dbtut.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/","url":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","contentUrl":"https:\/\/dbtut.com\/wp-content\/uploads\/2021\/02\/dbtutlogo.jpg","width":223,"height":36,"caption":"dbtut"},"image":{"@id":"https:\/\/dbtut.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/dbtut.com\/#\/schema\/person\/fc047c39e1e53dce28fc4253529ea408","name":"dbtut","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dbtut.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/c322c32021bf651d9e103b183963c479a9c9791ead0715f4348203496c39aa54?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c322c32021bf651d9e103b183963c479a9c9791ead0715f4348203496c39aa54?s=96&d=mm&r=g","caption":"dbtut"},"description":"We are a team with over 10 years of database management and BI experience. Our Expertises: Oracle, SQL Server, PostgreSQL, MySQL, MongoDB, Elasticsearch, Kibana, Grafana.","sameAs":["http:\/\/NurullahCAKIR"],"url":"https:\/\/dbtut.com\/index.php\/author\/dbtut\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/11319","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/comments?post=11319"}],"version-history":[{"count":0,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/posts\/11319\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/media\/11333"}],"wp:attachment":[{"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/media?parent=11319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/categories?post=11319"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dbtut.com\/index.php\/wp-json\/wp\/v2\/tags?post=11319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}