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

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

4
InnoDB DELETEのパフォーマンスを向上させる方法は?
だから私はこの監査テーブルを持っています(私のデータベース内の任意のテーブルでのアクションを追跡します): CREATE TABLE `track_table` ( `id` int(16) unsigned NOT NULL, `userID` smallint(16) unsigned NOT NULL, `tableName` varchar(255) NOT NULL DEFAULT '', `tupleID` int(16) unsigned NOT NULL, `date_insert` datetime NOT NULL, `action` char(12) NOT NULL DEFAULT '', `className` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `userID` (`userID`), KEY `tableID` (`tableName`,`tupleID`,`date_insert`), KEY …

2
Google App Engineで、最も効果的な多対多の結合モデルは何ですか?
BigTableのデザインは、明示的に小さなテーブルの大きなホストへの非正規化を好む、標準のリレーショナルモデルの哲学の多くを拒否します。 これが問題となる大きな領域の1つは、多対多の結合のモデリングです。 これらの結合をモデル化する1つの方法は、最初の正規形に違反し、すべての興味深いデータをdb.ListProperty()に置くことです。これはクエリから検索可能ですが、リストの検索と別のテーブルのプルのパフォーマンスへの影響についてはまだ調べていません。 結合はできないため、RelationshipPropertiesを介してテーブルをリンクすることができます。したがって、十分な労力をかけて、標準の交差テーブル(両方の親テーブルを参照する結合主キーを持つテーブル)を作成できます。さまざまな実装のパフォーマンスへの影響を調査した人はいますか? -編集- ドキュメントで提案されているキーのリストは確かにそれを行う1つの方法ですが、私はそのパフォーマンスと他の実装の異常率に興味があります。キーの相互リストを作成するのにユーティリティはありますか?繰り返しに伴う努力はその代価に見合うものですか?それを行うより良い方法はありますか?

2
非常に類似したクエリ、大幅に異なるパフォーマンス
2つの非常によく似たクエリがあります 最初のクエリ: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON a.Id = ari.AuditId WHERE ari.RelatedId = '1DD87CF1-286B-409A-8C60-3FFEC394FDB1' and a.TargetTypeId IN (1,2,3,4,5,6,7,8,9, 11,12,13,14,15,16,17,18,19, 21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39, 41,42,43,44,45,46,47,48,49, 51,52,53,54,55,56,57,58,59, 61,62,63,64,65,66,67,68,69, 71,72,73,74,75,76,77,78,79) 結果:267479 計画:https : //www.brentozar.com/pastetheplan/?id=BJWTtILyS 2番目のクエリ: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON a.Id = ari.AuditId WHERE ari.RelatedId = '1DD87CF1-286B-409A-8C60-3FFEC394FDB1' …

1
関数のボラティリティを宣言して、パフォーマンスに悪影響を与えることはできますか?
Postgresの機能を使用して宣言されている揮発性の分類VOLATILE、STABLEまたはIMMUTABLE。プロジェクトは、組み込み関数のこれらのラベルで非常に厳しいことが知られています。そして正当な理由があります。顕著な例:式のインデックスはIMMUTABLE関数のみを許可し、誤った結果を回避するためにそれらは真に不変でなければなりません。 ユーザー定義関数は、所有者の選択に従って自由に宣言できます。マニュアルは助言します: 最適化の最良の結果を得るには、関数に有効な最も厳密なボラティリティカテゴリで関数にラベルを付けてください。 ...そして、不適切なボラティリティラベルで問題が発生する可能性のあるものの広範なリストを追加します。 それでも、不変性を偽ることが理にかなっている場合があります。あなたがするとき、ほとんど知っている機能は、実際には、あなたの範囲内で不変です。例: PostgreSQLは「アクセントを区別しない」照合をサポートしていますか? データの整合性に関する考えられるすべての影響はさておき、パフォーマンスへの影響は何ですか?関数の宣言はパフォーマンスにのみ有益であると考える人もいるかもしれません。そうですか?IMMUTABLE 関数のボラティリティIMMUTABLE を宣言するとパフォーマンスが低下しますか? 現在のPostgres 10でそれを絞り込むと仮定しますが、最近のすべてのバージョンが対象です。


2
選択クエリは必要以上に時間がかかります
私は、MySQLデータベーステーブルに約2300万件のレコードがあります。一意のものがないため、このテーブルには主キーがありません。2つの列があり、両方にインデックスが付けられています。以下はその構造です。 以下はそのデータの一部です。 今、私は簡単なクエリを実行しました: SELECT `indexVal` FROM `key_word` WHERE `hashed_word`='001' 残念ながら、これはデータを取得して表示するのに5秒以上かかりました。私の将来のテーブルには1500億のレコードがあるため、今回は非常に高いです。 私はExplainコマンドを実行して何が起こっているのかを確認しました。結果は以下のとおりです。 次に、以下のコマンドを使用してプロファイルを実行しました。 SET profiling=1; SELECT `indexVal` FROM `key_word` WHERE `hashed_word` = '001'; SHOW profile; 以下はプロファイリングの結果です。 以下は私のテーブルに関するいくつかの詳細です: では、なぜこれほど時間がかかるのでしょうか。それらもインデックス化されています!将来はたくさんのLIKEコマンドを実行する必要があるので、時間がかかりすぎています。何が悪いのでしょうか?

1
PostgreSQLのカウンターの同時増分
アイテムのリストとその使用法で構成されるプロジェクトの統計表を維持する必要があります(ページビューをカウントするWebサイトのようなものを考えてください)。アイテムがインスタンス化されるたびに、特定のアイテムの使用量を増やす必要があります。 私の最初の実装は: statistics( id integer NOT NULL, name character varying(255) NOT NULL, usage integer NOT NULL DEFAULT 0, ); UPDATE statistics SET usage = usage + 1 WHERE name = '<name>'; 私の懸念は、パフォーマンスと並行性についてです。更新プロセスは数十(おそらく80〜120)デバイスによってインスタンス化され、1秒あたり数回発生する可能性があるため、私の質問は次のとおりです。 1)このメソッドは同時実行性を維持しますか?(つまり、複数のデバイスが「同時に」更新を要求した場合、すべての要求がカウントされますか?) 2)結果を達成するための最良の方法を提案できますか?更新の書き込みには負荷がかかると思いますが、読み取りの方がはるかに頻繁です。値を増やす特定の機能はありますか?私は「シーケンス」を見ていますが、それが正しい方法であるかどうかはわかりません... アドバイスをよろしくお願いします

3
データベースサイズがパフォーマンスに与える影響:理論と現実
データベースのサイズはパフォーマンスに大きな影響を与えてはならないということはたくさんあります。テーブルのインデックスがメモリに収まる限り、データベースのパフォーマンスは維持されます。 しかし、現実は何ですか?データベースアーキテクチャが最適でない場合、インデックスがメモリに収まらず、冗長データが大量に存在する可能性があります。冗長データを削除するだけで大​​幅なメリットが得られますか?データベース内のデータの60〜80%が削除される可能性があると推定しています。 データベースのサイズを減らし、RAMを増やしてインデックスがメモリに収まるようにすると、パフォーマンスが大幅に向上し、システムを再設計するための数か月の余裕ができると思います。 データベースのサイズに基づいてパフォーマンスに影響を与えるIO、断片化、作業データセットなどの他の要因もありませんか?

3
インラインTVFとビューのパフォーマンス
ビューの代わりにインラインTVF(テーブル値関数)を使用しているデータベースがあります。たとえば、TVF [fnCarBrands]内で結合している[車のモデル]と[車のメーカー]という2つのテーブルがあるとします。 これらのTVFは他のTVFから呼び出され、さらに処理とレポートを行います。したがって、関数[fnCarBrands]を受け取り、テーブル[購入年]に結合して、関数[fnCarBrandHistory]を作成します。TVFのいくつかの層についても同様です。 インラインTVFは実際にはテーブルと他のTVFの単なる結合なので、おそらくビューを使用して同じ機能を取得できます。 このように記述されたインラインTVFのパフォーマンスは、ビューとどのように比較されますか?

3
すべてのSQL Serverを実行する単一のサービスアカウント
同じサーバーアカウントとエージェントアカウントを使用して、SQL ServerとSQL Agentをそれぞれ35サーバーの小規模な会社で実行されているすべてのSQLサーバーインスタンスに対して実行すると、パフォーマンスに悪影響がありますか?最大のデータベースは0.5 GBです。どんな提案も大歓迎です。ありがとうございました。

1
アイドル接続が多すぎると、PostgreSQL 9.2のパフォーマンスに影響しますか?
データベースサーバーでのクエリの応答に時間がかかるようで、CPU使用率が高いと思います。を実行するとps aux、約250の「アイドル」接続が表示されます(多すぎると思われます)。私は完全な診断を始めていませんが、これが探し始めるのに良い場所かどうか知りたいと思っていました。 また、PgBouncerをトランザクションレベルのプールで使用しています。idleプールサイズを調整することで、接続数を簡単に減らすことができると思います。ただし、正当な理由がない限り、あまり多くの変更を開始したくありません。 idlePostgreSQL 9.2の多くの接続がパフォーマンスに影響を与える可能性はありますか? どうもありがとう!

3
プライマリで一時的に時間がかかる読み取り専用レプリカでの長時間実行クエリ
私は次のように4ノードAGセットアップを持っています。 すべてのノードのVMハードウェア構成: Microsoft SQL Server 2017 Enterprise Edition(RTM-CU14)(KB4484710) 16個のvCPU 356 GB RAM(これまでの話...) 最大並列度:1(アプリベンダーの要求に応じて) 並列処理のコストしきい値:50 最大サーバーメモリ(MB):338944(331 GB) AG構成: ノード1:プライマリまたは同期コミット読み取り不可セカンダリ、自動フェイルオーバー用に構成 ノード2:プライマリまたは同期コミット、読み取り不可のセカンダリ、自動フェイルオーバー用に構成 ノード3:読み取り可能なセカンダリセット、非同期コミット、手動フェイルオーバー用に構成 ノード4:非同期のコミットを備えた読み取り可能なセカンダリセット、手動フェイルオーバー用に構成 問題のクエリ: このクエリについては、まったくおかしなことは何もありません。アプリケーション内のさまざまなキューにある未解決の作業項目の概要を提供します。以下の実行プランのリンクの1つからコードを確認できます。 プライマリノードでの実行動作: プライマリノードで実行した場合、実行時間は通常約1秒です。以下は実行計画です。以下は、プライマリノードからのSTATISTICS IOおよびSTATISTICS TIMEからキャプチャされた統計です。 (347 rows affected) Table 'Worktable'. Scan count 647, logical reads 2491, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical …

2
古い値でのテンポラルテーブルのパフォーマンスが低い
テンポラルテーブル内の履歴レコードにアクセスすると、奇妙な問題が発生します。AS OF副次句を介してテンポラルテーブルの古いエントリにアクセスするクエリは、最近の履歴エントリのクエリよりも時間がかかります。 履歴テーブルはSQL Serverによって生成され(日付列にクラスター化インデックスが含まれ、ページ圧縮を使用)、履歴テーブルに5,000万行を追加しました。クエリは約25,000行を取得しました。 問題の根本的な原因を特定しようとしましたが、特定できませんでした。これまでにテストしました: クラスター化インデックスを含む5,000万行のテストテーブルを作成して、速度の低下が単にボリュームによるものかどうかを確認します。一定の時間(約400ミリ秒)で25K行を取得できました。 履歴テーブルからページ圧縮を削除します。これは検索時間には影響しませんでしたが、テーブルのサイズを大幅に増やしました。 ID列と日付列を使用して、履歴テーブルの行に直接アクセスしてみました。ここが少し面白かった場所です。AS OFサブ句の場合と同様に、約1200ミリ秒かかるテーブルの約400ミリ秒で、古い行にアクセスできました。テストテーブルで日付列のフィルタリングを試みたところ、ID列でのフィルタリングと比較して、同様の速度低下に気づきました。これは、日付の比較がいくつかの減速の背後にあると私に信じさせます。 私はこれをもっと見たいのですが、間違った木を吠えないようにしたいのです。まず、テンポラルテーブルの古い履歴データにアクセスするときに、他の誰かがこれと同じ動作を経験しましたか?次に、パフォーマンスの問題の根本原因をさらに特定するために使用できるいくつかの戦略は何ですか(実行プランを調べ始めたばかりですが、それでも私には少し謎めいています)。 実行計画 これらは単純な取得クエリです。最初のクエリは古い行にアクセスし、2番目のクエリは新しい行にアクセスします。 古い行:実行時間〜1200ms 最近の行〜350msの実行時間 テーブルの詳細 これらはテンポラルテーブルの列です。履歴テーブルには同じ列がありますが、(履歴テーブルの要件に従って)主キーはありません。 以下は、履歴テーブルのインデックスです。

1
FROM句でSet Returning Function(SRF)の実行が遅くなるのはなぜですか?
これはデータベース内部の質問です。私はPostgreSQL 9.5を使用FROMしています。たとえば、これらのコマンドを実行するときのように、句の中でSet Returning Functions(SRF)(テーブル値関数(TVF)とも呼ばれます)の実行速度が低下するのはなぜですか。 CREATE TABLE foo AS SELECT * FROM generate_series(1,1e7); SELECT 10000000 Time: 5573.574 ms それはだ常に、より実質的に遅いです CREATE TABLE foo AS SELECT generate_series(1,1e7); SELECT 10000000 Time: 4622.567 ms ここで作成できる一般的なルールはありますか?たとえば、節の外で常に Set-Returning関数を実行する必要がありFROMますか?

2
SQL Server 2016 Enterpriseのパフォーマンスが低い
長くなって申し訳ありませんが、分析に役立つように、できるだけ多くの情報を提供したいと思います。 同様の問題のある投稿がいくつかあることは知っていますが、これらのさまざまな投稿やWebで入手可能なその他の情報を既にフォローしていますが、問題は解決しません。 SQL Serverのパフォーマンスに深刻な問題があり、ユーザーを狂わせています。この問題は数年間続き、2016年末までは別のエンティティによって管理され、2017年以降は私が管理するようになりました。 2017年の半ばに、Microsoft SQL Server 2012パフォーマンスダッシュボードレポートに示されているインデックス付けのヒントに従って問題を解決することができました。効果はすぐに現れ、魔法のように聞こえました。最後の数日はほとんど常に100%だったプロセッサーが非常に穏やかになり、ユーザーのフィードバックが鳴り響きました。通常、特定のリストを取得するのに20分かかり、最終的に数秒で完了できるため、ERP技術者でさえ喜んでいました。 しかし、時間の経過とともに、それは徐々に悪化し始めました。インデックスが多すぎるとパフォーマンスが低下するのではないかと心配して、インデックスの作成を避けました。しかし、ある時点で、不要なものを削除して、Performance Dashboardが提案する新しいものを作成する必要がありました。しかし、影響はありません。 ERPでの保存とコンサルティングの際に感じられる遅さは本質的にです。 次の構成のSQL Server 2016 Enterprise(64ビット)専用のWindows Server 2012 R2があります。 CPU:Intel Xeon CPU E5-2650 v3 @ 2.30GHz メモリ:84 GB ストレージに関して、サーバーにはオペレーティングシステム専用のボリューム、データ専用のログ、およびログ専用のボリュームがあります。 17データベース ユーザー: 最大のDBでは、ほぼ113人のユーザーが同時に接続されています 他には約9人のユーザーがいます それらの2つで3 + 3 残りのユーザーはそれぞれ1人だけです 大規模なデータベース用にも作成するWebがありますが、使用頻度ははるかに低く、約20人のユーザーがいるはずです。 DBのサイズ: 最大のデータベースは290 GBです。 2番目に大きいものは100 GB 3番目に大きいものは20 GB 4番目の14 GB 残りはそれぞれ3 GBを少し超えています これは本番環境のインスタンスですが、ほとんどの場合私がそこに接続しているだけなので、この目的のために無視できると思われる開発のインスタンスもありますが、この問題は、接続していない場合でも常に発生します。 プロセッサはほとんどの場合、次のようになります。 …

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