データベース管理者

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

6
Oracleデータベースの推奨RAID構成は何ですか?
RAID(安価なディスクの冗長アレイ)には、さまざまな構成(RAID-0、RAID-1 ...)が付属しています。Oracleデータベースをインストールするときにセットアップして使用する推奨RAID構成は何ですか。データベースは、主にデータウェアハウスとして使用されます。

4
PostgreSQL:生成された列
PostgreSQLは生成列をサポートしていますか?仮想列とも呼ばれます。私はコラムについて話していません。IDENTITY この注目すべき機能に関する情報は見つかりませんが、SQL ServerおよびMariaDB&MySQLの最新バージョンで利用できることは知っています。 この機能はSQL:2003標準で言及されており、2006年頃にPostgreSQLフォーラムで議論が行われましたが、この問題に関して実質的なものは見つかりません。 SOについてはいくつかの議論がありますが、現在はかなり古いため、古くなっている可能性があります。

1
SQL Server 2016の不適切なクエリプランにより、1週間に1回DBがロックされる
1週間に1度、過去5週間、ほぼ同じ時刻(早朝、人々が使用し始めたときのユーザーアクティビティに基づく場合があります)、SQL Server 2016(AWS RDS、ミラーリング)は多くのタイムアウトを開始しますクエリ。 すべてのテーブルの統計を更新すると、常にすぐに修正されます。 初回以降、すべてのテーブルのすべての統計を(毎週ではなく)毎晩更新しましたが、それでも起こりました(更新統計が実行されてから約8時間後ですが、毎日実行されるわけではありません)。 前回、クエリストアを有効にして、どの特定のクエリ/クエリプランであるかを確認できるかどうかを確認しました。私はそれを1つに絞り込むことができたと思います: そのクエリを見つけた後、この頻繁に使用されないクエリから欠落している推奨インデックスを追加しました(ただし、頻繁に使用される多くのテーブルに影響します)。 不適切なクエリプランは、インデックススキャンを実行していました(1万行のみのテーブルで)。同じスキャンを実行するために使用されたミリ秒単位で返された他のクエリプラン。新しいインデックスを作成した後の最新のクエリプランは、シークのみを行います。しかし、そのインデックスがなくても、99%の時間で数ミリ秒以内に戻りましたが、毎週、40秒以上かかりました。 タイムアウトする悪いもの:http : //brentozar.com/pastetheplan/?id=rymaWt56e タイムアウトしない以前の計画:http : //brentozar.com/pastetheplan/?id=HyN7ftcpe 新しいインデックスを使用した最新の計画:http : //brentozar.com/pastetheplan/?id=ryLuGKcag これは、2012年からSQL Server 2016に移行した後に発生し始めました。 DBCC CHECKDBはエラーを返しません。 新しいインデックスは問題を修正し、再び悪い計画を二度と選択しないようにしますか? うまく機能する計画を「強制」する必要がありますか? これが別のクエリ/プランで発生しないことを確認するにはどうすればよいですか? これはより大きな問題の症状ですか? 追加したばかりのインデックス: CREATE NONCLUSTERED INDEX idx_AppointmetnAttendee_AttendeeType ON [dbo].[AppointmentAttendee] ([UserID],[AttendeeType]) CREATE NONCLUSTERED INDEX [idx_appointment_start] ON [dbo].[Appointment] ( [ProjectID] ASC, [Start] ASC ) INCLUDE ( [ID], …

1
postgresql.confファイルの「max_wal_size」および「min_wal_size」パラメーターのデフォルト値を理解する
デフォルト値は、ドキュメントmin_wal_sizeおよびmax_wal_sizeパラメータによると: For max_wal_size:The default is 1 GB For min_wal_size:The default is 80 MB 次に、データベース構成から次のパラメーターを探します。 select name, setting, unit from pg_settings where name in ('min_wal_size', 'max_wal_size') 結果を与える: name | setting | unit ---------------------------------- max_wal_size | 64 | min_wal_size | 5 | 2つの質問があります。 1)これらの値がドキュメントに示されているデフォルト値と一致しないのはなぜですか?構成設定をまったく変更しませんでした。 2)unitこれらのパラメーターの列が空/ NULLである理由 この場合、64と5の値はどういう意味ですか?MB?GB?または何? work_memすべてが明確な場合、これがパラメーターの例とは異なる理由 : name | setting …

1
長いPL / pgSQLコード行を複数行に分割するにはどうすればよいですか?
PL / pgSQLコードの長い行を複数行に分割する方法はありますか?私のコンテキストは、次のようにテーブルに挿入を記録するトリガー関数です。 INSERT INTO insert_log (log_time, description) VALUES ( now() , 'A description. Made up of 3 semi long sentences. That I want to split, in the code, not in the log table, over 3 lines for readability.' );

2
個別選択を高速化する方法は?
私はいくつかの時系列データで単純な選択を区別しています: SELECT DISTINCT user_id FROM events WHERE project_id = 6 AND time > '2015-01-11 8:00:00' AND time < '2015-02-10 8:00:00'; そして、それは112秒かかります。クエリプランは次のとおりです。 http://explain.depesz.com/s/NTyA 私のアプリケーションは、多くの異なる操作を実行する必要があり、このようにカウントします。この種のデータを取得するより速い方法はありますか?

1
Postgresデータベースの復元:pg_restore -vs-ちょうどpsqlを使用して
pg_dump(プレーンテキスト形式)を使用してPostgresデータベースをダンプし、psql(-fオプション付き)を使用して単純に復元します。 どちらが質問を請います:pg_restoreを使用しないことで何かが欠けているのpsqlですか? pg_dumpパラメーターを使用して、トリガーの無効化などのオプションを制御できます。それでは、何のpg_restoreために使われますか?非プレーンテキストダンプフォーマット?

2
JSONBを使用したPostgreSQLの参加
私はこのSQLを持っています: CREATE TABLE test(id SERIAL PRIMARY KEY, data JSONB); INSERT INTO test(data) VALUES ('{"parent":null,"children":[2,3]}'), ('{"parent":1, "children":[4,5]}'), ('{"parent":1, "children":[]}'), ('{"parent":2, "children":[]}'), ('{"parent":2, "children":[]}'); それは与えるだろう: id | data ----+-------------------------------------- 1 | {"parent": null, "children": [2, 3]} 2 | {"parent": 1, "children": [4, 5]} 3 | {"parent": 1, "children": []} 4 | {"parent": …

1
インデックス付きビューを介してのみ関連する2つのテーブルのデッドロックを解決する
デッドロックが発生している状況があり、犯人を絞り込んだと思いますが、それを修正するために何ができるかはよくわかりません。 これは、SQL Server 2008 R2を実行している運用環境です。 状況を少し簡略化して表示するには: 以下に定義する3つのテーブルがあります。 TABLE activity ( id, -- PK ... ) TABLE member_activity ( member_id, -- PK col 1 activity_id, -- PK col 2 ... ) TABLE follow ( id, -- PK follower_id, member_id, ... ) member_activityテーブルには主キーのように定義する化合物を持っているmember_id, activity_id私は今まで、そのテーブル途中その上でデータを検索する必要があるため、。 また、非クラスタ化インデックスがありfollowます: CREATE NONCLUSTERED INDEX [IX_follow_member_id_includes] ON follow ( …

1
postgreSQLのバージョン管理ツール[終了]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、データベース管理者のStack Exchangeのトピックになるようにします。 5年前に閉鎖されました。 誰でもPostgreSQL用のWindowsベースのバージョン管理ツールを提案できますか。 よろしく、GP

5
データベーストランザクションとロックの正確な関係は何ですか?
これは、私の知識を増やすという精神で尋ねられた謙虚な質問です。親切に対応してください。 長年のアプリケーション開発者として、私はあるレベルでトランザクションとは何かを知っています(私は常にそれらを使用しています)。トランザクションの分離レベルはさておき、高レベルでは、トランザクションは作業ブロックを完全に完了させるか、まったく完了させず、他のデータベース変更アクティビティからある程度の分離を可能にします。 また、(さまざまなデータベースで)ロックが何であるか、または少なくとも1つの動作を知っています(何らかの方法でテーブルを明示的にロックした場合、他のプロセスまたはスレッドはそのテーブルについて何も更新できません)。 私がはっきりとはっきりしていないのは、さまざまなデータベースで、行またはテーブルを明示的にロックするときに、データベースのトランザクション機能で使用されるものとまったく同じ構造を使用して、トランザクションを適切に機能させることですか? つまり、トランザクションがアトミックで分離されるためには、何らかのロックを行わなければならないことがわかります。このトランザクションによって開始された、トランザクションに隠されたロックは、さまざまなデータベースが、SELECT FOR UPDATE明示的なLOCKコマンドなどの構造を介してアクセスできるのと同じ種類のロックですか?または、これらの2つの概念は完全に異なりますか? 繰り返しますが、この質問の素朴さをおaびします。より基本的な情報源を指摘できてうれしいです。




3
BONYEANをTINYINT(1)よりも使用する利点は何ですか?
MySQLマニュアルから、次のように書かれています: ブール、ブール これらのタイプはTINYINT(1)の同義語です。値ゼロは偽と見なされます。ゼロ以外の値は真と見なされます。 0デフォルト値としてBOOLEAN列を作成しました。次に、値をに更新します2。論理的には、私は、MySQLはどちらか受け入れることを期待する0か1、それはboolean型であるため。しかし、MySQLはエラーを発行したり、アップデートを実行することを妨げたりしませんでした。 BOOLEANがTINYINT(1)とまったく同じように機能する場合、TINYINT(1)を使用するかBOOLEANを使用するかに違いはありますか?
16 mysql  datatypes 

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