すっかり忘れていたのですが、SQL Server 2017 CU10 以降で QUERY_OPTIMIZER_COMPATIBILITY_LEVEL_n というヒントが追加されていたことを思い出したのでメモとして。
Read the rest of this entry »
Archive for the ‘SQL Database’ Category
クエリ単位で互換性レベルを変更する
SQL Database の Hyperscale (プレビュー) がデプロイ可能になっています
Ignite 2018 でアナウンスのあった SQL Database の Hyperscale がデプロイ可能になりました。
![]()
使用できるリージョンは Hyperscale service tier available regions で公開されており、東日本も対象となっていました。
ざっと試してみたところ DTU と vCore モデルからの移行はサポートされているようでした。
ただし、当初アナウンスがあったとおり、Hyperscale に変更した後は、他のモデルに戻すことができませんので、そこは気を付けておいたほうが良いかと。
(検証の際は DB のコピーやレプリカを作ってから検証した方が良いです)
SQL Database 向けの CREATE DATABASE / ALTER DATABASE も Hyperscale に対応していますので SQL からも実行可能です。
Ignite 2018 で発表された SQL Database の Hyperscale サービス層の情報
Ignite 2018 で SQL Database の新しいサービス層である Hyperscale が発表されました。
2018/10/1 の Public Preview の開始前にいろいろと情報が公開されていますので、メモとして。
Read the rest of this entry »
Ignite 2018 の SQL Database の Update
SQL Server 2019 だけでなく、Azure の SQL Server ベースについても様々なアナウンスがありました。
SQL Database で実装済みの Intelligent Query Processing について
SQL Server 2017 では、Adaptive Query Processing というクエリ実行の最適化が導入されました。
クエリを再コンパイルすことなく、一部の実行プランの操作を処理対象のデータに適応した形で実行する処理であり、互換性レベル 140 に設定することで、適用される機能となっています。

上記の画像は、ドキュメントから取得したものなのですが、適応対象となる処理は一部のもので、「バッチモード」が対象となっていました。
SQL Server 2017 では、バッチモードで実行されるのは、「列ストアインデックス」が使用される場合となっており、Adaptive Query Processing が適用されるのは、かなり限定的なものとなっていました。
初出は PASS Summit だとおもいますが、これの一歩進んだものが、SQL Database では「Intelligent Query Processing」として、プレビュー機能として提供が行われている、次代の互換性レベルである、互換性レベル「150」で使用することができるようになっています。
Intteligent Query Processin は Adaptive Query Processing を発展させたものであり、従来からの Adaptive Query Processing に加えて、対象が次のように増加しています。
![]()
新たに実装されたのは次の 3 種類となります。
- Approximate Count Distinc
- Row Mode Memory Grant Feedback
- Table Variable Deferred Compilation
7 月の段階で細かな情報が公開されていますが、簡単に動作をまとめて置こうかと。
Read the rest of this entry »
Azure の DMS で SQL Server の主キー無しテーブルのオンライン データ マイグレーションを実行する際の注意点
Azure の Data Migration Service (DMS) では、オンライン データ マイグレーションが実行できるようになり、投稿を書いている時点では、SQL Server から SQL Database への移行と、MySQL から Azure Database for MySQL への移行に対応しています。
- DMS を使用して SQL Server を Azure SQL Database にオンラインで移行する
- DMS を使用して MySQL をオンラインの Azure Database for MySQL に移行する
SQL Server のデータ移行については、「主キーが設定されていないテーブルを CDC (変更データキャプチャ) で移行することができる」という特徴があるのですが、この機能を利用する際の動作について、注意点がありますのでまとめておきたいと思います。
この内容については、SR で確認をしたのですが、DMS の内部的な動作の制限のようで、現状記載がされている箇所がないので、ドキュメントへの反映を検討してくださるとのことでした。
注意点の内容ですが「主キーが設定されていないテーブルを移行する際に、初期データの移行と増分データの移行のタイミングによっては、データが重複されてしまう」という動作についてです。
初期のデータ移行をオフラインで実行できる / 初期同期が高速に行えるデータ量, 処理性能であればたぶん発生しないですが、大量のデータの初期同期や、SQL Database の性能の設定によっては発生する確率は高いかと。
Read the rest of this entry »
SQL Database の アクティブ Geo レプリケーションのデータ同期について
ぺんぺん師匠が Azure SQL DatabaseのGeoレプリケーションのセカンダリへの反映ロジック という記事を書かれていて、この内容についてディスカッションさせていただいたのですが、結構面白かったので、この辺の内容をまとめてみようかと。
Read the rest of this entry »
SQL Database の Database Engine のバージョンを確認する
SQL Database のバージョンを確認する際に「SELECT @@VERSEION」で確認をすることがあるのではないでしょうか。
![]()
Read the rest of this entry »
Azure Database Migration Service で SQL Server のオンラインマイグレーションがプレビューで利用可能になりました
プレビューではありますが、Azure Database Migration Service (DMS) で、SQL Server のオンラインマイグレーションが利用できるようになりました。
アナウンスはこちら。
- Support for SQL Server to Azure SQL Database online migrations
- Announcing Public Preview Availability of Azure SQL Database Online Migration in Azure Database Migration Service
ドキュメントはこちら。
- Migrate SQL Server to Azure SQL Database online using DMS
- Known issues/migration limitations with online migrations to Azure SQL DB
本投稿は、SQL Server → SQL Database へのオンラインマイグレーションですが、この機能のアナウンスがあったタイミングで MySQL についてもオンラインマイグレーションがプレビューで公開されています。
MySQL はこちら。
- Azure Database migration service support for MySQL to Azure Database for MySQL migrations
- Support for MySQL to Azure Database for MySQL online migrations
- Announcing Public Preview Availability of MySQL Online Migration in Azure Database Migration Service
- Online migration from AWS RDS MySQL to Azure Database for MySQL
- Migrate MySQL to Azure Database for MySQL online using DMS
PowerApps から SQL Server / Database への一覧検索のクエリの動作を把握する
PowerApps からは、簡単に SQL Server / SQL Database のデータの一覧を取得することができますが、大量のデータを検索する必要がある場合には、データベースに対して、どのようなクエリが実行されているかを把握しておくことが重要です。
PowerApps では「委任」という考え方があり、データ取得に対しての負荷 (データ/ネットワークアクセス)を最小限にするような仕組みが含まれています。
これらの機能によって、どのようなクエリが SQL Server に対して実行されているか確認してみます。
Read the rest of this entry »