都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

『 SQL Server 2014 Service Pack 2 is now Available !!! ということなので使ってみる 』 の続き、まずは Performance and Scalability Improvements から書いてみる

 前回は少しだけ SQL Server 2014 SP2 について書いてみました。
ryuchan.hatenablog.com

Performance and Scalability Improvements in SQL 2014 SP2

 取り上げてなかったものをさらっとみていきましょう。パフォーマンスとスケーラビリティーの改善についてです。

Automatic Soft NUMA partitioning – With SQL 2014 SP2, Automatic Soft NUMA is introduced when Trace Flag 8079 is enabled at the server level. When Trace Flag 8079 is enabled during startup, SQL Server 2014 SP2 will interrogate the hardware layout and automatically configures Soft NUMA on systems reporting 8 or more CPUs per NUMA node.The automatic soft NUMA behavior is Hyperthread (HT/logical processor) aware. The partitioning and creation of additional nodes scales background processing by increasing the number of listeners, scaling and network and encryption capabilities. It is recommended to first test the performance of workload with Auto-Soft NUMA before it is turned ON in production.

 自動 Soft NUMA についてです。TraceFlag 8079 を有効にすることで実現可能なようです。うーん、ここまで大規模なシステムに生きている間に出会うことはあるんだろうか。製品に適用するには十分な検証が必要ですね。

Dynamic Memory Object Scaling – Dynamically partition memory object based on number of nodes and cores to scale on modern hardware. The goal of dynamic promotion is to automatically partition a thread safe memory object (CMEMTHREAD) if it becomes a bottleneck. Unpartitioned memory objects will be dynamically promoted to be partitioned by node (number of partitions equals number of NUMA nodes) based on the workload and bottleneck, and memory objects partitioned by node can be further promoted to be partitioned by CPU (number of partitions equals number of CPUs). This enhancement eliminates the need of Trace Flag 8048 post SQL 2014 SP2.

 スレッドセーフオブジェクトである CMEMTHREAD の待機を減少させるために、ノード単位に分割させボトルネックを減少させる修正みたいです。Automatic Soft NUMA にも関連するんでしょうか。

Enable >8TB for Buffer Pool – Enabled 128TB Virtual address space for buffer pool usage. This improvement enables SQL Server Buffer Pool to scale beyond 8TB on modern hardware.

 これもまた大規模な話ですね。バッファー プール拡張 を使用した場合はどうなるんでしょう?

SOS_RWLock spinlock Improvement – The SOS_RWLock is a synchronization primitive used in various places throughout the SQL Server code base. As the name implies the code can have multiple shared (readers) or single (writer) ownership. This improvement removes the need for spinlock for SOS_RWLock and instead uses lock-free techniques similar to in-memory OLTP. With this change, many threads can read a data
structure protected by SOS_RWLock in parallel without blocking each other and thereby providing increased scalability. Before this change, the older spinlock implementation allowed only one thread to acquire the SOS_RWLock at a time even to read a data structure.

 内部的な同期オブジェクトによる待機方法をインメモリの似た技術でロックフリーのような仕組みに変更されたようです。今までは、sys.dm_os_spinlock_stats で確認できました。既に SQL Server 2016 には搭載されているようです。下記のサイトで検証内容を確認できます。( 3倍くらいのスループットが出ていることが確認できます。 )
SQL 2016 – It Just Runs Faster: SOS_RWLock Redesign – CSS SQL Server Engineers

Spatial Native Implementation – Significant improvement in spatial query performance which was introduced earlier in SQL 2012 SP3 is now introduced in SQL 2014 SP2 as well through native implementation (KB3107399)

 空間データSpatial Data (SQL Server)に関するパフォーマンスが向上しています。うーん、使ったことないのでいまいちよくわかりません。

九州から東海まで梅雨明けしましたね。来週には関東も梅雨明けするかな。
headlines.yahoo.co.jp

暑い!かき氷!