データベース管理者

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

4
ALLOW_SNAPSHOT_ISOLATIONおよびREAD_COMMITTED_SNAPSHOT
オンラインフォーラムと例のほとんどは、常に両方持つことをお勧めALLOW_SNAPSHOT_ISOLATIONしてREAD_COMMITTED_SNAPSHOT、誰かがスナップショット、行バージョン管理または類似の質問をされるたびにONに設定します。 どちらの設定でもSNAPSHOTという言葉は少し混乱するものと思います。データベースエンジンがREAD_COMMITTEDのデフォルトの動作にロックの代わりに行バージョン管理を使用するために、データベースREAD_COMMITTED_SNAPSHOTはどの設定に関係なく ONに設定されると考えましたALLOW_SNAPSHOT_ISOLATION。 ALLOW_SNAPSHOT_ISOLATION設定は、トランザクション(例えばSETトランザクション分離レベルのスナップショット)を起動するときだけスナップショット分離を可能にするために、ONに設定されているにかかわらずのREAD_COMMITTED_SNAPSHOT設定。 これらの2つの設定をONに設定する唯一の理由は、READ COMMITTED行のバージョン管理と スナップショット分離が必要な場合です。 私の質問は、私の理解が何らかの形で間違っているのですか?そして、これら2つの設定は常に一緒にONに設定する必要があります(特にREAD COMMITTED行バージョン管理の場合)?

1
同じクエリで異なる条件を持つPostgresカウント
Postgres 9.3の編集 次のスキーマを持つレポートを作成しています:http : //sqlfiddle.com/#!15 / fd104/2 現在のクエリは次のように正常に機能しています。 基本的には、3テーブルの内部結合です。私はこのクエリを作成しませんでしたが、それを残した開発者がクエリを変更したいと思います。ご覧のとおり、にTotalApplication基づいてアプリケーション全体をカウントしますa.agent_id。そしてtotalapplication、結果の列を見ることができます。私が望むのは、それを削除しtotalapplicationて、新しい2列に変更することです。私はA追加したいcompletedsurveyとpartitalsurvey列を。基本的にこの部分は SELECT a.agent_id as agent_id, COUNT(a.id) as CompletedSurvey FROM forms a WHERE a.created_at >= '2015-08-01' AND a.created_at <= '2015-08-31' AND disposition = 'Completed Survey' GROUP BY a.agent_id 私はちょうど追加しましたが、唯一の違いがある同じクエリを持つAND disposition = 'Completed Survey'別の列が必要ですpartialsurveycompletedsurvey AND disposition = 'Partial Survey' そして COUNT(a.id) as PartialSurvey しかし、私はそのクエリをどこに置くか、クエリがどのように見えるかを知らないので、最終的な出力にはこれらの列があります …

3
このクエリが機能するのはなぜですか?
Oracle 12cでは、table_a(id、name)とtable_b(id)の2つのテーブルがあります。 このクエリが例外を返さないのはなぜですか? select * from table_a where name in (select name from table_b); 私が理解していることから、Oracleはこれを select * from table_a where name = name; しかし、私が得られないのはなぜですか?

2
MySQLのORDER BY FIELD()は内部的にどのように機能しますか
ORDER BY句の仕組みとFIELD()機能の仕組みを理解しています。私が理解したいのは、両者がどのように連携してソートするかです。行の取得方法とソート順の導出方法 +----+---------+ | id | name | +----+---------+ | 1 | stan | | 2 | kyle | | 3 | kenny | | 4 | cartman | +----+---------+ SELECT * FROM mytable WHERE id IN (3,2,1,4) ORDER BY FIELD(id,3,2,1,4) 上記のクエリの結果は +----+---------+ | id | name | +----+---------+ | …
37 mysql  order-by  fields 

2
PostgreSQLでの一括更新パフォーマンスの最適化
Ubuntu 12.04でPG 9.1を使用します。 現在、データベースで次の形式の多数のUPDATEステートメントを実行するのに最大24時間かかります。 UPDATE table SET field1 = constant1, field2 = constant2, ... WHERE id = constid (IDで識別されるオブジェクトのフィールドを上書きしているだけです。)値は外部データソースから取得されます(テーブル内のDBにはまだありません)。 テーブルにはそれぞれ少数のインデックスがあり、外部キー制約はありません。最後までCOMMITは行われません。 pg_dumpデータベース全体をインポートするには2時間かかります。これは、合理的に対象とすべきベースラインのようです。 PostgreSQLのデータセットを何らかの方法で再インポートするカスタムプログラムを作成する以外に、バルクUPDATEパフォーマンスをインポートのパフォーマンスに近づけるためにできることはありますか?(これは、ログ構造化されたマージツリーがうまく処理できると信じている領域ですが、PostgreSQL内でできることはないかと考えています。) いくつかのアイデア: すべての非IDインデックスを削除し、その後再構築しますか? checkpoint_segmentsを増やしますが、これは実際に長期的なスループットの持続に役立ちますか? ここで述べたテクニックを使用しますか?(新しいデータをテーブルとしてロードし、新しいデータにIDが見つからない古いデータを「マージ」する) 基本的に試してみることがたくさんありますが、最も効果的なものが何か、他のことを見落としているかどうかはわかりません。今後数日間は実験に費やしますが、ここでも同様に質問すると思いました。 テーブルには同時ロードがありますが、読み取り専用です。

2
SQL Serverの予測不能な選択結果(dbmsエラー?)
以下に簡単な例を示します。これは奇妙な結果を返しますが、それは予測不可能であり、チームで説明することはできません。私たちは何か間違ったことをしていますか、それともSQL Serverエラーですか? 調査の結果、検索領域をsubqueryのunion句に減らしました。これにより、「men」テーブルから1つのレコードが選択されます。 SQL Server 2000では正常に機能しますが(12行を返します)、2008および2012では1行のみを返します。 create table dual (dummy int) insert into dual values (0) create table men ( man_id int, wife_id int ) -- there are 12 men, 6 married insert into men values (1, 1) insert into men values (2, 2) insert into men values (3, null) …

3
MySQL 5.1.66 SSL接続エラーERROR 2026(HY000)
更新2 WireSharkを使用して、問題の文字列を見つけました(できたことを願っています)。 28 | 9.582638 | 192.168.18.128 | 192.168.18.129 | MySQL Response Error 1043 そして、エラーは(ドキュメントによると)です: Error: 1043 SQLSTATE: 08S01 (ER_HANDSHAKE_ERROR) Message: Bad handshake 以下は、2つの場合のWireSharkのスクリーンショットです。 Windows 8(成功)からの接続: CentOSからの接続(失敗): なぜこれが起こるのですか? 更新 興味深いの通知: 私は成功したのWindows 8を使用してマスターDBに接続している(192.168.18.1)ため、マスター上のssluserの設定を変更することで、192.168.18.1ホストは-変更を加えた:からREQUIRE SSLへREQUIRE X509。ただし、これは、スレーブからマスターへの接続の場合には機能しません。 CentOS-6.3でSSLレプリケーションの問題に直面しました。OpenSSLを使用してクライアント証明書とサーバー証明書の両方を作成していますが、クライアント証明書とサーバー証明書の両方が同じCAによって署名されています。 Server IP: 192.168.18.128 Slave IP: 192.168.18.129 MySQL version 5.1.66 SSL MySQLヘルプページの「MySQLのSSL証明書とキーの設定」セクションを使用して受け取ったすべての証明書。 サーバーのmy.cnfファイル: [mysqld] ssl-key=/etc/mysql/certs/server-key.pem ssl-cert=/etc/mysql/certs/server-cert.pem …
37 mysql  replication  ssl 

4
ライブデータベースでpg_dumpを実行すると、一貫したバックアップが作成されますか?
常に変更されている3GBのデータベースがあり、サーバーを停止せずにバックアップを作成する必要があります(Postgres 8.3)。 pg_dumpは5分間実行されます。プロセス中にデータが変更された場合はどうなりますか?一貫したバックアップを取得できますか?災害がいつ発生するかを知りたくありません。 Postgresのドキュメントhttp://www.postgresql.org/docs/8.3/static/app-pgdump.htmlはこれについて何も述べていません。
37 postgresql 

8
選択結果をcsvファイルに書き込む
SELECTクエリの結果をcsvファイルに書き込む必要があります。SQL Server 2008 r2でT-SQLを使用してどのように実行できますか?SSISで実行できることは知っていますが、何らかの理由でこのオプションはありません。 以下の記事で推奨されるprocを使用しようとしましたが、procを実行すると、このprocで呼び出されるsys.sp_OACreateおよびsys.sp_OADestroyを実行できないというSQLのエラーが発生します。 これらのコンポーネントを有効にする方法を知っていますか、T-SQLを使用してファイルに書き込むより良い方法を知っていますか? 前もって感謝します。

8
SQL Serverエージェントのジョブと可用性グループ
SQL Server 2012可用性グループでスケジュールされたSQL Serverエージェントジョブを処理するベストプラクティスを探しています。たぶん何かを見逃したかもしれませんが、現在の状態では、SQL Server Agentはこの優れたSQL2012機能と実際には統合されていないと感じています。 スケジュールされたSQLエージェントジョブにノードの切り替えを認識させるにはどうすればよいですか?たとえば、1時間ごとにデータをロードするジョブをプライマリノードで実行しています。プライマリがダウンした場合、プライマリになったセカンダリでジョブをアクティブにするにはどうすればよいですか? セカンダリで常にジョブをスケジュールすると、セカンダリは読み取り専用であるため失敗します。

5
句のない巨大なDELETE FROM <table>を高速化する方法
SQL Server 2005を使用します。 where句のない巨大なDELETE FROMを実行しています。基本的にTRUNCATE TABLEステートメントと同等です-TRUNCATEの使用が許可されていないことを除きます。問題は、テーブルが巨大である-1000万行であり、完了するまでに1時間以上かかることです。以下なしで高速化する方法はありますか? 切り捨ての使用 インデックスを無効化または削除しますか? t-logはすでに別のディスクにあります。 どんな提案も歓迎します!

6
SQL Serverで可能な限り最小のバックアップ
毎日、WAN経由でSQL Serverバックアップを出荷しています。永久に時間がかからないように、これらのバックアップのサイズを最小化する必要があります。 バックアッププロセスに少し時間がかかるかどうかは気にしません。現状では、30ギガの圧縮バックアップをWAN経由で移動する必要があり、10時間以上かかります。 毎日のより小さなバックアップを取得する必要がある2つのオプションがあります。 ログ配布。これは、DRプロセスを再構築する必要があることを意味します。 データベースから情報を取り除き、反対側で再構築します(非クラスター化インデックスを削除し、クラスター化インデックスを100%でパックします-反対側で再構築します) 両方とも、私たちの側からかなりの量の作業を伴います。SQL Server 2008 proを使用しています。すべてのバックアップが圧縮されています。 オプション(2)と同等のバックアップサイズを提供できる商用製品はありますか? そこにあるの包括的な私たちは(2)を達成することができますそこにスクリプトが?(インデックス付きビュー、フィルター処理されたインデックス、外部キーなどの処理)

4
データベース内のすべての列名をリストまたは検索するにはどうすればよいですか?
データベースにある列の名前の文字列を検索したい。 私はメンテナンスプロジェクトに取り組んでおり、扱っているデータベースの一部には150を超えるテーブルがあるため、これをすばやく行う方法を探しています。 おすすめは何ですか?

10
データベースの依存関係を追跡するにはどうすればよいですか?
内部アプリケーションが数年にわたって進化するにつれて、人々はもはや関連性がなくなったと考え、カリングしたいと考えているテーブルがいくつかあることに気付くでしょう。SQL環境内で、そしておそらくSSISのようなものに進むために、データベースの依存関係を識別するための実用的な方法は何ですか? 私は次のようなかなり残忍な選択肢が取られている場所で働いてきました: 最初にドロップし、後で質問します(存在しないテーブルを抽出しようとすると、データウェアハウスのビルドを強制終了できます) 最初に権限を削除し、エラーが報告されるまで待機します(障害が正しく処理されない場合、サイレントバグが発生する可能性があります) SQL Serverには、そのインスタンス内の依存関係を追跡するツールが付属していることを感謝していますが、異なるインスタンスにデータベースがある場合、これらは苦労しているようです。「この列はどこで使用されますか?」などの質問に答えるなど、依存関係の照会を簡単にするオプションがありますか?「このストアドプロシージャのこの他のサーバーでオーバー」または「このSSISパッケージでオーバー」などの回答がありますか?

2
PostgreSQL EXCLUDE USINGエラー:データ型整数にはデフォルトの演算子クラスがありません
PostgreSQL 9.2.3では、この単純化されたテーブルを作成しようとしています。 CREATE TABLE test ( user_id INTEGER, startend TSTZRANGE, EXCLUDE USING gist (user_id WITH =, startend WITH &amp;&amp;) ); しかし、私はこのエラーを受け取ります: ERROR: data type integer has no default operator class for access method "gist" HINT: You must specify an operator class for the index or define a default operator class …

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