サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
ノーベル賞
qiita.com/maaaaaaaa
SQLServer: 動的管理ビュー(DMV)を使ってみよう / DMVを使ったパフォーマンス評価とトラブルシューティングSQLSQLServerトラブルシューティングチューニングパフォーマンス計測 1. 動的管理ビューとは ・サーバーの状態情報が格納されたViewのこと。沢山種類がある ・動的管理ビュー(Dynamic Management View: DMV) と、動的管理関数(Dynamic Management Function: DMF) の2種類がある ・スコープはサーバースコープ(=どのDBでSELECTを実行しても結果が同じ)と、データベーススコープ(=各DBによってSELECTの実行結果が変わる)の二種類 ・サーバースコープのDMVのSELECTにはVIEW SERVER STATE権限が、データベーススコープにはVIEW DATABASE STATE権限がそれぞれ必要(
公式ドキュメントだと文字だけの情報なので、図解することで分かりやすく理解してもらえるように説明してみました。 わかり辛かったらすみません! SQL Serverのロックとは DB上でデータを操作(SELECT/INSERT/UPDATE/DELETE等)する際、データの整合性を保つために使われる排他制御の仕組み。 例えば、「1つのレコードを一度に更新できるのは、1つのクエリだけ」といったルールを実現してくれる。 RDBMSのトランザクションのプロパティ「ACID」のうち、主にI(Isolation)を満たすための仕組みです。 SQL Serverのロックを理解するための3つのポイント 1.ロックには複数の粒度(階層とも呼ばれる)が存在する 2.ロックには複数の種類が存在する(ロックモード) 3.各ロックモード間には「互換性」という関係性がある 以降で順を追って説明する。 なぜロックについて
僕はDB未経験でサーバーサイドのエンジニアになりました。 SELECT文を覚えるところから始まりましたが、今では(保守/運用側ではなく)開発者側としてのDBの知識と技術は少しは身についたと思っています そこで、未経験の状態から現在に至るまでに読んだ書籍を時系列順に紹介したいと思います。 僕のように未経験でスタートした方の参考になれば幸いです。 尚、自分の環境はSQLServerですが、最後に紹介するのマイクロソフトのドキュメント以外は、ベンダに関係なく勉強になる内容だと思います。 本当に未経験時に最初に読んだ本 ■ SQL 第2版 ゼロからはじめるデータベース操作 https://amzn.to/2MOO1E0 内容紹介(amazonより抜粋) プログラミング学習シリーズ『SQL ゼロからはじめるデータベース操作』は、「データベースやSQLがはじめて」という初心者を対象に、プロのデータベー
CPU負荷をかけているクエリを手っ取り早く探すにはDMV(動的管理ビュー)を使うのが一つの手ですが、「まさに今、高負荷をかけている原因となっている機能は何か?」を探すときに使っている手法を紹介します。 ちなみにDMVだと↓みたいな感じ --ORDER BY を変えればいろいろな順番でデータ取得できる SELECT TOP 1000 [Average CPU used] = total_worker_time / qs.execution_count ,[Total CPU used] = total_worker_time ,[Execution count] = qs.execution_count ,[Individual Query] = SUBSTRING (qt.text,qs.statement_start_offset/2, (CASE WHEN qs.statement_e
※検証にはSQLServerを使用しています。 プロダクション環境で1分ほどかかってしまうクエリを実行する機能があったため、1秒程度までチューニングしたときのお話です。 該当のSQLは、20個ほどのテーブルをJOINして結果をSELECTする複雑なSQLでした。 クエリの中にはサブクエリのJOINも含まれており、調査の結果このサブクエリがボトルネックになっているようでした。 実行プランをみると、IndexScanの実際の行数が2億オーバーです。該当テーブルは本当は50万レコードくらいしかないので、最初はバグかな?と思いました。 統計情報は更新されているし、option(recompile)をつけて実行しても同じ実行プランで実行されてしまいます。 --問題のSQL概要(ざっくりしててすみません。。) SELECT いろんなカラム FROM いろんなテーブル -- ↓ ここがボトルネック JO
システムが突然遅くなる、特定の機能が突然遅くなった、いつまでたっても実行中のクエリが完了しない、などのトラブルの原因調査をリアルタイムで行うのに使えるクエリと、それらを組み合わせてトラブルシュートする一例を紹介します。 動的管理ビュー(DMV)を使用します。 1. 現在実行中のクエリ一覧を取得する SELECT TOP 100 der.session_id as spid ,der.blocking_session_id as blk_spid ,datediff(s, der.start_time, GETDATE()) as elapsed_sec ,DB_NAME(der.database_id) AS db_name ,des.host_name ,des.program_name ,der.status -- Status of the request. (background
動的管理ビューって便利そうだけど、沢山種類があるしカラムの意味を調べるのも結構大変ですよね。 動的管理ビューの概要はこちら https://msdn.microsoft.com/ja-jp/library/ms188754(v=sql.120).aspx 動的管理ビューと動的管理関数では、サーバーの状態情報が返されます。返された情報は、サーバー インスタンスのヘルス状態の監視、問題の診断、パフォーマンスのチューニングに使用できます。 ということで、上手く使えばいろんな情報がサクッと取得できて嬉しいです。「○○するためのDMVを使ったSQL文」っていうまとまりで把握できてると便利だと思うので、僕がよく使っているクエリを紹介します。 そもそも自分の権限で動的管理ビューをSELECTできるかをチェック 動的管理ビューのSELECTには、VIEW SERVER STATE権限が必要なもの、VIEW
このページを最初にブックマークしてみませんか?
『@maaaaaaaaのマイページ - Qiita』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く