データベース管理者

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

2
断続的なRESOURCE_SEMAPHORE_QUERY_COMPILE待機統計
運用中のSQL Serverの1つで発生している断続的なCPUスパイクのトラブルシューティングを試みています。28 GBのRAMと4つのCPUコアを備えたSQL Server 2008 R2 Standard Editionを実行しています。これが発生すると、RESOURCE_SEMAPHORE_QUERY_COMPILERの待機が多数あることに気づきます。これは約1〜2分続き、その後停止して、CPU使用率は通常に戻ります。 これを調査した結果、これは通常、再利用できない多数の実行プランをコンパイルしたことが原因であると理解しています。 この動作は、メモリプレッシャーによるプランキャッシュの削除によってもトリガーされますか?もしそうなら、私はこれをどのようにチェックしますか?アプリケーションの修正を展開するまで、サーバーRAMのアップグレードなどの短期的な解決策があるかどうかを確認しようとしています。私が考えることができる他の唯一の短期間のオプションは、最も忙しいデータベースのいくつかを別のサーバーに移動することです。

3
SQL Serverエラー「OLE DBプロバイダー 'Microsoft.ACE.OLEDB.12.0'へのアドホックアクセス」のヘルプ
したがって、SQL Server 2008 R2でビューをクエリしようとすると、ユーザーが次のエラーを受け取るという興味深い問題があります。 メッセージ7415、レベル16、状態1、行1 OLE DBプロバイダー 'Microsoft.ACE.OLEDB.12.0'へのアドホックアクセスが拒否されました。リンクサーバーを介してこのプロバイダーにアクセスする必要があります。 問題を調査したところ、OPENROWSETパラメータ、レジストリ値の変更、AdHoc DIstributed Queriesなどに変更を加えた記事がいくつかあります(以下の記事へのリンク)。 http://www.johnsoer.com/blog/?p=538 http://www.remotedbaexperts.com/Blog/dba_tips/2010/09/ad-hoc-access-to-ole-db-provider-microsoft-ace-oledb-12-0-has-been-denied/ 上記のリンクの手順に従ってもエラーが発生します。 ここでの注意点は、テストアカウントを作成してsaを指定したときに、問題なく実行されたことです。管理者権限を持つ同僚も問題なくクエリを実行できます。 このクエリは、このインスタンスをホストしているサーバーのローカルのExcelファイルから提供されています。 2008年の他の修正を知っている人はいますか?

1
頻繁な「ランダムな」SQL Server接続タイムアウト
過去数日間、クライアントはデータベースサーバーへの接続タイムアウトが断続的に発生しています。 サーバーに複数回接続する同じページ上の複数のAjax呼び出しは、成功と失敗が混在しており、特定のWebサイトユーザーが他のユーザーが同じサイトからアクセスしていないときに接続の問題が発生する場合があります。 問題がデータベースにあるのかサーバー自体にあるのかはわかりませんが、同じサーバー上の別のデータベースへの接続に問題がある可能性があります。 サーバーはWindows Server 2008 RCを実行するAmazon Cloud VPCであり、SQL ServerのバージョンはSQL Server 2008 R2です。必要に応じて詳しい情報を提供できます。 誰かがこれをデバッグする方法についてのヒントを教えてもらえますか?接続をテストするためのいくつかの方法はありますか? どうもありがとう。

1
作成した機能ベースのインデックスはコストを下げたが、説明プランの内訳に表示されないのはなぜですか?
ひどい列/テーブル名で申し訳ありませんが、これは作業プロジェクト用なので、質問しても問題ないことを保証したいと思いました。少なくとも機能インデックスが使用されていない理由を少なくとも知りたいと思っていたので、本番環境にこのインデックスを追加した方がよいと感じました。 クエリは、私が作成したビューに、次のようなwhere句を含むさまざまな列を使用しています。 .... AND e.sysid = NVL(wi.ALPHAid, -999) AND NVL(wi.ALPHAid, -999) <> -999 AND NVL(wi.BRAVOid, -999) = -999 AND NVL(wi.CHARLIEid, -999) = -999 ... 関数を介して列を渡し、代わりに関数ベースのインデックスを作成する必要がある場合、Oracleはインデックスを使用できないことを理解しています。したがって、インデックスを作成する前に、説明プランで次のコストを取得します。 計画ハッシュ値:1233409744 ------------------------------------------------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | ------------------------------------------------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | …
8 oracle  index  explain 

1
CTE INSERTの結果を使用して一意のID値を提供するINSERT
古いデザインのデータを新しいデザインに変換するジョブを書いています。このプロセスでは、挿入から別のテーブルへのIDを取得し、それをターゲットテーブルへの挿入で使用する必要があります。 CREATE TABLE t1 { t1_id BIGSERIAL, col1 VARCHAR }; CREATE TABLE t2 { t2_id BIGSERIAL, col2 VARCHAR, -- renamed from col1 to avoid confusion t1_id BIGINT REFERENCES t1.t1_id }; 次の形式に一致するSQLが定義されています。 WITH ins AS ( INSERT INTO t1 (t1_id) VALUES (DEFAULT) RETURNING t1_id ) INSERT INTO t2 (col1, t1_id) SELECT …

1
フィールド名のみが指定されたNEWまたはOLDフィールドにアクセスする方法は?
検証トリガーを書いています。トリガーは、配列の合計が別のフィールドと等しいことを検証する必要があります。この検証には多くのインスタンスがあるため、単一のプロシージャを記述して、チェックするフィールドのセットがそれぞれ異なる複数のトリガーを作成します。 たとえば、次のスキーマがあります。 CREATE TABLE daily_reports( start_on date , show_id uuid , primary key(start_on, show_id) -- _graph are hourly values, while _count is total for the report , impressions_count bigint not null , impressions_graph bigint[] not null -- interactions_count, interactions_graph -- twitter_interactions_count, twitter_interactions_graph ); 検証では、それを確認する必要がありますimpressions_count = sum(impressions_graph)。 NEWplpgsql内からフィールドに動的にアクセスする方法がわからないので、行き詰まっています。 CREATE FUNCTION validate_sum_of_array_equals_other() …

2
MySQLがメモリを解放しない
MySQLは、大きな挿入または選択ステートメントが実行された後、テーブル全体をキャッシュ(テーブルサイズ=〜20GB)に保持したいようです。現在、私のinnodbバッファープールは20GBです。合計RAMは32GBです。メモリ使用量とinnodbステータスからの出力、およびmysqltunerからの出力を提供します。過去数日間、私は気が狂っている。助けてください!フィードバックに感謝します。さらに情報が必要な場合はお知らせください。 また、「FLUSH TABLES」を実行すると、メモリ内で閉じて再度開きます。少なくとも私はそれが起こっていると思います。一連の挿入を実行する前のinnodbの現在のメモリステータスは次のとおりです。 ---------------------- BUFFER POOL AND MEMORY ---------------------- Total memory allocated 21978152960; in additional pool allocated 0 Dictionary memory allocated 6006471 Buffer pool size 1310719 Free buffers 347984 Database pages 936740 Old database pages 345808 Modified db pages 0 Pending reads 0 Pending writes: LRU 0, flush list 0, …
8 mysql  innodb  memory 


4
DROPとTRUNCATEの違い
TRUNCATEドロップする方法の違いは何ですか? 私はそれがテーブル内のすべてのデータを削除すると思いますが、テーブル名をデータベースに保持し、そこでDROPすべてのデータとテーブルを削除します。これは正しいです ?

1
XMLをMySQLテーブルに変換する
次の形式の大きなXMLファイルがあり、このファイルをMySQLテーブルに変換する必要があります。どうすればこれを達成できますか? ~~~~~~~~~~ <host starttime="1392325468" endtime="1392325486"><status state="up" reason="user-set"/> <address addr="192.168.0.2" addrtype="ipv4"/> <hostnames> </hostnames> <ports><extraports state="filtered" count="2"> <extrareasons reason="no-responses" count="2"/> </extraports> <port protocol="udp" portid="22"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ssh" method="table" conf="3"/></port> <port protocol="udp" portid="123"><state state="open|filtered" reason="no-response" reason_ttl="0"/><service name="ntp" method="table" conf="3"/></port> </ports> </host> ~~~~~~~~~~
8 mysql  xml 

2
Management Studioを使用して1つのデータベースのみにアクセスするためのSQLサーバーでユーザーを作成する方法[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、データベース管理者のスタック交換のトピックになるようにします。 6年前休業。 Management Studioを使用して1つのデータベースのみにアクセスするためのSQL Server 2008 R2でユーザーを作成する方法。 よろしく、サルマン

2
SQL Serverで派生テーブルよりも一時テーブルを使用する利点はありますか?
派生テーブルは一時テーブルよりもパフォーマンスが優れていますが、とにかく多くのSQL Server開発者は2番目のテーブルを好みます。どうして?大量のデータ(数百万のレコード)でクエリを実行する必要があり、最良の選択を使用していることを確認したい。 CREATE TABLE A( id BIGINT IDENTITY(1,1) NOT NULL, field1 INT NOT NULL, field2 VARCHAR(50) NULL, ); CREATE TABLE B( id INT IDENTITY(1,1) NOT NULL, field1 VARCHAR(10) NULL, field2 INT NULL ); INSERT INTO A (field1,field2) VALUES (1,'a'),(2,'b'),(3,'c'),(2,'d'),(5,'e'), (6,'f'),(7,'g'),(8,'h'),(9,'i'),(2,'j'); INSERT INTO B (field1,field2) VALUES ('a',1),('b',2),('c',3),('d',4),('e',5), ('f',6),('g',7),('h',8),('i',9),('j',2),('k',3); DECLARE @begin INT=0,@end …


2
SQL Serverのパフォーマンス:PREEMPTIVE_OS_DELETESECURITYCONTEXT主要な待機タイプ
昨日、SQL ServerのCPU使用率が高いことについて不満を言っていた顧客から電話がありました。SQL Server 2012 64ビットSEを使用しています。サーバーはWindows Server 2008 R2 Standard、2.20 GHz Intel Xeon(4コア)、16 GB RAMを実行しています。 犯人が実際にSQL Serverであることを確認した後、ここで DMVクエリを使用してインスタンスの上位の待機を調べました。上位2つの待機は(1)PREEMPTIVE_OS_DELETESECURITYCONTEXTと(2)SOS_SCHEDULER_YIELDでした。 編集:「トップ待機クエリ」の結果を次に示します(誰かが私の希望に反して今朝サーバーを再起動しましたが)。 私たちは多くの激しい計算/変換を行うので、私は理解できますSOS_SCHEDULER_YIELD。しかし、私はPREEMPTIVE_OS_DELETESECURITYCONTEXT待機タイプとそれが最も高い理由について非常に興味があります。 この待機タイプについて私が見つけることができる最良の説明/ディスカッションは、ここにあります。それは言及しています: PREEMPTIVE_OS_待機タイプは、データベースエンジン(通常はWin32 API)を離れ、さまざまなタスクのためにSQL Serverの外部でコードを実行する呼び出しです。この場合、以前にリモートリソースアクセスに使用されていたセキュリティコンテキストが削除されています。関連するAPIは、実際にはDeleteSecurityContext()という名前です 私の知る限り、リンクサーバーやファイルテーブルなどの外部リソースはありません。また、なりすましなどは一切行いません。バックアップが原因でスパイクが発生したり、ドメインコントローラに障害が発生したりする可能性はありますか? これが主な待機タイプになる原因は何ですか?この待機タイプをさらに追跡するにはどうすればよいですか? 編集2: Windowsセキュリティログの内容を確認しました。興味のあるエントリがいくつかありますが、これらが正常かどうかはわかりません。 Special privileges assigned to new logon. Subject: Security ID: NT SERVICE\MSSQLServerOLAPService Account Name: MSSQLServerOLAPService Account Domain: NT Service Logon ID: 0x3143c Privileges: SeImpersonatePrivilege …

1
MySQLエラー:バイナリログに書き込むことができません
私は(別の開発会社から継承された)システムを使用していますが、その機能のすべてをまだ知りません。構築: -Webクライアント/アプリケーション(symfony 1.4) -DB-MySQL。 プロジェクトは2つのサーバーにデプロイされます 。1番目はnginxサーバー+ PHP + DBマスターです。 2番目:DBスレーブ。 データがDBマスターでWebクライアントによって変更されると、DBスレーブは正常に動作し、データは通常のレプリケーションプロセスを使用します。MySQL管理クライアントによってデータが変更されると、通知が届きます。 ステートメントを実行できません:BINLOG_FORMAT = STATEMENTおよび少なくとも1つのテーブルが行ベースのロギングに限定されたストレージエンジンを使用しているため、バイナリログに書き込むことができません。トランザクション分離レベルがREAD COMMITTEDまたはREAD UNCOMMITTEDの場合、InnoDBは行ログに制限されます その後、DBスレーブが停止し、レプリケーションプロセスが中断します(エラー挿入...重複エントリ...)。 同じテキストで同様の通知が発生し(この状況ではエラー)、Javaアプリケーション/モジュール(トランザクション内で実行されます)でデータを挿入しようとすると、例外の後、トランザクションはロールバックされ、変更は行われません。 この問題を解決してシステムを機能させ、DBマスターとDBスレーブの修正データを通常モードで機能させるにはどうすればよいですか?
8 mysql  logs  errors 

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