データベース管理者

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

1
統計。複数列のヒストグラムは可能ですか?
高密度の2つの列があるが、これらの列が独立していない状況を考えています。 定義 これが、テスト目的で作成したテーブルの定義です。 CREATE TABLE [dbo].[StatsTest]( [col1] [int] NOT NULL, --can take values 1 and 2 only [col2] [int] NOT NULL, --can take integer values from 1 to 4 only [col3] [int] NOT NULL, --integer. it has not relevance just to ensure that each row is different [col4] AS ((10)*[col1]+[col2]) …

3
特定のSQL Serverインスタンスに「メモリ内のページをロック」権限があるかどうかを確実に判断するにはどうすればよいですか?
「メモリ内のページのロック」権限は、SQL Serverが使用するサービスアカウントに付与できます。これにより、SQL Serverはメモリがディスクにページングされるのを防ぐことができます。 SQL Serverマシンのいくつかには、SQL Serverが使用するサービスアカウントにこの権利を許可するように構成されたローカルポリシーがないことに気付きました。多数のサーバーがあるため、「ローカルシステムポリシー」管理コンソールを使用して各サーバーを手動で確認するのはせいぜい面倒です。 問題のサーバーに権限があるかどうかを判断するために使用できるT-SQLクエリ、拡張ストアドプロシージャ、またはその他の方法はありますか? 私はしたいと思いません使用しEXEC xp_readerrorlog 0, 1, 'lock memory privilege was not granted';、それは現在のSQL Serverエラーログを確認するに依存しているからです。サーバーが最後に再起動されてからログがロールオーバーされたと仮定すると、そのエラーログに関連するエントリが含まれない場合があります。最初のパラメーターをからなどに変更することで古いログを確認できることを理解しています0が1、エラーログは10個しか保持されておらず、十分ではない場合があります。設定を確認するフェールセーフな方法が必要です。


3
CouchDBとドキュメントのバージョン管理
現在、CouchDBを使用してwiki風のアプリケーションに取り組んでおり、ドキュメントのバージョン管理スキームを実装しようとしています。私がそれを見る方法には、これを行う2つの方法があります: 各バージョンを個別のドキュメントとして保存する 古いバージョンを添付ファイルとして単一のドキュメントに保存します。 今、私は#1が働いている形を持っています。ユーザーがドキュメントを編集して保存すると、バックエンドはまず前のリビジョンを新しいドキュメントにコピーしてから、新しいバージョンを保存します。各ドキュメントには、各バージョンのデータ(古いバージョンのドキュメント_id、タイムスタンプ、エディターなど)を含む「履歴」配列があります。 この履歴配列は、頻繁に更新されるドキュメントではかなり長くなる可能性があるため、通常の読み取り中にドキュメントを取得するビュー(および履歴を取得する別のビュー)があります。 私の質問はこれです:私は現在のアプローチに不安を感じており、「アタッチメント」メソッドへの変更を考えています。確信はないけど。私はCouchDBをよく知っている人(私はこれに数週間しかいませんでした-そしてこれはCouchDB ...とNoSQLを使用した最初のプロジェクトです)がそれぞれの長所と短所を教えてくれることを願っていますアプローチ。または、おそらく私が見落としている他のバージョン管理スキームがありますか?

2
SSISで障害が発生した後に続行するにはどうすればよいですか
次のようなものを実装したい: このパッケージでは、データベース名のリストをループして、接続マネージャーの設定を動的に変更します。 ただし、「接続のテスト」での最初の失敗は停止し、パッケージの実行に失敗します。 しかし、Foreachループを続けたいと思います。私はこれが可能であるべきだという感覚を得る(そうでなければ、これらの赤い失敗矢印のユースケースは何ですか?) 私が試したものには、「MaximumErrorCount」の混乱が含まれます。
12 ssis-2012 

2
PostgresでRDS over EC2を使用する理由
現在EC2で実行されているデータベースがあります。より大きなマシンに移動する必要があるため、RDSを使用する問題が浮上しました。 価格: 1時間あたり0.132ドルでオンデマンドで2つのSSD(各16 GB)、2つのvCPU、4 GBのメモリを備えたEC2 c3.largeインスタンスを取得できます[1]。 最も近い(価格を考慮した)RDSマシンは、db.m3.medium1時間あたり0.125ドル(シングルAZ)です[2]。このマシンには同じ量のメモリがありますが、vCPUは1つのみです[3]。さらに、ストレージとioの支払いが必要になります[2]。 したがって、これら2つの価格は非常に似ています。 EC2の利点: すでに述べたように、もう1つのvCPU。 EC2を使用する場合、2番目のディスクに先書きログを配置できます(dbに大量に書き込むときのパフォーマンスが大幅に向上します)。 EC2インスタンスでpgbouncerを実行できます(接続を開いたままにできるため、パフォーマンスが向上します)。 構成ファイルを編集できます(最終的にパフォーマンスが向上します) RDSの利点: 毎日のバックアップを自動的に行います。 RDSはEC2の利点(特に2.)をカバーできますか?他の利点はありますか?

1
「対象テーブルのチェック制約またはパーティション機能で許可されていない値を許可する」でデータの切り替えが失敗する
次の場合 -- table ddl create table dbo.f_word( sentence_id int NULL, sentence_word_id int NULL, word_id int NULL, lemma_id int NULL, source_id int NULL, part_of_speech_id int NULL, person_id int NULL, gender_id int NULL, number_id int NULL, tense_id int NULL, voice_id int NULL, mood_id int NULL, case_id int NULL, degree_id int NULL, citation …

2
保守計画のスクリプト作成
SQL Server Management Studio(SSMS)を使用して、SQL Server 2008 R2のメンテナンスプランを作成しました。 ただし、別のサーバーでやり直す必要がある場合に備えて、スクリプトにエクスポート/変換できません。 方法はありますか? いいえの場合、SQL Serverの新しいバージョンを使用する方法はありますか?

3
CHECKPOINTまたはCOMMITはディスクに書き込みますか?
たとえば、SQLServer2008R2以降の場合、完全復旧モードのデータベースを使用します。 私はいつも考えた: トランザクションがコミットされると(COMMIT)、トランザクションはRAMのトランザクションログに書き込まれます。 CHECKPOINTが発生すると(一定の時間および/またはいくつかのトランザクションおよびその他の基準の後)、最後のCHECKPOINTと現在のCHECKPOINTの間のトランザクションがディスクに書き込まれます。 バックアップログが発生すると、データはMDFファイルに書き込まれます。 私は正しいですか?同僚の中には、自分が間違っていると言っている人もいます。BOLを使っても正しい答えを見つけるのは難しいです。 ありがとう!
12 sql-server 

3
2つの異なるテーブルからテーブルに値を挿入する方法は?
私は3つのテーブルを持っています students table ------------------------------------ id(PK, A_I) | student_name | nationality teachers table ------------------------------------ id(PK, A_I) | teacher_name | email classroom table ---------------------- id(PK, A_I) | date | teacher_id(FK to teachers.id) | student_id(FK to students.id) 教師の名前(davidたとえば)とstudent_id(たとえば)が与えられ、テーブルに基づいてテーブル7に挿入するように要求された場合、次のようにします。teacher_idclassroomidteachers insert into classroom (date, teacher_id, student_id) select '2014-07-08', id, 7 from teachers where teacher_name = …

1
バラクーダと圧縮の利点
私はMySQLのファイル形式AntelopeとBarracudaについて少し前に読んでいますが、BarracudaとCompressionを利用することで利益が得られるのではないかと考えています。 私のサーバーはMySQLのデフォルトであるため、現在Antelopeを使用しています。 私が持っている大規模なデータベースのために、メモリに関する問題が何度もありました。私のデータベースは毎日増加しています。 http://www.mysqlperformanceblog.com/2008/04/23/real-life-use-case-for-barracuda-innodb-file-format/のような圧縮は、少数の人々に利益をもたらしているようです 。 私はメモリとディスク容量が低くなることを理解していますが、これを理解しているかどうかはわかりません(記事から引用): 「トップに応じて〜5%のCPU負荷(80〜100%からほとんどI / Oを待っています) 0.01主キーによる平均検索時間(変換前の1〜20秒) データが圧縮されている場合、サーバーは元のデータを再度取得するために圧縮を解除する必要があるため、これらの2つのことは改善されないと考えました。 これは、読み取り/書き込み集中型のアプリケーションで役立ちますか?Barracuda and Compressionに変更することをお勧めしますか? バラクーダの問題を知っていますか? 次の質問の答えはいくつかの問題を指摘しているようですが、2011年からですので、今では修正されていると思います:https : //serverfault.com/questions/258022/mysql-innodb-how-to-switch -to-barracuda-format

2
SQLの2つの大きなデータセットを比較する効率的な方法
現在、一意のStoreKey/ProductKey組み合わせを含む2つのデータセットを比較しています。 1番目のデータセットには、StoreKey/ProductKey2012年1月から2014年5月の終わりまでの販売の一意の組み合わせがあります(結果= 45万行)。2番目のデータセットには、StoreKey/ProductKey2014年6月から今日までの販売の一意の組み合わせがあります(結果= 19万行)。 私はStoreKey/ProductKey、2番目のセットにはあるが、1番目のセットにはない組み合わせ、つまり6月初旬から販売された新製品を探しています。 これまで、2つのデータセットを一時テーブルにダンプし、両方のキーで両方のテーブルのインデックスを作成し、EXCEPTステートメントを使用して一意のアイテムを見つけました。 このような大きなデータセットを比較する最も効率的な方法は何ですか?このタイプの大規模な比較を行うより効率的な方法はありますか?

3
MySQLインスタンスが「同期インデックスを実行中」にストールする
問題 InnoDBテーブルを持つデータベースを実行する(ほとんどの場合)MySQL 5.6.20のインスタンスは、すべてのINSERT、UPDATE、およびDELETEクエリが「クエリ終了」状態のままで、1〜4分間、すべての更新操作に対して時々ストールします。これは明らかに最も不幸なことです。MySQLのスロークエリログは、非常に些細なクエリでさえ、異常なクエリ時間を記録しています。何百ものものが、失速が解決された時点に対応する同じタイムスタンプで記録されます。 # Query_time: 101.743589 Lock_time: 0.000437 Rows_sent: 0 Rows_examined: 0 SET timestamp=1409573952; INSERT INTO sessions (redirect_login2, data, hostname, fk_users_primary, fk_users, id_sessions, timestamp) VALUES (NULL, NULL, '192.168.10.151', NULL, 'anonymous', '64ef367018099de4d4183ffa3bc0848a', '1409573850'); デバイス統計は増加していますが、この時間枠ではI / Oの負荷は過剰ではありません(この場合、上記のステートメントのタイムスタンプによると、更新は14:17:30から14:19:12に失速しました)。 # sar -d [...] 02:15:01 PM DEV tps rd_sec/s wr_sec/s avgrq-sz avgqu-sz await svctm %util …

1
約50日後にSQL Server 2012 Page Life Expectancyが0にリセットされる
2サーバーHAクラスターで奇妙な動作に気づいたので、誰かが私の疑いを確認できるか、または他の説明を提供できると期待していました...ここに私のセットアップがあります。 2サーバーのSQL 2012 SP1インストール いくつかのデータベースでSQL AlwaysOn HAが有効になっています CPUは2.4GHz、4コア RAMは34 GB(AWSインスタンスであるため、奇数) リソース使用率は比較的低く、各サーバーには14 GB以上の空きメモリがあり、SQLは使用するメモリ量に制限がありません ディスクアクセス時間は問題ありません-15ms / ReadまたはWriteを超えることはほとんどありません データベースは大きくありません-1 GB、1.5 GB、7.5 GB SQLサーバープロセスは16 GBのプライベートバイト、15 GBのワーキングセットを使用しています 全体的に、リソースの問題は指摘されていません。奇妙な部分です。SQLは再起動されません(プロセスはほぼ6か月間実行されています)が、〜50日ごとに、Page Life Expectancyカウンターが(ほぼ)0に低下しているようです。perfグラフは次のとおりです。 カウンターデータを見ると(正確な数はなく、1時間ごとの集計)、PLEカウンター値は毎回(少なくともデータがあるたびに)約4,295,000秒(約50日間)に達したようです。 私のクレイジーな理論は、PLE番号が符号なしlong int(4,294,967,295の制限がある)としてミリ秒として保持され、49.71日で設計またはバグのためにリセットされるというものです。これにより、2つのサーバーの動作と、それらが持つ同一のパターンが説明されます。または、まったく異なるものになる可能性があり、私はまったく意味をなさない。:) 誰かがそのようなものを見たか、またはこの動作を説明できますか? PS私はこの投稿を見ましたが、私の場合は少し違うようです。 PPSこれは再投稿です-私はもともとここに投稿しましたが、ここの聴衆はより適切であるとアドバイスされました。 ありがとう!

4
パスワードを使用してログインを2008R2から2014に転送するにはどうすればよいですか?
Advanced Scripting Optionsで「Tasks> Generate Scripts...スクリプトログイン」を設定してみましたが、出力で次のようになります。 /* For security reasons the login is created disabled and with a random password. */ これらのログインをパスワードでスクリプト化する簡単な方法や、ログインを2008R2インスタンスから2014インスタンスに転送する別の方法はありますか?

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