12 倍, 24 倍

12 倍, 24 倍

12 倍, 24 倍 .. インメモリテーブルの処理時間倍率, SQL Server 2014。
インメモリテーブルは、テーブルをメモリへつくる機能。
SQL Server 2014 Enterprise は、インメモリテーブルできる。

 ディスクのテーブルと。

インメモリのテーブルの処理時間と、くらべる.
12 倍 = SCHEMA_AND_DATA設定の インメモリテーブル がはやい.
24 倍 = SCHEMA_ONLY 設定の インメモリテーブル がはやい.

 SCHEMA_AND_DATA,

インメモリのテーブルの DURABILITY 設定
SCHEMA_AND_DATA のインメモリのテーブルは、ディスクへデータを保存する。
SCHEMA_ONLY のインメモリのテーブルは、ディスクへデータを保存しない。

 10,000 トランザクション x 100 同時.

負荷をかけてみる。
サンプルデータベースは、[AdventureWorks2012].
トランザクションは、受注処理.

1,000,000,000 トランザクション時間は、コーヒーをひとくち飲む時間.

40% はやい

40% はやい

40% はやい .. ストアドプロシージャのネイティブコンパイル, SQL Server 2014.
ストアドプロシージャのネイティブコンパイルは、ストアドプロシージャを DLL へ
変える SQL Server 2014 Enterprise の機能.

 40%

insert と update とをインメモリのテーブルへ負荷をかけてみる.
40% ストアドプロシージャをネイティブコンパイルすると、はやくなる.
ネイティブコンパイルの対象テーブルは、インメモリのテーブル.

 WITH NATIVE_COMPILATION

ストアドプロシージャの抜粋..
CREATE PROCEDURE [Sales].[usp_UpdateSalesOrderShipInfo_native]
 @SalesOrderID uniqueidentifier ,
 @ShipDate datetime2,
 @Comment nvarchar(128),
 @Status tinyint,
 @TaxRate smallmoney,
 @Freight money,
 @CarrierTrackingNumber nvarchar(25)
WITH NATIVE_COMPILATION, SCHEMABINDING, EXECUTE AS OWNER
AS
BEGIN ATOMIC WITH
(TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N’us_english’)

 [AdventureWorks2012]

サンプルURL = https://msftdbprodsamples.codeplex.com/releases
サンプル負荷 = aw_inmem_sample_sql_2014_ctp2.zip
対象ストアドプロシージャ:
 usp_InsertSalesOrder
 usp_UpdateSalesOrderShipInfo

テーブルをインメモリへ、ストアドプロシージャをネイティブコンパイルへ.

3 秒 = 6 億件, 列ストアインデックス

3 秒 = 6 億件, 列ストアインデックス

3 秒 = 6 億件, 列ストアインデックス .. をつかって TPC-H クエリー1 が 32論理コアのサーバーにて。
TPC-H は、意思決定支援のデータベース用ベンチマーク.列ストアインデックスは、SQL Server 2014 の意思決定のクエリー用のデータベースインデックス.

 3 秒

は、クエリー1 の処理時間.
6 億 = TPC-H の LINEITEM テーブルのレコード数
2 個 = Intel Xeon E5-2580 2..7GHz
16 個 = CPU 物理コア数
32 個 = CPU 論理コア数
512 GB = メモリサイズ
100 = DBGEN -s の引数
Query 1 = 計測クエリー
SQL Server 2014 Enterprise CTP2 = データベースシステム
Clustered Columnstore Index テーブル = ORDERS, LINEITEM
測定方法: 構文解析とコンパイルの時間 0, 物理読み取り数 0 の時間

 TPC_H Query 1

SELECT
  L_RETURNFLAG,
  L_LINESTATUS,
  SUM(L_QUANTITY) AS SUM_QTY,
  SUM(L_EXTENDEDPRICE) AS SUM_BASE_PRICE,
  SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)) AS SUM_DISC_PRICE,
  SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)*(1+L_TAX)) AS SUM_CHARGE,
  AVG(L_QUANTITY) AS AVG_QTY,
  AVG(L_EXTENDEDPRICE) AS AVG_PRICE,
  AVG(L_DISCOUNT) AS AVG_DISC,
  COUNT(*) AS COUNT_ORDER
FROM LINEITEM
WHERE L_SHIPDATE <= dateadd(dd, -90, cast('1998-12-01' as datetime))
GROUP BY L_RETURNFLAG, L_LINESTATUS
ORDER BY L_RETURNFLAG,L_LINESTATUS

 3 秒 vs. 8 秒

3 秒は、32 個のCPU 論理コアの物理サーバでの処理時間.
8 秒は、12 個のCPU 論理コアの仮想サーバでの処理時間.

SQL Server 2014 Enterprise Edition の列ストアインデックスみてる.

時間半分 .. Delayed Durablity

時間半分 .. Delayed Durablity

時間半分 .. Delayed Durablity をためしてみる. SQL Server 2014 .
Delayed Durability は SQL Server 2014 すべてのエディションで使える新機能.
データベース AdventureWorks2012 をつかって、たしかめてみる

 SQL Server

バージョン: SQL Server 2014 CTP 2
データベース: AdventureWorks2012

 試験手段: ostress

詳細: “SQL Server 2014 CTP2 In-Memory OLTP Sample,based”
https://msftdbprodsamples.codeplex.com/releases
インメモリテーブル機能のテスト方法を、Delayed Durability へつかう.

 test.cmd

set n=10
set order_count=100000
set include_update=1

:DISABLED
ostress -Sserver1 -E -dAdventureWorks2012 -Q”ALTER DATABASE [AdventureWorks2012] SET DELAYED_DURABILITY=DISABLED;Exec Demo.usp_DemoReset;Exec sp_flush_log”
ostress -Sserver1 -E -dAdventureWorks2012 -Q”Exec Demo.usp_DemoInsertSalesOrders @use_inmem=0, @order_count=%order_count%, @include_update=%include_update%” -n%n%
echo ——————-DELAYED_DURABILITY=DISABLED ——————————–

:FORCED
ostress -Sserver1 -E -dAdventureWorks2012 -Q”ALTER DATABASE [AdventureWorks2012] SET DELAYED_DURABILITY=FORCED;Exec Demo.usp_DemoReset;Exec sp_flush_log”
ostress -Sserver1 -E -dAdventureWorks2012 -Q”Exec Demo.usp_DemoInsertSalesOrders @use_inmem=0, @order_count=%order_count%, @include_update=%include_update%” -n%n%
echo ——————-DELAYED_DURABILITY=FORCED ———————————-

「トランザクションの持続性の制御」
http://msdn.microsoft.com/ja-jp/library/dn449490(v=sql.120).aspx

Delayed Durablity をあじわってみてる.

10% 安

10% 安

10% 安 .. 西日本の仮想マシンの料金は、東日本の仮想マシンの料金より.
Windows Azure 仮想マシン Windows OS の料金をリージョン別に比べて.
リージョンとは、Windows Azure 仮想マシンのある地域.
2014/3/6 時点.

 東日本 vs. 西日本 

2.71 円/時 .. 東日本
2.43 円/時 .. 西日本
2.04 円/時 .. アメリカ,北欧,西ヨーロッパ,東南アジア,東アジア

「仮想マシンの料金詳細」
http://www.windowsazure.com/ja-jp/pricing/details/virtual-machines/#windows

8 秒 = 6 億件, 列ストアインデックス

8 秒 = 6 億件, 列ストアインデックス

8 秒 = 6 億件, 列ストアインデックス .. をつかって TPC-H クエリー1 が。
TPC-H は、意思決定支援のデータベース用ベンチマーク.列ストアインデックスは、SQL Server 2014 の意思決定のクエリー用のデータベースインデックス.

 8 秒

は、クエリー処理時間
6 億 = TPC-H の LINEITEM テーブルのレコード数
12 個 = 仮想マシンの仮想CPUコア数
50 GB = 仮想マシンのメモリサイズ
100 = DBGEN -s の引数
Query 1 = 計測クエリー
SQL Server 2014 Enterprise ベータ = データベースシステム
Clustered Columnstore Index = テーブル LINEITEM のインデックス
測定方法: 構文解析とコンパイルの時間 0, 物理読み取り数 0 の時間

 TPC_H Query 1

SELECT
  L_RETURNFLAG,
  L_LINESTATUS,
  SUM(L_QUANTITY) AS SUM_QTY,
  SUM(L_EXTENDEDPRICE) AS SUM_BASE_PRICE,
  SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)) AS SUM_DISC_PRICE,
  SUM(L_EXTENDEDPRICE*(1-L_DISCOUNT)*(1+L_TAX)) AS SUM_CHARGE,
  AVG(L_QUANTITY) AS AVG_QTY,
  AVG(L_EXTENDEDPRICE) AS AVG_PRICE,
  AVG(L_DISCOUNT) AS AVG_DISC,
  COUNT(*) AS COUNT_ORDER
FROM LINEITEM
WHERE L_SHIPDATE <= dateadd(dd, -90, cast('1998-12-01' as datetime))
GROUP BY L_RETURNFLAG, L_LINESTATUS
ORDER BY L_RETURNFLAG,L_LINESTATUS

SQL Server 2014 列ストアインデックスに、わくわくしてる.