データベース管理者

データベースのスキルを向上させ、コミュニティの他の人から学びたいデータベースの専門家向けのQ&A

1
一時データ用のPostgreSQLの最適化
非常に揮発性の高いデータを保持する整数型の100〜300列のテーブルがいくつかあります。データセットは1つまたは2つの主キーでキー設定され、更新が発生すると、データセット全体が削除され、新しいデータが1つのトランザクションに挿入されます。データセットのサイズは通常数百行ですが、極端な場合には最大数千行になることがあります。更新は1秒に1回行われ、さまざまなキーのデータセットの更新は通常ばらばらであるため、テーブルの削除と再作成は実行できません。 そのような負荷を処理するようにPostgresをどのように調整しますか?違いがある場合は、最新かつ最高のバージョンを使用できます。

1
SQL Serverは使用可能なメモリを使用していません
Windows 2008R2 Enterprise上のSQL Server 2008 R2 Standard Edition(64ビット) サーバーには300 GBを超えるメモリがありますが、コントロールパネルの合計メモリ使用量が86 GBを超えることはありません 最大量のメモリを使用するようにSQLを構成する 頻繁に使用する場合でも-CPUが80%以上分 専用SQLサーバー いくつかの大きなデータベース 頻繁に使用される1つのテーブルのインデックスサイズだけで10 GBを超える メモリにロックを保持するようにサービスアカウントを設定する それは正常ですか? 何をテストできますか? SQL Serverでより多くのメモリを使用できますか?


1
どのマシンでTCP Chimney Offloadを無効にする必要がありますか?
Windows Server 2003 SP2でデフォルトで有効になっているTCP Chimney Offloadを無効にする方法について誰かに助言します。複数のサーバーマシン、つまりデータベースサーバーマシンと通信するアプリケーションサーバーマシンがある環境で作業しています。 これにより、アプリケーションとデータベース間の通信の問題が発生する可能性があります。KB942861およびWindows Scalable Networking Pack-SQL Serverのワークロードに対するパフォーマンスと同時実行の影響の可能性を参照してください。 どのマシンでTCP Chimney Offloadを無効にする必要がありますか?アプリケーション、データベース、またはその両方?

1
MySqlで月次出席レポートを表示する
Mysql DBを使用して、phpで学校管理システムを実行しています。プロジェクトで立ち往生しています。誰かが私が間違っていることを提案してください。 データベースに2つのテーブルがあります。1つはStudentsレコードを保存すること、もう1つはattendance日ごとに保存することです 今、私は今月の特定のクラスのすべての学生のレポートを表示したいと思います。ただし、欠席している学生の詳細のみを出席表でのみキャプチャしています。 ここに結果を表示するSQLクエリを作成しました。 SELECT tab.class, attend, DATE, ta.rollno, ta.StdNm FROM tbl_absentees tab, tbl_admission ta WHERE ta.Cls = class AND ta.rollno = tab.rollno AND class =22 AND attend = 'A' AND DATE = '2013-06-07'; 結果は次のとおりです。 Class Attend RollNo StudentName しかし、出席= Aの場合は出席表の日付のみを取り、31日の表の方法で表示したいのですが、欠席の場合はAを表示し、それ以外の場合は残りの日には「P」を表示します mysqlでこれを行うにはどうすればよいですか?誰かがこれを達成するためのアイデアを私に提案/提供できますか? 私の質問を誤解して申し訳ありません。実際には、データが2つのテーブルから取得される特定の月の出席レポートを表示したいと思います。 最初のテーブルは、StudentName、RollNo、Classで構成されています 2番目のテーブルは、日付、ステータス、RollNo、クラスで構成されます このようなレポートを表示したいのですが。
8 mysql  pivot 

1
SSIS組織
私はSSMSに精通していますが、.net、c#、またはビジュアルスタジオ(アセンブラー、c、unix、vi、oracleなど)を使用したことがありません。 私は基本的な2012 SSIS ETL(BIまたはデータウェアハウスではない)を理解しようとしていますが、これらすべてがどのように組み合わされるかを説明するものは何も見つかりません。 カタログ ソリューション プロジェクト パッケージは他にありますか? SSISを使用して単純なテストを作成し、ファイルをテーブルにインポートする必要があるとしましょう。上記のどれが必要で、どのような順序で作成しますか? また、基本的なSSIS 2012 ETLの概要や記事への方法への良いリンクはありますか。

2
使用可能なすべての列を使用していない述語を探す
再現が難しい奇妙なクエリコンパイルの問題があります。これは高負荷でのみ発生し、簡単に繰り返すことはできません。 列A、B、C、Dを持つテーブルTがあります。 T(A、B、C、D)に一意でないクラスター化インデックスがあります。 クエリSELECT * FROM T WHERE A = @ P1 AND B = @ P2 AND(C = @ P3 OR C = @ P4)AND D = @ P5があります。シーク条件はクラスター化インデックスのすべての列にあり、3番目の列にはORがあります。 問題は、このクエリのクエリプランにはAとBのみにシーク述語があることです。CおよびDの述語は通常の述語であるため、列CおよびDの検索ツリーは使用されません。 すべてのパラメーターのデータ型は、列のデータ型と一致します。 なぜこれが起こり得るのかについてのヒントを誰かが提供できますか?SQLバージョンは2008 R2(SP1)-10.50.2789.0(X64)です

1
推定された行と実際の行の違い(実際は推定よりもはるかに小さい)-ソート
XMLドキュメントからいくつかのノードを処理するクエリを実行しています。私の推定サブツリーのコストは数百万単位であり、それはすべて、XPathを介してxml列から抽出したいくつかのデータに対してSQLサーバーが実行しているソート操作に由来するようです。Sortオペレーションの推定行数は約1900万ですが、実際の行数は約800です。クエリ自体は適切に実行されますが(1〜2秒)、クエリのパフォーマンスとその理由について疑問に思っています。違いはとても大きいですか?

2
SQLリストアを高速化するためにサーバーに何を追加できますか?
現在、復元に約9時間かかる2.8 TBのSQLデータベース(主にデータファイル、約400 GBのログファイル)を持っています。このデータベースはテスト目的で使用され、常に同じポイントから開始するように、実行のたびに削除してバックアップから復元する必要があります。 私の質問は、サーバーには現在12コアと92 GBのRAMがあり、データベースが存在するRAID 5ディスクサブシステムが搭載されていることです。通常、SQL復元プロセスのボトルネックとなる領域は何ですか?それはディスク、メモリ、またはCPUですか?

1
特定のアプリケーションに対してのみトリガーコードを実行させる方法は?
テーブルに対して実行されたSQLではなく、現在のアプリケーションに対してのみトリガーを有効にできるかどうか疑問に思っていました。 状況: 同じデータベースで作業している2つのアプリケーションがあります。App1およびApp2。 「MyTable」にトリガーがあります。これは、App1がクエリを実行しているときにのみ起動し、App2が実行しているときは起動しないようにします。

2
SQL Serverレプリケーション代替ソフトウェア
SQL Serverレプリケーションを長い間使用していて、いくつかの問題がありました。サブスクリプションを再初期化して、一部の問題を修正したり、レプリケーション構造全体を破棄して再構築したりする必要があったこともあります。 私たちの主な懸念は、レプリケーションの問題が発生すると、ほとんどの場合、簡単な解決策は、ビジネス要件で受け入れられないレプリケーションを再初期化することです。 現在、私たちは新しい大きなプロジェクトをリリースする準備をしています。SQLServerレプリケーションを実行するためのサードパーティソフトウェアを探しています。 私たちのセットアップには、ブランチに分散したサーバー(さまざまな国)+モバイルクライアント(ローカルSQL Serverデータベースを備えたラップトップ)が含まれており、記事のフィルタリングを提供する機能を使用して、これらすべての間でデータを複製する必要があります。 誰かが私たちにいくつかの代替ソリューションを提案してくれませんか?


1
デタッチ/アタッチまたはオフライン/オンラインは、特定のデータベースのバッファキャッシュをクリアしますか?
私の友人は今日、SQL Serverをバウンスする代わりに、データベースをデタッチしてから再アタッチするだけで、このアクションにより、指定されたデータベースのページとプランをキャッシュからクリアできると私に言った。私は同意せず、以下の証拠を提供します。あなたが私に同意しない場合、またはより良い反論がある場合は、必ずそれを提供してください。 このバージョンのSQL ServerでAdventureWorks2012を使用しています。 SELECT @@ VERSION; Microsoft SQL Server 2012-11.0.2100.60(X64) Windows NT 6.1(Build 7601:Service Pack 1)上のDeveloper Edition(64ビット) データベースをロードしたら、次のクエリを実行します。 まず、ここにあるJonathan KのAW肥大化スクリプトを実行します。 AW Get Fat --------------------------- -ステップ1:Bpool Stuff? --------------------------- USE [AdventureWorks2012]; 行く 選択する OBJECT_NAME(p.object_id)AS [ObjectName] 、p.object_id 、p.index_id 、COUNT(*)/ 128 AS [バッファサイズ(MB)] 、COUNT(*)AS [buffer_count] から sys.allocation_units AS a INNER JOIN sys.dm_os_buffer_descriptors AS …

2
PostgreSQL:すべてのスキーマでDDLを実行する
マルチテナントDBセットアップを行っており、いくつかの列を追加する必要があります。ユーザーをパーティション分割するためにスキーマ(およびsearch_path)を使用しているので、すべてのデータベースにDDLスキーマの変更を適用するユビキタスな方法を探しています。最初は、単一のクエリ(pg_catalogのカーソル)として実行できるかもしれないと思っていましたが、コマンドラインでの呼び出しがpsql -f望ましい方法かもしれません。

2
.frmファイルだけからテーブルスキーマを抽出するにはどうすればよいですか?
mysqlのデータディレクトリをバックアップから抽出し、古いテーブルからスキーマを取得する必要がありますが、それは別のマシンからのバックアップです。 今日、これを行う方法についてのチュートリアルを多数読んでいますが、失敗するように見えるたび、またはmysqlがハングまたはクラッシュするためにmysqlを再インストールする必要があります。私は以下を試しました: 別のデータベースを作成する そのデータベースに同じ名前のテーブルを作成する ファイルを置き換える エンジンの停止/開始 .frmファイルから回復する いろいろな順番や組み合わせで試してみました。 .frmファイルからスキーマを抽出できる外部ツールはありますか?ファイルを開くと、列名が表示されます。私は一見したが、これを可能にする何かを見つけることができないようです。 前もって感謝します。

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