データベース管理者

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

2
状態の変更をミラーリングするときにジョブ/手順を実行するイベント通知を作成する方法
この質問の順番でこの質問をしています。T-SQLを使用してTCP経由で文字列を送信できますか? Remus Rusanuが私の問題に最適な解決策であると思われるものを公開します。 これまでのところ、DATABASE_MIRRORING_STATE_CHANGEの通知イベントを作成するために何が必要だと思いますか? トリガーによってテーブルに行が挿入されたときに、このイベント通知を作成して、タイムスタンプと通知からのIDを保存する方法を教えてください。 これまでのところ、IDごとに1つのアラートを設定し、それぞれが次のようなジョブを実行しています(この例はID = 1の場合です): DECLARE @state AS varchar(50); SELECT @state = mirroring_state_desc FROM SYS.database_mirroring WHERE mirroring_guid IS NOT NULL; IF (@state IS null) SET @state = ' '; INSERT INTO MirroringAlerts (DateTime, alertID, alertDesc, Sync, alertCreator) values (SYSDATETIME(), 1, 'Principal synchronized with W ', @state, @@SERVERNAME) …

5
SQL Server 2008 R2パフォーマンスカウンターを復活させる方法は?
Windows 7 x64でSQL Server 2008 R2 Developerをデフォルトのインスタンスとして実行しています。何らかの理由で、SQL Serverのパフォーマンスカウンターが表示されなくなったようです。SELECT * FROM sys.dm_os_performance_countersゼロ行を返します。 走ってみましたlodctr /T:perf-MSSQLSERVERsqlctr.ini。エラーなしで完了しましたが、リモートレジストリサービスを再起動しても、何も修正されませんでした。実際、カウンタはperfmonから欠落しています。unlodctr MSSQLSERVERカウンターはまだインストールされていないと言いますが、カウンターがlodctr /Q:MSSQLSERVER存在し有効になっていると言います。通常のWindowsおよび.NETカウンターは正常に機能しています。 Windowsエラーログに、エラー8317が表示されます。 レジストリキー 'HKLM \ SYSTEM \ CurrentControlSet \ Services \ MSSQLSERVER \ Performance'に関連付けられた値 'First Counter'をクエリできません。SQL Serverパフォーマンスカウンターが無効になっています。 SQL 2012 RC0のインストールが失敗したために問題が引き起こされたのではないかと思います。SQL Server 2008 R2を再インストールする以外に、回復方法に関する提案はありますか?

5
SQL Serverストアドプロシージャはデータ結果をキャッシュしますか?
これは友人から聞いたことがありますが、これが本当かどうかは調査していません。 実行されたクエリのデータ結果がキャッシュに保存されるのは本当ですか? つまり、次のようなストアドプロシージャがあるとします。 SELECT * FROM USERLIST ...結果(この場合はユーザーのリスト)がキャッシュに保存されるのは本当ですか? また、私がこれらを持っている場合: SELECT * FROM USERLIST WHERE user="user" SELECT * FROM USERLIST WHERE user="userzzz" (user / userzzzがパラメーターとして渡されます)、データベースキャッシュに2つの異なる結果を格納することは正しいですか。 そうは思いませんが、専門家の確認をお願いします!

1
任意のクエリで使用できる並列度(DOP)を制限する
Oracle Exadata(11gR2)では、データベースは比較的頑丈です。 cpu_countは24です parallel_server_instancesは2です parallel_threads_per_cpuは2 Oracle Enterprise Manager(OEM)での観察により、クエリが連続して実行されるためパフォーマンスがひどいことに気付きました。これを解決するために、すべてのテーブル、マテリアライズドビュー、およびインデックスが、並列処理を利用するように変更されました。例えば: ALTER TABLE SOME_TABLE PARALLEL (DEGREE DEFAULT INSTANCES DEFAULT); 並列化をオンにするようにシステムが変更されました。 ALTER SYSTEM SET PARALLEL_DEGREE_POLICY = 'AUTO'; これによりパフォーマンスが向上しましたが、1つのクエリでDOPが96(利用可能なすべてのリソース)になることがOEMで時々観察されました。これにより、後続のクエリが1のDOPにダウングレードされました(並列化なし)。クエリの処理が完了するまでパフォーマンスが低下します。 これを解決するために、クエリで利用できるDOPを次のように制限しようとしました。 ALTER SYSTEM SET PARALLEL_DEGREE_LIMIT = 24; これは効果がありませんでした。制限(通常は48または96ですが、実際のパターンはありません)を超えるクエリを頻繁に確認します。 単一のクエリが使用可能なすべてのリソースを占有するのをどのように防ぐことができますか?

3
MySQLデータベースをメモリにキャッシュする
MySQLデータベースが600 MBのWebサイトに問題があります。ウェブサイトが遅すぎる。MySQLデータベースが大きくなるほど、速度が遅くなることに気づきました。5MBだったとき、ウェブサイトは非常に高速でした。大きくなると徐々に遅くなり始め、現在は600MBと非常に遅く、ページのロードに10秒ほどかかります。 上位のプロセスを確認しましたが、高負荷などとは関係ありません。HDD 7.2k rpmドライブでテストしたため、IOPSにも関係がなく、Intel 320 SSDドライブでのテストでも同じ問題が発生したため、クエリ数が多いとは思われません。 WebサイトはWordpressを使用しており、9つのプラグインがアクティブになっています。人々はそれがプラグインかもしれないと言いました...多分...しかし、今私はデータベース全体をメモリにキャッシュしたいだけで、どこから始めてどのようにそれを行うかについてのヘルプと方向性を知りたいです。 16GB RAMとi5-2400 4コア@ 3.1 GHzを持っています。OSはcentos 5.7です top - 07:23:57 up 9 days, 12:15, 0 users, load average: 0.09, 0.04, 0.05 Tasks: 162 total, 1 running, 161 sleeping, 0 stopped, 0 zombie Cpu(s): 8.2%us, 1.0%sy, 0.0%ni, 90.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 16367532k …

5
不完全なmysqldump
mysqldumpを実行してデータベーススナップショットを作成しようとしていますが、エラーを報告せずに途中でランダムに停止します。私のデータベースは比較的小さく(約100MB)、InnoDBを使用しています。 私はそれを次のように実行しています: mysqldump --force --single-transaction --quick --user myuser --password=mypass -h mydatabasehost mydb > /tmp/snapshot.sql 終了コードを確認すると0が報告されます。 私のバージョン:mysqldump Ver 10.13 Distrib 5.1.52、redhat-linux-gnu(i386) 同様の投稿や公式のバグレポートもいくつか見ましたが、どちらのソリューションも当てはまらないようです。 mysqldumpで完全なデータベーススナップショットを取得するにはどうすればよいですか? 編集:私のデータベースは現在AmazonのRDSにあります。

3
SSMSに接続を保存しますか?
SSMSを開いたときに、データベースサーバーの保存されたリストへの接続を開くような、何らかの種類のセッションまたはプロファイルをSSMS(2008 r2)に保存できますか? たとえば、SSMSを頻繁に開いてから、SQL Server NY-DB01、NY-DB02などに接続します。これらすべてを一度に開くだけのショートカットはありますか?

4
SQL Server 2008インスタンスのRAIDレベルの組み合わせを選択する
1つのIBM 3400サーバーを最初から再構築します。このサーバーは、Windows 2008 R2で実行されているSQL Server 2008インスタンス専用です。 新しいRAID構成を作成します。マシン内部に6つのSCSI 73 GBドライブとIBM ServerRAID 8Kコントローラーがあります。RAIDレベルを設定する良い方法は何でしょうか?コントローラーに2つ、3つ、または1つのフィールドを配置する必要がありますか? 次のいずれかの解決策を検討しています。 すべてのディスクを使用して、RAID 10プールを作成します。 RAID 1eプールに4つのディスクを使用し、それを使用してデータベースデータとOSを格納し、他の2つのディスクをRAID 0プールに使用して、それを使用してデータベースログを格納します。 他のいくつかの組み合わせ。 ストライプユニットサイズが大きいほど良いですか? このサーバーは、複製されたデータベースのサブスクライバーになります。その主なタスクは、レプリケーションエージェントのみが書き込みを行う、レポートとデータの取得です。データベースのサイズは約90 GBです。

1
物理データベースからクラウドデータベースへの移行
varchar(MAX)FILESTREAM BLOBSでのフルテキスト検索などの高度な機能を利用して、Microsoft SQL Server 2008R2で作成された物理データベースをSQL Azureに移動するとどうなりますか? どのようなアーキテクチャの変更が必要ですか?この移行にはどのような手順が含まれますか?SQL Azure Migration Wizzardは、単に自動的に移行を行う魔法のツールではありません。移行ツールで修正できず、「手動」で解決する必要がある互換性の問題は何ですか?

2
DBパフォーマンスを最大化するには、SSISを介して大量のデータをSQL Server 2008にロードした後に実行する必要があるコマンド
テストデータを空のデータベースに読み込むSSISパッケージを作成しました。一部のテーブルは非常に大きい(約7億行)。SSISパッケージが完了したら、データベースのパフォーマンスを最大化するために(見習いDBAとして)実行する必要があるコマンドはありますか? たとえば、私は実行しましたEXEC sp_updatestatsが、インデックスを更新する必要がないと報告されました。 大量のデータが読み込まれた後に行うことのリストはありますか、それともSQL Server 2008がそれらすべてを処理してくれるのですか?

3
含まれる列とフィルターされたインデックス
現在、tb_tranfersという名前のテーブルを使用しています。このテーブルには4,000万行あり、サイズは最大26 GB(11 GBのデータ、15 GBのインデックス)です。 行の10〜15%が一時削除された行です(DeletedDateはnullではありません)。アプリケーションはDeletedDateがnullである行のみを使用します。このテーブルへのすべてのクエリには、その効果に対する句が含まれます。 このテーブルには15のインデックスがあります。欠落しているインデックスDMVには、削除された日付を含む列としてインデックスを作成するための提案が含まれています。 WHERE DeleteDdate IS NULL11個の整理されていないインデックスすべてにフィルター処理されたインデックスを使用することは役に立ちますか?または、DeletedDate列をインクルード列として持つ方が良いでしょうか?

1
SSMS 2008 R2のフルテキストインデックスはどこにありますか
SQL Server Management Studioを使用して、新しいデータベース、いくつかのテーブル、フルテキストインデックスとカタログを問題なく作成しました。私は、それぞれのT-SQL作成スクリプトをコピーして、ドキュメントに含めたかったのです。データベース、テーブル、外部キー、およびカタログの作成スクリプトを取得できますが、フルテキストインデックスが見つからないようです。私は関連するテーブルのスクリプトテーブルを次のようにチェックしました-> CREATE Toであり、そこにもありませんし、カタログにもありません。何か案は?SQL Server Standardエディションのみを実行しているためですか?

2
ロードバランサーと接続プールの違い—違いはありますか?
私は、ローンチ後すぐに数百万のユーザーにサービスを提供することが期待されるプロジェクトに取り組んでいます。データベースはpostgresであり、現時点では少なくとも2台のサーバーが必要であると想定しています。システム管理者(明らかにスケーラブルなシステムに精通している)は、Webサーバーとデータベースサーバーの間にロードバランサーを配置することを提案しています。 私の質問は、負荷分散と接続プールの違いについてです。パフォーマンスを維持するために、どちらか、または両方を見る必要がありますか?
11 postgresql 

6
PHPとMySQLの間で奇妙なクエリタイムアウトが発生する原因は何ですか?
私は、さまざまな顧客が使用するSoftware-as-a-Serviceアプリケーションの上級開発者です。私たちのソフトウェアは、MySQLバックエンドを搭載したApache / PHPアプリケーションサーバーのクラスター上で実行されます。上の1つのソフトウェアの特定のインスタンス、カテゴリ名のリストを照会するためのPHPコードがタイムアウトしている顧客が29個のを超えるカテゴリがある場合。私はこれが意味をなさないことを知っています。これを打破する30について特別なことは何もありません。他の顧客は30を超えるカテゴリを持っていますが、この1つのインストールに30以上のカテゴリがある場合、問題は100%再現可能であり、30未満のカテゴリがある場合、問題は解消します。 問題の表は次のとおりです。 CREATE TABLE IF NOT EXISTS `categories` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(64) NOT NULL, `title` varchar(128) NOT NULL, `parent` int(10) unsigned NOT NULL, `keywords` varchar(255) NOT NULL, `description` text NOT NULL, `status` enum('Active','Inactive','_Deleted','_New') NOT NULL default 'Active', `style` enum('_Unknown') default NULL COMMENT 'Autoenum;', …

2
「Insert Query」の前に「Begin Transaction」がテーブル全体をロックするのはなぜですか?
SQL Server 2005 Expressを使用しています。 シナリオでは、ストアドプロシージャのステートメントのBegin Transaction直前にコマンドを追加しましたINSERT。このストアドプロシージャを実行すると、テーブル全体がロックされ、これがINSERT完了するまで、すべての同時接続でハングした表示が表示されました。 テーブル全体がロックされるのはなぜですか。また、SQL Server 2005 Expressでこの問題を解決するにはどうすればよいですか。 編集済み クエリは次のとおりです。 INSERT INTO <table2> SELECT * FROM <table1> WHERE table1.workCompleted = 'NO'

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