SQL Server の負荷かけツール (ストレステスト) についてメモを。
あと、えろす師匠 と 錦の鬼 っていうイメージ戦略をしろって 縄神様 に言われていた気がするので頑張りたいと思います。
# トップダウンアプローチで仕方なくイメージ戦略しているんです…。
SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿
先日、RDS の SQL Server で Multi-AZ の機能がサポートされました。
【AWS発表】Amazon RDS for SQL ServerでもMulti-AZ機能を利用可能に
Amazon RDS for Microsoft SQL Server
Multi-AZ 配置
構築方法などは、【速報】Amazon RDS for SQL ServerがMulti-AZをサポートしたのでやってみた が参考になります。
どのような仕組みで実装されているのかが気になったので試してみました。
最近のハードウェアはディスク性能が向上して、ディスク I/O がネックになることも少なくなってきたかと思います。
ディスクが高速になることで大量のデータを短時間で読み取れるようになりましたが、その分負荷が CPU に表れてくることになったかと。
簡単にではありますがこの辺のデータをとってみたいと思います。
最近、実行プランを見ていて気づいたのですが、SQL Server 2012 以降では実行プランに [NonParallelPlanReason] という情報が増えていたようです。
詳細については、SQL Server 2012 Execution Plan’s NonParallelPlanReason が参考になります。
PowerShell から SQL Server に SQL を実行する場合、データベース エンジン PowerShell を使用することがあるかと思います。
ほかにも System.Data.SqlClient を使用した方法 (Windows PowerShell: Windows PowerShell からデータベースにアクセスする) や、SQLSMO を使用した方法 (Using PowerShell with SQL Server Management Objects (SMO)) もあります。
今回は、データベースエンジン PowerShell の Invoke-Sqlcmd を sqlcmd.exe に置き換えた際のメモを。
以下の情報を参考にさせていただいています。
SQL2005のSQLCMDオプションについて質問
Passing varibles with special characters and or embedded spaces in powershell 2.0 with SQL Server
How to stop the “Changed database context to …” message
PowerShell や SQLSMO を使用したスクリプトを作成すればよいと思うのですが古い環境などでもどうさせる必要があったので、SQLCMD で実行する方法を。
とはいってもバッチ用実行用のコマンドラインを生成しているだけですが。
以前、SQL Server 2014 のデータベースのファイルを BLOB に配置する構成について という投稿をしました。
この投稿ではデータベースを作成するパターンで記載したのですが、BLOB ストレージへの配置はデータベースのデタッチ/アタッチ方式でも使用することができます。
今回の投稿ではこの方法をまとめてみたいと思います。
技術情報については レッスン 6: 内部設置型のソース コンピューターから Windows Azure のターゲット コンピューターにデータベースを移行する が参考になります。
SQL Server 2014 では管理対象バックアップ (マネージバックアップ) という機能が追加されています。
SQL Server 2012 SP1 CU2 以降では、BLOB ストレージへバックアップを取得することが可能となりました。
SQL Server 2014 ではこの機能が強化され、GUI やメンテナンスプランから設定が可能となりましたが、それに加えて管理対象バックアップという機能が追加されました。
# 以前は Smart Admin Backup といわれていたような。
SQL Server の待ち事象は sys.dm_os_wait_stats / sys.dm_os_latch_stats というような動的管理ビューを利用して確認することができます。
パフォーマンスモニターの SQL Server: Wait Statistics からも確認をすることができますが、こちらは一部の項目しか取得することができません。
一時テーブルや PowerShell 等を使用すれば定期的に DMV の情報を出力するということもできますが、環境に依存せずに SSMS だけで実行するための方法をまとめてみたいと思います。
案件として、SQL Server の診断を実施させていただくことがあるのですが、その際にはパフォーマンスモニターの情報を取得して解析することがあります。
詳細については DELL (もともとは Quest の資料) が公開している SQL Server Perfmon Counters Poster が参考になりますが、私が取得している情報をメモとして。