如何识别SQL Server中的IO瓶颈

Jun 07, 2016 pm 04:17 PM
server どうやって ボトルネック 識別する

问题: 我们可能经常会遇到SQLServer数据库频繁关闭的情况。在分析了内存和CPU使用情况后,我们需要继续调查根源是否在I/O.我们应该如何识别SQLServer是否有I/O相关的瓶颈? 解决: 当数据页经常从缓冲池中移进移出的时候,I/O子系统就会成为SQLServer性能问

  问题:

  我们可能经常会遇到SQLServer数据库频繁关闭的情况。在分析了内存和CPU使用情况后,我们需要继续调查根源是否在I/O.我们应该如何识别SQLServer是否有I/O相关的瓶颈?

  解决:

  当数据页经常从缓冲池中移进移出的时候,I/O子系统就会成为SQLServer性能问题的关键因素之一。事务日志和tempdb同样也会产生重大的I/O压力。因此,你必须确保你的I/O子系统能按照预期运行。否则你将会成为响应时间增长和频繁超时的受害者。在这篇文章中,将描述如何使用内置工具识别I/O相关瓶颈,并提供一些磁盘配置的方法:

  性能计数器(Performance Monitor):

  可以使用性能计数器来检查I/O子系统的负荷。下面的计数器可用于检查磁盘性能:

  PhysicalDisk Object:Avg.DiskQueue Length:计算从物理磁盘中的平均读和写的请求队列。过高的值代表磁盘操作处于等待状态。当这个值在SQLServer峰值时长期超过2,证明需要注意了。如果有多个硬盘,就需要把这些数值除以2.比如,有4个硬盘,且队列为10,那么平均值就是10/4=2.5,虽然也证明需要关注,但不能使用10这个值。

  Avg.Disk Sec/Read和Avg.Disk Sec/Write:显示从磁盘读或者写入磁盘的平均时间。10ms内是很好的表现,20以下还算能接受。高于此值证明存在问题。

  Physical Disk:%Disk Time:在磁盘忙于读或者写请求的时候持续时间的比率。根据拇指定律,此值应该小于50%.

  Disk Reads/Sec和Disk Writes/Sec计数器显示出在磁盘中读写操作的速率。这两个值应该小于磁盘能力的85%.当超过此值,,磁盘的访问时间将以指数方式增长。

  可以通过以下方式来计算逐渐增长的负载的能力。一种方法是使用SQLIO.你应该找到吞吐量比较稳定,但缓慢增长。

  可以使用以下公式来计算RAID配置:

  Raid 0: I/O per disk = (reads + writes) / number ofdisks

  Raid 1: I/O per disk = [reads + (writes*2)] / 2

  Raid 5: I/O per disk = [reads + (writes*4)] / number of disks

  Raid 10: I/O per disk = [reads + (writes*2)] / number of disks

  比如:对于RAID 1,如果得到下面的计数器:

  Disk Reads/sec = 90

  Disk Writes/sec =75

  根据公式:[reads + (writes*2)] / 2 or [90 + (75*2)] / 2 = 120I/Os每个磁盘。

  动态管理视图(DMVs):

  有很多游泳的DMVs可以用于检查I/O瓶颈:

  当一个页面被用于读或者写访问且页面在缓冲池中不存在或不可用时,会引发一个I/O闩锁等待(I/O latch),它会在PAGEIOLATCH_EX/PAGEIOLATCH_SH(具体根据请求类型而定)。这些等待表明一个I/O瓶颈。可以使用sys.dm_os_wait_stats找到闩锁等待的信息。如果你保存了SQLServer正常运行下的waiting_task_counts和wait_time_ms值,并且于此次的值做对比,可以识别出I/O问题:

  select *

  fromsys.dm_os_wait_stats

  where wait_type like'PAGEIOLATCH%'

  order by wait_typeasc

  挂起的I/O请求可以在下面查询中查到,并且用于识别那个磁盘负责的这个瓶颈:

  select database_id,

  file_id,

  io_stall,

  io_pending_ms_ticks,

  scheduler_address

  from sys.dm_io_virtual_file_stats(NULL, NULL) iovfs,

  sys.dm_io_pending_io_requests as iopior

  where iovfs.file_handle = iopior.io_handle

  磁盘碎片(Disk Fragmentation):

  建议你检查磁盘碎片和配置用于SQLServer实例的磁盘。在NTFS文件系统中的碎片会产生严重的性能影响。磁盘需要经常整理碎片并且指定整理碎片计划。研究表明,一些情况下SAN在整理碎片后性能更差。因此,SAN必须根据实际情况对待。

  NTFS上的索引碎片同样能引起高I/O好用。但是这和在SANs中的效果是不一样的。

  磁盘配置/最佳实践:

  常规情况,你应该把日志文件和数据文件分开存放以获得更好的性能。对于重负载的数据文件(包括tempdb)的I/O特性是随机读取。对于日志文件,是顺序访问的,除非事务需要回滚。

  对于内置磁盘仅仅可以用于数据库日志文件,因为它们对顺序I/O有很好的性能,但是对随机I/O性能低下。

  数据库的数据和日志文件应该放在对应专用的磁盘中。确保良好的性能。建议日志文件放在两个内置磁盘,并配置为RAID 1.数据文件驻留在仅用于给SQLServer访问的SAN系统中,并只被查询和报表控制。特殊访问应该被禁止。

  写缓冲在可能的情况下应该被允许,并保证断电也能使用。

  为了尽可能保证对于OLTP系统的I/O瓶颈影响最小化,不应该把OLAP和OLTP环境混合。并且保证你的代码优化及有合适的索引来避免不必要的I/O.

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Windows サーバーのバックアップをインストール、アンインストール、リセットする方法 Mar 06, 2024 am 10:37 AM

WindowsServerBackup は、WindowsServer オペレーティング システムに付属する機能で、ユーザーが重要なデータとシステム構成を保護し、中小企業、エンタープライズ レベルの企業に完全なバックアップおよび回復ソリューションを提供できるように設計されています。この機能を使用できるのは、Server2022 以降を実行しているユーザーのみです。この記事では、WindowsServerBackup のインストール、アンインストール、またはリセットの方法を説明します。 Windows Server バックアップをリセットする方法 サーバー バックアップで問題が発生したり、バックアップに時間がかかりすぎたり、保存されているファイルにアクセスできない場合は、Windows Server バックアップ設定をリセットすることを検討してください。 Windowsをリセットするには

C++ で音声認識と音声合成を実装するにはどうすればよいですか? C++ で音声認識と音声合成を実装するにはどうすればよいですか? Aug 26, 2023 pm 02:49 PM

C++ で音声認識と音声合成を実装するにはどうすればよいですか?音声認識と音声合成は、今日の人工知能の分野で人気のある研究方向の 1 つであり、多くの応用シナリオで重要な役割を果たしています。この記事では、C++ を使用して Baidu AI オープン プラットフォームに基づいた音声認識および音声合成機能を実装する方法を紹介し、関連するコード例を示します。 1. 音声認識 音声認識は人間の音声をテキストに変換する技術であり、音声アシスタント、スマートホーム、自動運転などの分野で広く利用されています。以下は C++ を使用した音声認識の実装です。

Javaを使用して実装された顔検出および認識テクノロジー Javaを使用して実装された顔検出および認識テクノロジー Jun 18, 2023 am 09:08 AM

人工知能技術の継続的な発展に伴い、顔検出および認識技術は日常生活でますます広く使用されるようになりました。顔検出および認識技術は、顔アクセス制御システム、顔決済システム、顔検索エンジンなど、さまざまな場面で広く使用されています。広く使用されているプログラミング言語である Java は、顔の検出および認識テクノロジを実装することもできます。この記事では、Java を使用して顔検出および認識テクノロジを実装する方法を紹介します。 1. 顔検出技術 顔検出技術とは、画像や動画から顔を検出する技術のことです。 Jで

Win10 はインターネットに接続できない場合の解決策を認識しています Win10 はインターネットに接続できない場合の解決策を認識しています Jul 11, 2023 pm 06:21 PM

win10のパソコンを使っていると、インターネットに接続できない状況に遭遇したことはありませんか?この問題の解決方法がわからない場合は、この記事を見てみましょう。 1. Win+I キーの組み合わせを使用して設定ウィンドウを表示し、クリックして「ネットワークとインターネット」を選択します。 2. 「ネットワークとインターネット」ウィンドウの左側で「イーサネット」をクリックし、右側のウィンドウで「アダプター オプションの変更」をクリックします。 3. [ネットワーク接続] ウィンドウで、[イーサネット] (デスクトップ、モバイル デバイスを適切に扱ってください) を右クリックし、メニューで [無効にする] をクリックします。 4. 無効と表示されたら、イーサネットマウスを右クリックし、有効化コマンドを実行します。イーサネットが有効になると、問題は解決されるはずです。ここでは、Win10 ネットワーク障害プロンプトを使用せずに識別する方法を紹介します。

自動運転における交通標識認識システムについての記事 自動運転における交通標識認識システムについての記事 Apr 12, 2023 pm 12:34 PM

交通標識認識システムとは何ですか?自動車安全システムの交通標識認識システム (英語訳: Traffic Sign Recognition、略して TSR) は、一般的な交通標識 (制限速度、駐車、U ターン、交通標識) を認識するモードと組み合わせた前面カメラを使用します。等。)。この機能は、ドライバーに前方の交通標識を警告し、それに従うことができます。 TSR 機能は、ドライバーが一時停止標識などの交通法規に違反し、不法左折やその他の意図しない交通違反を回避する可能性を減らし、安全性を向上させます。これらのシステムには、検出アルゴリズムを強化し、さまざまな地域の交通標識に適応するための柔軟なソフトウェア プラットフォームが必要です。交通標識認識の原理 交通標識認識はTSとも呼ばれます

Windows Server 2025 プレビュー バージョンがアップデートを歓迎、Microsoft が Insider テスト エクスペリエンスを改善 Windows Server 2025 プレビュー バージョンがアップデートを歓迎、Microsoft が Insider テスト エクスペリエンスを改善 Feb 19, 2024 pm 02:36 PM

Windows Server のビルド 26040 バージョンのリリースに際し、Microsoft は製品の正式名を Windows Server 2025 と発表しました。 Windows11WindowsInsiderCanaryChannel バージョン build26040 もリリースされました。何年も前に、誰かが Windows NT をワークステーション モードからサーバー モードに変換し、Microsoft オペレーティング システムのさまざまなバージョン間の共通点を示したことをまだ覚えている人もいるでしょう。 Microsoft の現在のバージョンのサーバー オペレーティング システムと Windows 11 には明らかな違いがありますが、詳細に注目する人は、なぜ Windows Server がブランドを更新したのか、

Nginx のバージョン名を変更して Web サーバーを偽装する方法 Nginx のバージョン名を変更して Web サーバーを偽装する方法 May 14, 2023 pm 09:19 PM

nginx のデフォルト名を変更する方法、少し偽装することも、インストールすることもできますヒント: 通常、変更は nginx がコンパイルされる前に行われます。変更後、コードは次のように再コンパイルする必要があります: scr/core/nginx.conf#definenginx_version"1.4.7"#definenginx_ver"nginx/"n

Microsoft、Windows Server vNext プレビュー バージョン 25335 をリリース Microsoft、Windows Server vNext プレビュー バージョン 25335 をリリース Jan 10, 2024 am 08:49 AM

Microsoft はデスクトップ向けの Win11 プレビュー アップデートをリリースしましたが、本日、Windows Server 長期サービス チャネル (LTSC) プレビュー ビルド 25335 もリリースしました。いつものように、Microsoft は完全な変更ログを公開しておらず、対応するブログ投稿さえ提供していません。 Microsoft は、Windows Server プレビュー バージョンの更新ログを Canary チャネル バージョンと同じになるように調整しました。新しいコンテンツが導入されない場合、公式ブログ投稿は投稿されません。 IT Home からのメモ: サーバー ブランドは更新されておらず、プレビュー バージョンではまだ Windows Server 2022 です。さらに、Microsoft では、これらのバージョンを、すでに市場に出ている Windows バージョンではなく、Windows Server vNext と呼んでいます。

See all articles