SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

直近開催のイベントはこちら!

Data Tech 2022

2022年12月8日(木)10:00~15:50

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けの講座「EnterpriseZine Academy」や、すべてのITパーソンに向けた「新エバンジェリスト養成講座」などの講座を企画しています。EnterpriseZine編集部ならではの切り口・企画・講師セレクトで、明日を担うIT人材の育成をミッションに展開しております。

お申し込み受付中!

ここから始めよう SQL Server 2016 新機能

SQL Server 2016の概要とIn-Memory OLTP の改善点(後編)

 日本マイクロソフト プレミアフィールドエンジニアリング部の平山です。前回の記事では、現行バージョン(SQL Server 2014)での In-Memory OLTP の特徴を再確認し、リリースからおよそ1年が経過した現在の状況を紹介しました。後編となる今回は、現行バージョンの持つ課題がSQL Server 2016 ではどのように改善されるかを解説します。

柔軟さを増した管理運用機能

 SQL Server 2014 のIn-Memory OLTP関連オブジェクトは管理/運用面からみた場合に、必ずしも扱いやすいものではありませんでした。例えば、メモリ最適化テーブルやネイティブ コンパイル ストアドプロシージャは、一度作成すると変更することができません。またメモリ最適化テーブルのデータ型を変更したり列を追加したりする際には、かならず一旦テーブルを削除しなければなりません。さらにはインデックスの再構築もサポートされていません。そのため(言うまでもなく)メンテナンス作業に多くのコストがかかります。例えばメモリ最適化テーブルに列を追加する場合には、次のような作業が必要になります。

  1.  メモリ最適化テーブル内に蓄積したデータを、別のテーブルあるいはデータベース外へ一旦退避
  2.  メモリ最適化テーブルを削除
  3.  スキーマ変更(列を追加)したメモリ最適化テーブルを再度作成
  4.  退避していたデータを、作成し直したメモリ最適化テーブルへ再度ロード

 このような管理運用面の取り扱いの難しさは、当然In-Memory OLTPの導入を検討する際の大きなハードルとなってきました。そこで SQL Server 2016 では次のような改善が取り入れられます。

メモリ最適化テーブル/ネイティブコンパイルストアドプロシージャ定義の変更をサポート

 最大の懸念(といっても過言ではないと思っています)であった、作成済みのメモリ最適化テーブルおよびネイティブ コンパイル ストアドプロシージャの定義に変更を加えることができるようになります。これによってメンテナンス作業時間が削減でき、従来型のディスク テーブルとほぼ同等の管理面での柔軟性を得ることができます。ただし、次の点に注意が必要です。

 メモリ最適化テーブル定義変更時のメモリ使用量

 メモリ最適化テーブルの定義を変更する際には、通常の2倍のメモリを必要とします。そのため、ハードウェアのサイジングの際には、メンテナンス作業時のメモリ使用量も考慮に入れる必要があります。

 ネイティブ コンパイル ストアドプロシージャとメモリ最適化テーブルの依存関係

 ネイティブ コンパイル ストアドプロシージャは作成時にスキーマバインディング属性が必要となります。そのため、ネイティブ コンパイル ストアドプロシージャが参照しているメモリ最適化テーブル(さらにはネスト実行しているネイティブ コンパイル ストアドプロシージャも含みます)の定義の変更ができません。つまり、メモリ最適化テーブルのスキーマ定義変更を行う際には、そのテーブルを参照しているネイティブ コンパイル ストアドプロシージャを削除する必要があります。

インデックスメンテナンス作業をサポート

 非クラスタ化インデックスの再構築や、非クラスタ化ハッシュインデックスのバケット数変更といったメンテナンス作業がサポートされます。これにより、メンテナンス作業毎にテーブルの削除を行う必要がなくなり、ディスクテーブルと同等のメンテナンス負荷でインデックスの管理を行うことができます。また、非クラスタ化インデックスの再構築/非クラスタ化ハッシュインデックスのバケット数変更に関しては、依存関係のあるネイティブ コンパイル ストアドプロシージャを予め削除しておく必要がありません。この点もメンテナンス性を向上させるポイントといえるでしょう。

次のページ
プログラミング機能拡張

この記事は参考になりましたか?

  • Facebook
  • Twitter
  • Pocket
  • note
ここから始めよう SQL Server 2016 新機能連載記事一覧

もっと読む

この記事の著者

平山理(ヒラヤマオサム)

日本マイクロソフト株式会社
プレミアフィールドエンジニアリング
プレミアフィールドエンジニア日本マイクロソフトの Premier Field Engineering 部で、お客様に SQL Server をスムーズにお使いいただくための様々なお手伝いをしています。Sybase (現 SAP) 勤務時代の 5 年間とマイクロソフトでの 12 年間、データベース道を極めるために精進する毎日です。
二人の娘の父親で...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

EnterpriseZine(エンタープライズジン)
https://enterprisezine.jp/article/detail/7187 2015/09/15 06:00

Job Board

PR

おすすめ

アクセスランキング

アクセスランキング

イベント

EnterpriseZine(エンタープライズジン)編集部では、情報システム担当、セキュリティ担当の方々向けに、EnterpriseZine Day、Security Online Day、DataTechという、3つのイベントを開催しております。それぞれ編集部独自の切り口で、業界トレンドや最新事例を網羅。最新の動向を知ることができる場として、好評を得ています。

2022年12月8日(木)10:00~15:50

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング