タグ付けされた質問 「performance」

システムが目的に適合するほど十分に機能するかどうかの評価。通常、パフォーマンスとは、システムが1つの操作または一連の操作を時間の経過とともに完了する速度を指します。

1
大容量メモリ環境でのSQL Server TempDBの動作
この質問を読んで、私が少し前に持っていた質問を思い出しました。 512 GBのRAMを搭載したSQL Serverがあり、メインデータベースは450 GBです。TempDBには非常に多くのアクションがあります(わかりました、「かなり多くのアクション」だと思います-そうでないかもしれません!)。RamDisk Plus Serverのデモ版をインストールし、50GBのRAMドライブを作成し、TempDBを指定しましたが、パフォーマンスの改善はまったく見られませんでした。 TempDBへの書き込みは常にディスクへの実際の物理的な書き込みになりますか、それともWindowsファイルシステムキャッシュのような遅延書き込みのためにSQL ServerによってTempDBの書き込みがキャッシュされますか? このシナリオではラムディスクは無意味ですか? SQL Server 6.5がTempDB-In-Ramをサポートしていたことは知っていますが、それはずっと前に廃止されたようです!

2
innodb_flush_method = O_DIRECTとLVMディスクパーティションのあるext3のO_DSYNCパフォーマンスへの影響
私の実稼働環境の1つでは、RedHatクラスター上で2つのインスタンスが実行されており、1つの実稼働インスタンスがクラスターに関連付けられています。 インスタンス1が占有する24G InnoDBバッファープールと、インスタンス2が占有する12Gの125Gメインメモリがあり、RedHatクラスターに関連付けられていません。データとトランザクションログは両方とも、ext3ファイルシステムのあるLVMディスクパーティションにあります。 パフォーマンスの向上とI / Oスループットの向上のために、に変更innodb_flush_methodすることにしましたO_DIRECT。 MySQLドキュメントを参照して: InnoDBのデータファイルとログファイルがSAN上にある場合、に設定innodb_flush_methodするとO_DIRECT、単純なSELECTステートメントのパフォーマンスが3倍低下することがわかっています。 ハイパフォーマンスMySQL Ver 2および3を参照すると、InnoDB開発者がを使用してバグを発見したと述べていinnodb_flush_method=O_DSYNCます。O_SYNCとO_DSYNCに類似しているfsync()とfdatasync():O_SYNC一方、同期データとメタデータの両方、O_DSYNCのみ同期データ。 それがアドバイスなしで多くの説明のように思えた場合、ここにアドバイスがあります: Unixライクなオペレーティングシステムを使用しており、RAIDコントローラーにバッテリバックアップ式の書き込みキャッシュがある場合は、を使用することをお勧めしますO_DIRECT。そうでない場合は、O_DIRECTアプリケーションに応じて、デフォルトまたはおそらく最適な選択肢のいずれかです。 グーグルで、私はこのベンチマークレポートを得ました:オンO_DSYNC対O_DIRECT ベンチマークレポート: =================== 1B行の複雑なトランザクションテスト、64スレッド * SAN O_DIRECT:読み取り/書き込み要求:31560140(8766.61毎秒) * SAN O_DSYNC:読み取り/書き込み要求:5179457(1438.52毎秒) * SAN fdatasync:読み取り/書き込み要求:9445774(毎秒2623.66) *ローカルディスクO_DIRECT:読み取り/書き込み要求:3258595(毎秒905.06) *ローカルディスクO_DSYNC:読み取り/書き込み要求:3494632(1秒あたり970.65) *ローカルディスクfdatasync:読み取り/書き込み要求:4223757(1秒あたり1173.04。 ただし、O_DIRECTOSレベルのキャッシュを無効にします。ダブルキャッシュを無効にすると、I / Oスループットが向上します。 O_DIRECTよりも一緒に行くのは良いO_DSYNCですか?これら2つのオプションは少しわかりにくいです。特に本番環境でデータ、読み取り/書き込みに影響を与えることなく、I / Oスループットの向上とパフォーマンスの向上を示すオプションはどれですか?あなたの個人的な経験に基づいたより良い提案はありますか? 投稿で Rolando Updateを見ることができました: それでも、これらのパラメーターの両方にわずかな混乱があります。私が使用して生産の設定テンプレートのほとんどを見ることができた場合はO_DIRECT推薦ところ、私は任意のを見ていませんO_DSYNC。 システム MySQL 5.1.51-enterprise-gpl-pro-log Red Hat Enterprise Linux Serverリリース5.5 バッテリーライトバックキャッシュ512MBのRAIDコントローラーを搭載したDELL DRAC バッテリーバックアップユニット(BBU)を搭載したDell …

2
トランザクションログを別のボリュームに配置する[ソリッドステート]?
多くの場合、トランザクションログは別のボリュームに分離されます。私が理解しているように、このプラクティスの理論的根拠は、トランザクションログのデータが順次書き込まれることであり、ハードドライブはランダムではなく、はるかに高速で書き込み操作を実行できることです。これは、ランダムな書き込みとは対照的に、データの連続したブロックを書き込むときにドライブ内の小さな針がはるかに短い距離を移動する必要があるためです。 (素朴な解釈はごめんなさい。私が読んだことを理解しようとしています。) これを念頭に置いて…ソリッドステートドライブには、針やプラッターなどが中を動き回らないことがわかります。データベースとトランザクションログの両方が8つのソリッドステートドライブの単一のRAID 5にある場合、トランザクションログを独自の別のボリュームに移動することには本当に利点がありますか?想定される効率の向上が、針が移動してプラッターが回転する距離を減らす連続書き込みの前提に基づいており、ソリッドステートドライブにこれらの可動部分がない場合、ログを分離すると何が得られますか?

1
DELETEがSELECTよりもはるかに遅いのに、IDでDELETEするのはなぜですか?
私はかなり忙しいInnoDBテーブルを持っています(200,000行、1秒あたり数十のクエリのようなものだと思います)。バグが原因で、(同じ)無効なメールアドレスが含まれる14行を取得し、それらを削除したいと考えました。 私は単純にしようとしたDELETE FROM table WHERE email='invalid address'と、約50秒後に「ロック待ちタイムアウトを超えて」しまいました。行の列にはインデックスが付けられていないため、これは驚くべきことではありません。 しかし、私はそうしSELECT id FROM table WHERE email='invalid address'、それは1.25秒かかりました。実行DELETE FROM table WHERE id in (...)、コピー、貼り付けSELECTの結果から、IDSは、0.02秒を要しました。 何が起こっている?条件付きのDELETEが非常に遅いためタイムアウトする理由を誰かが説明できますか? ありがとう。 編集:リクエストに応じて、テーブル構造といくつかのexplain結果を投稿しました。また、このテーブルを参照する外部キーがないことにも注意してください。 しかし、状況は私には簡単に思えます。私が選択しているインデックスのないフィールドがあります。これにはテーブル全体をスキャンする必要がありますが、それほど大きくありません。idは主キーであるため、IDによる削除は非常に高速です。 mysql> show create table ThreadNotification2 \G *************************** 1. row *************************** Table: ThreadNotification2 Create Table: CREATE TABLE `ThreadNotification2` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `alertId` bigint(20) DEFAULT …

3
ソーシャルネットワーク/ナレッジベースコミュニティ向けのデータベースの提案
夏に始めたい新しいプロジェクトのために、さまざまなデータベースタイプとDBMSを検討しています。 MySQLとpostgreSQLでシステムを構築しましたが、今ではデータベースに関する知識と経験を広げたいと思っています。 私のプロジェクトは一種のソーシャルネットワーク/知識の集合体です。(まだそれを説明する用語を開発していない)。 私が見てきた: Cassandra(独自の種類のクエリ言語を使用); 機能が豊富なコンテンツと高性能なクエリ実行を実現するのに適しているようです。ただし、Java環境を使用する必要があるため、あまり熱心ではありません。Oracleとは何の関係もありません。 MongoDB(noSQLタイプのDBMS); 優れたスケーラビリティ。ただし、ビジネス情報クエリなどの実績のあるSQL言語で既に利用可能なすべての機能を失います。 システムの要件: データテキスト、日付、時刻、xml、小さな整数、ブロブ、 構造/動作:正規化された3NF、非リアルタイム、リレーショナル、スケーラブル、堅牢 環境: unix / linux、JAVAなし、できればCで実行 私が研究すべき他のデータベースシステムを教えてくれないかと思っていました。 Object Relational Databasesも見てきましたが、PHPオブジェクト(PDO)で動作するというアイデアはとても気に入っていますが、パフォーマンスは少し悪いようです。 ここにDBAがいるので、あなたが操作したこれらのシステムに関するフィードバックをいただければ幸いです。 ありがとう

2
一時テーブルとテーブル変数のINSERTパフォーマンスの違い
SQL Server 2005には次の問題があります。いくつかの行をテーブル変数に挿入しようとすると、一時テーブルを使用した同じ挿入に比べて時間がかかります。 これは、テーブル変数に挿入するコードです DECLARE @Data TABLE(...) INSERT INTO @DATA( ... ) SELECT .. FROM ... これは、一時テーブルに挿入するコードです CREATE #Data TABLE(...) INSERT INTO #DATA( ... ) SELECT .. FROM ... DROP TABLE #Data 一時テーブルにはキーもインデックスもありません。選択部分は2つのクエリで同じであり、選択によって返される結果の数は〜10000行です。選択を単独で実行するのに必要な時間は約10秒です。 一時テーブルバージョンの実行には最大10秒かかり、5分後にテーブル変数バージョンを停止する必要がありました。 クエリは一時テーブルへのアクセスを許可しないテーブル値関数の一部であるため、テーブル変数を使用する必要があります。 テーブル変数バージョンの実行計画 一時テーブルバージョンの実行計画

2
ストアドプロシージャのパラメーターが多すぎますか?
SQL Server 2008でストアドプロシージャの記述を始めたばかりで、30以上のパラメーターがあります。10個以上のパラメーターを持つものを書いたことはありません。 コンテキストのために...この手順は、本質的になりますINSERT単一のテーブルに単一の行を。非常によく似たものもあります。やや小さいが; 同じテーブルでUPDATEを実行するバージョン。ほとんどの列は比較的小さく、intと文字列が混在しています(varchar(200))。 問題は何ですか。良いか悪いか; 多数のパラメーターを含む手順を作成すること、および他のパターンの検討を開始するしきい値はどれくらいですか?

2
7億行を同じ値に更新する
データウェアハウス(オラクル)があり、7億行すべてに対して同じ値に列を設定する必要があります。 私は管理者アクセス権も管理者アクセス権も持っていないので、これは基本的なSQLで実現する必要があり、一時テーブルは作成しません。 さらに複雑な問題は、1 = 1の単純な更新を実行しようとすると、REDOスペースが不足することです。 私が今実行している方法は、次のようなループです: loop update mytable set mycolumn = '1' where mycolumn is null and rownum < 50000; commit; end loop しかし、私はこれがおそらく素朴であり、より迅速でよりエレガントなソリューションが必要であることを知っています。

2
SQL Server:大規模ページ割り当てのチューニングオプションを使用した人はいますか?
誰でもを使用するチューニングオプションを使用していTF834 large page allocationsますか。私はそれに関するMS記事を読んでいて、誰かがそれを使ってパフォーマンスの向上を見たのではないかと思っていました。注意すべき点、ヒント、落とし穴はありますか? サーバーは、Windows 2008 64ビット、128 GB RAM、4 CPU 8コアのハイパースレッド(合計64コア)SQL2005サーバーです。現在実行されているデフォルトのSQLインストールを使用するだけでなく、サーバーの仕様をより良く使用するようにサーバーを調整したいと考えています。追加のヒントは歓迎します。

3
クエリパフォーマンスチューニング
クエリ/ストアドプロシージャ/関数の作成が完了したら、パフォーマンスパラメータをすばやく取得する最も有益な方法は何ですか?クエリを実行し、実際の実行計画を表示しますか?もしそうなら、あなたが探しているものは何ですか?明らかにテーブル/インデックススキャンはビットヒットですが、他には何がありますか?

3
インデックスはクエリのパフォーマンスにどのように影響しますか?
明らかに、いくつかの異なるインデックスを保持することは、挿入および削除のパフォーマンスに悪影響を及ぼします。クエリのパフォーマンスはどうですか:テーブルに多くのインデックスを保持するのは理にかなっていますか?インデックスを追加するとクエリのパフォーマンスが向上しますか(もちろん、インデックスを使用するクエリの場合)、取得するためにすべてのインデックスを調べる必要があるため、インデックスが多すぎるとクエリのパフォーマンスが低下する可能性があります結果? テーブルに異なるインデックスがある場合:それらはすべて考慮されるのか、オプティマイザーの観点からのみ最適なのか?Oracleは多次元インデックスを実装していますか?

2
Postgresql 8.3:クエリごとのリソース消費を制限する
私が使用しているPostgreSQLの8.3 + のPostGIS 1.3で地理空間データを格納するためのUbuntu 8.04ハーディ。 この特定のバージョンのPostGISには、buffer()非常に複雑なセグメントで計算するときにバグがあり、マシン全体がスタックするまでクエリがますます多くのメモリを消費します。 私はできるPostgreSQLメカニズムを探しています: 特定のクエリで使用されるメモリ消費(およびおそらく他のリソース)を制限します。 実行時間が特定のしきい値を超えるクエリを自動的に停止します。 何か案は?

2
SQL Server 2008-同じ物理マシンとサーバーインスタンスでのクロスデータベースパフォーマンス
同じ物理マシン上の別のDBを介して選択を実行すると、パフォーマンスが低下しますか?したがって、同じSQL 2008インスタンス内で実行されている同じ物理マシン上に2つのデータベースがあります。 たとえば、SomStoreProc on_this_dbで、the_other_db.dbo.someTableからSELECT someFieldsを実行します。 これまでのところ、私がインターネットで読んだことから、ほとんどの人はNOを示しているようです。

3
Microsoft SQL Server内から古いクエリプランをすべてクリアするにはどうすればよいですか?
Microsoft SQLデータベースを使用する既製のアプリケーションがあります。このアプリケーション内で、各レポートのさまざまな選択基準を選択します。その後、このアプリケーションはこれらのレポートを実行します。 クエリプランに問題があると思います。毎日実行する最初のレポートは、非常に高速で7分実行されます。最初のレポートの後に実行されるレポートは1時間以上かかります。 毎晩、SQL ServerエージェントとSQL Serverを停止および起動するスケジュールされたタスクを実行します。このSQL Serverの1つのインスタンス内には、約25の他のデータベースがあります。他のデータベースにはパフォーマンスの問題はありません。先ほど述べた市販製品のみです。 SQL Serverが現在メモリに保持しているすべてのクエリプランをクリアする方法はありますか? 同じサーバー上の他のデータベースに依存する30人程度のユーザーに影響を与えずにこれを行うにはどうすればよいですか?

1
Google App Engineのポリモデルと通常のBigtableモデルのパフォーマンスへの影響は何ですか?
通常のGoogle App Engineの使用、ポリモデル、または通常の「Bigtable」モデルで最高のパフォーマンスを発揮するものは何ですか? ポリモデルは、事実上、継承追跡を提供する「クラス」と呼ばれる親テーブルに列を作成します。一方、親クラスから継承された通常のBigtableは、親にクエリを実行してすべてのサブタイプクラスのすべての子を検索する機能なしに、新しい別個のデータ構造を作成します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.