Files
sql-server-samples/samples/features/sql2019notebooks/OneTrillionRowsWarm.ipynb
T
Amit Banerjee b5a0bd6828 Add files via upload
Uploading notebooks which shows the output of SQL Server 2019 executing against a trillion rows.
2019-11-04 09:09:31 -05:00

1.1 MiB

Blazing fast performance on 1 Trillion Rows

Environment Details
SQL Server 2019
Windows Server 2016
8-Socket (224 cores, 12TB RAM and 200TB+ SSD storage) Lenovo Server (ThinkSystem SR950) using Intel Cascade Lake processors

This query runs a TPC-H query on a table with 1 trillion rows.

In [1]:
select 
    SERVERPROPERTY('Edition') as Edition, 
    SERVERPROPERTY('ProductVersion') as ProductVersion, 
    (physical_memory_kb/(1024*1024)) as [Physical Memory (GB)], 
    cpu_count as [CPU Count], cores_per_socket [Cores Per Socket], 
    numa_node_count as [Numa Node Count], 
    socket_count [Socket Count] 
from sys.dm_os_sys_info
Out [1]:
(1 row affected)
Total execution time: 00:00:00.010
EditionProductVersionPhysical Memory (GB)CPU CountCores Per SocketNuma Node CountSocket Count
Enterprise Edition (64-bit)15.0.1800.32122874482888

Query Execution (Warm Cache)

Executing the query against a trillion rows

In [3]:
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_BIG(*)					AS COUNT_ORDER
FROM	LINEITEM
WHERE	L_SHIPDATE	<= dateadd(dd, -84, cast('1998-12-01'as date))
GROUP	BY	L_RETURNFLAG,
		L_LINESTATUS
ORDER	BY	L_RETURNFLAG,
		L_LINESTATUS
Out [3]:
(4 rows affected)
Total execution time: 00:01:49.055
L_RETURNFLAGL_LINESTATUSSUM_QTYSUM_BASE_PRICESUM_DISC_PRICESUM_CHARGEAVG_QTYAVG_PRICEAVG_DISCCOUNT_ORDER
AF6607498422967.009907944790073789.019412534887542805.50299789033542413688.46030625.49984938237.0273840.050001259119117459
NF172490750754.00258648998956769.81245716194671224.9925255546008060751.85184225.50034938237.6436500.0500046764250468
NO13059206961084.0019582291240784926.2618603181042211704.562119347316948124666.96312525.50004938237.3449440.049999512124763608
RF6607437171988.009907852600116816.389412459553931927.48689788956809985580.06099725.49986938237.0562710.049999259116510688

Execution statistics

Table 'LINEITEM'. Scan count 789, logical reads 3530482, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 706634933, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.

Table 'LINEITEM'. Segment reads 1504451, segment skipped 0.

Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, page server reads 0, read-ahead reads 0, page server read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob page server reads 0, lob read-ahead reads 0, lob page server read-ahead reads 0.

Read Throughput for LOB logical reads: 49Gb/sec

Rows processed per second: 9,633,026,529 rows/sec (Over 9 billion rows per second)

Task Manager screenshot while query is being executed

In [2]:
from IPython.display import Image
Image(filename="OneTrillionRowsTaskManager.png")
Out [2]:

Table Details

LINEITEM

RAW DATA: ~146 TB

COMPRESSED DATA SIZE: ~54 TB

ROWS: 1,049,999,891,699

In [4]:
from IPython.display import Image
Image(filename="TableStorage.png")
Out [4]: