八、IO优化(7)减少IO竞争

Jun 07, 2016 pm 05:39 PM
最適化 減らす 競争する

一、自动增长与自动收缩1.自动增长 默认情况下,数据库文件的大小可以根据需要自动增大。这可以使文件的大小增大到磁盘变满为止。(1)不允许自动增长 如果生产

一、自动增长与自动收缩

1. 自动增长

  默认情况下,数据库文件的大小可以根据需要自动增大。这可以使文件的大小增大到磁盘变满为止。

(1)不允许自动增长

  如果生产环境不允许自动增长操作过程中可能出现的应用程序超时,则应为预期的工作负荷预分配空间。

  如果不允许自动增长,而数据库空间已满,则SQL Server会报错“database full”并拒绝写入新数据。


(2)允许自动增长

  一般建议数据库应设置为自动增长,在出现意外情况时此设置将用于增加数据库文件的磁盘空间。也就是说,自动增长是一道保险,在“database full”的时候自动为数据库增长可用空间。

154315238.png


2. 自动增长的增量设置

  将文件增量设置为合理的大小以避免数据库文件的增量过小。如果文件的增量与写入数据库的数据量相比过小,则数据库可能需要不断扩大。这将影响性能。

  建议为数据库文件设置 FILEGROWTH 增量时遵循以下通用原则。

(1)当数据库文件大小为 0 至 100 MB 时,增量为 10 MB。

(2)当数据库文件大小为 100 至 200 MB 时,增量为 20 MB 。

(3)当数据库文件大小超过 200 MB 时,增量为 10% 。此增量可能必须基于数据库的文件所在的 I/O 子系统的速度调整此百分比。


3. 初始化

  为了避免潜在的闩锁超时,我们建议将自动增长操作限制在大约两分钟之内。例如,,如果 I/O 子系统以每秒 50 MB 的速度初始化文件,则无论数据库文件的大小如何,FILEGROWTH 增量都应设置为最大值 6 GB。

  可以通过即时文件初始化功能提升性能 (v=sql.105).aspx


4. 自动收缩

  SQL Server 不会持续测试达到为自动收缩配置的阈值的数据库。相反,它会寻找可用的数据库并找出第一个配置为自动收缩的数据库。它将检查该数据库,并在需要时收缩该数据库。然后,它会等待几分钟,再检查下一个配置为自动收缩的数据库。

  换句话说,SQL Server 不会同时检查所有数据库,也不会同时收缩所有数据库。它将以循环方式处理各个数据库,以使负载在时间上错开。因此,从数据库达到阈值到实际完成收缩可能需要几个小时,具体取决于特定 SQL Server 实例上配置为自动收缩的数据库数量。

154259354.png


5. 建议

  数据库的自动增长会导致以下问题:

(1)可控的增长

  数据库发生自动增长,通常是写入了大量数据,而这种情形又往往会发生在业务高峰时段。因此,自动增长往往会在业务高峰期拖累数据库的性能。如果该增长量很大,或者有其他因素导致时间延长,则您在其中打开事务的查询可能因超时错误而失败。

  对于受管理的生产系统,您必须将自动增长仅视为偶然的意外增长。请勿使用自动增长管理每天的数据和日志增长。

  建议定期(每周或每月)在非高峰期手动增加数据库的空间。至于需要增加多少空间才合适,应当监测数据库的大小,估算其增长的趋势。


(2)监视可用的磁盘空间

在使用自动增长设置时,增长后的数据库大小不能超出为其定义文件的驱动器上的可用磁盘空间。因此,如果您依赖自动增长功能来决定您的数据库的大小,仍必须另外检查可用的硬盘空间。因此,应当监测磁盘空间的变化,提前预测磁盘空间的使用情况。


(3)禁用自动收缩

  一般不建议自动收缩。

  如果您同时使用自动增长和自动收缩选项,则可能会带来不必要的开销。请确保触发增长和收缩操作的阈值不会造成频繁的大小调整。例如,您可能会运行这样一个事务,它导致事务日志在提交时增长 100 MB。在自动收缩启动后的一段时间内,事务日志收缩 100 MB。然后,您又运行相同的事务,并导致事务日志再次增长 100 MB。在该示例中,您造成了不必要的开销,并且可能会产生日志文件碎片,两者都可能对性能造成负面影响。



二、文件分布

  在SQL Server中,主要会有以下内容发生磁盘I/O竞争。建议将这些文件分别放在不同的物理磁盘中。

(1)用户数据库的数据文件(mdf和ndf文件)

(2)用户数据库的事务日志文件(ldf文件)

(3)tempdb数据库的数据文件和日志文件

(4)备份时产生的bak和trn文件。

(5)Windows系统的事件、分页文件。



三、磁盘子系统

1. 阵列卡

  通常磁盘使用以下几种RAID(Redundant Array of Independent Disk,独立冗余磁盘阵列)。

(1)RAID 0

  即Data Stripping(数据分条技术)。整个逻辑盘的数据是被分条(stripped)分布在多个物理磁盘上,可以并行读/写,提供最快的速度,但没有冗余能力。要求至少两个磁盘。

  通过RAID 0可以获得更大的单个逻辑盘的容量,且通过对多个磁盘的同时读取获得更高的存取速度。RAID 0首先考虑的是磁盘的速度和容量,忽略了安全,只要其中一个磁盘出了问题,那么整个阵列的数据都会不保了。


(2)RAID 1

  即镜像(Mirror)方式,也就是数据的冗余。在整个镜像过程中,只有一半的磁盘容量是有效的(另一半磁盘容量用来存放同样的数据)。同RAID 0相比,RAID 1首先考虑的是安全性,容量减半、速度不变。


(3)RAID 5

  RAID 5的工作方式是将各个磁盘生成的数据校验切成块,分别存放到组成阵列的各个磁盘中去,这样就缓解了校验数据存放时所产生的瓶颈问题,但是分割数据及控制存放都要付出速度上的代价。意味着RAID 5在数据写入时会变慢。


(4)RAID 10

  为了达到既高速又安全,出现了RAID 10(或者叫RAID 0+1),可以把RAID 10简单地理解成由多个磁盘组成的RAID 0阵列再进行镜像。这种搭配,使得读取和写入的速度都非常快。但是容量减半。


2. 建议

(1)tempdb

  tempdb 数据库性能要求非常高,但对数据安全性要求低。建议将 tempdb 数据库放置在快速 I/O 子系统中。如果有许多直接连接的磁盘,请使用RAID 0 。


(2)数据文件(mdf和ndf文件)

  这类文件即要求性能,又要求安全性。建议RAID 10。如果硬件预算非常紧张,RAID 5也凑合吧。


(3)事务日志文件(ldf文件)

  事务日志文件的特性是连续的顺序写入,因此对性能要求不高,仅要求安全性。建议RAID 1。



本文结语:

  尽量避开各种磁盘I/O的竞争,避免不必要的性能开销。


本文出自 “我们一起追过的MSSQL” 博客,转载请与作者联系!

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

詳細な解釈: なぜ Laravel はカタツムリのように遅いのでしょうか? 詳細な解釈: なぜ Laravel はカタツムリのように遅いのでしょうか? Mar 07, 2024 am 09:54 AM

Laravel は人気のある PHP 開発フレームワークですが、カタツムリのように遅いと批判されることがあります。 Laravel の速度が満足できない原因は一体何でしょうか?この記事では、Laravel がカタツムリのように遅い理由をさまざまな側面から詳細に説明し、読者がこの問題をより深く理解できるように、具体的なコード例と組み合わせて説明します。 1. ORM クエリのパフォーマンスの問題 Laravel では、ORM (オブジェクト リレーショナル マッピング) は非常に強力な機能です。

新しい Win11 コンピューターを受け取った後に設定を最適化し、パフォーマンスを向上させるにはどうすればよいですか? 新しい Win11 コンピューターを受け取った後に設定を最適化し、パフォーマンスを向上させるにはどうすればよいですか? Mar 03, 2024 pm 09:01 PM

新しいコンピュータを受け取った後、パフォーマンスをセットアップして最適化するにはどうすればよいですか? ユーザーは、[プライバシーとセキュリティ] を直接開き、[全般] (広告 ID、ローカル コンテンツ、アプリケーションの起動、推奨事項の設定、生産性向上ツール) をクリックするか、ローカル グループ ポリシーを直接開くことができます。新しい Win11 パソコンを受け取った後に、設定を最適化し、パフォーマンスを向上させる方法について詳しくご紹介します。 新しい Win11 パソコンを受け取った後に、設定を最適化し、パフォーマンスを向上させる方法について詳しくご紹介します。 1 つ: 1. [Win+i] ボタンを押します。 ] キーの組み合わせを押して設定を開き、左側の [プライバシーとセキュリティ] をクリックし、[右側のツールの Windows アクセス許可の下の一般 (広告 ID、ローカル コンテンツ、アプリの起動、設定の提案、生産性)] をクリックします。方法 2

Golang の GC 最適化戦略に関するディスカッション Golang の GC 最適化戦略に関するディスカッション Mar 06, 2024 pm 02:39 PM

Golang のガベージ コレクション (GC) は、開発者の間で常に話題になっています。高速プログラミング言語として、Golang の組み込みガベージ コレクターはメモリを適切に管理できますが、プログラムのサイズが大きくなるにつれて、パフォーマンスの問題が発生することがあります。この記事では、Golang の GC 最適化戦略を検討し、いくつかの具体的なコード例を示します。 Golang のガベージ コレクション Golang のガベージ コレクターは同時マークスイープ (concurrentmark-s) に基づいています。

C++ プログラムの最適化: 時間の複雑さを軽減する手法 C++ プログラムの最適化: 時間の複雑さを軽減する手法 Jun 01, 2024 am 11:19 AM

時間計算量は、入力のサイズに対するアルゴリズムの実行時間を測定します。 C++ プログラムの時間の複雑さを軽減するためのヒントには、適切なコンテナー (ベクター、リストなど) を選択して、データのストレージと管理を最適化することが含まれます。クイックソートなどの効率的なアルゴリズムを利用して計算時間を短縮します。複数の操作を排除して二重カウントを削減します。条件分岐を使用して、不必要な計算を回避します。二分探索などのより高速なアルゴリズムを使用して線形探索を最適化します。

Laravelのパフォーマンスボトルネックを解読:最適化テクニックを完全公開! Laravelのパフォーマンスボトルネックを解読:最適化テクニックを完全公開! Mar 06, 2024 pm 02:33 PM

Laravelのパフォーマンスボトルネックを解読:最適化テクニックを完全公開! Laravel は人気のある PHP フレームワークとして、開発者に豊富な機能と便利な開発エクスペリエンスを提供します。ただし、プロジェクトのサイズが大きくなり、訪問数が増加すると、パフォーマンスのボトルネックという課題に直面する可能性があります。この記事では、開発者が潜在的なパフォーマンスの問題を発見して解決できるように、Laravel のパフォーマンス最適化テクニックについて詳しく説明します。 1. Eloquent の遅延読み込みを使用したデータベース クエリの最適化 Eloquent を使用してデータベースにクエリを実行する場合は、次のことを避けてください。

Laravel パフォーマンスのボトルネックが明らかに: 最適化ソリューションが明らかに! Laravel パフォーマンスのボトルネックが明らかに: 最適化ソリューションが明らかに! Mar 07, 2024 pm 01:30 PM

Laravel パフォーマンスのボトルネックが明らかに: 最適化ソリューションが明らかに!インターネット技術の発展に伴い、Web サイトやアプリケーションのパフォーマンスの最適化がますます重要になってきています。人気の PHP フレームワークである Laravel は、開発プロセス中にパフォーマンスのボトルネックに直面する可能性があります。この記事では、Laravel アプリケーションが遭遇する可能性のあるパフォーマンスの問題を調査し、開発者がこれらの問題をより適切に解決できるように、いくつかの最適化ソリューションと具体的なコード例を提供します。 1. データベース クエリの最適化 データベース クエリは、Web アプリケーションにおける一般的なパフォーマンスのボトルネックの 1 つです。存在する

WIN7システムのスタートアップ項目を最適化する方法 WIN7システムのスタートアップ項目を最適化する方法 Mar 26, 2024 pm 06:20 PM

1. デスクトップでキーの組み合わせ (win キー + R) を押してファイル名を指定して実行ウィンドウを開き、[regedit] と入力して Enter キーを押して確定します。 2. レジストリ エディターを開いた後、[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorer] をクリックして展開し、ディレクトリに Serialize 項目があるかどうかを確認します。ない場合は、エクスプローラーを右クリックして新しい項目を作成し、Serialize という名前を付けます。 3. 次に、「シリアル化」をクリックし、右側のペインの空白スペースを右クリックして、新しい DWORD (32) ビット値を作成し、「Star」という名前を付けます。

Vivox100s のパラメーター構成が明らかに: プロセッサーのパフォーマンスを最適化するには? Vivox100s のパラメーター構成が明らかに: プロセッサーのパフォーマンスを最適化するには? Mar 24, 2024 am 10:27 AM

Vivox100s のパラメーター構成が明らかに: プロセッサーのパフォーマンスを最適化するには?テクノロジーが急速に発展する今日、スマートフォンは私たちの日常生活に欠かせないものとなっています。スマートフォンの重要な部分であるプロセッサのパフォーマンスの最適化は、携帯電話のユーザー エクスペリエンスに直接関係します。注目度の高いスマートフォンとして、Vivox100s のパラメータ構成は多くの注目を集めており、特にプロセッサー性能の最適化はユーザーからの注目を集めています。プロセッサは携帯電話の「頭脳」として、携帯電話の動作速度に直接影響します。

See all articles