データベース管理者

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

2
MySQL 5.5でPostgreSQLのような部分インデックスを作成するには
大きなデータがあり、一度に選択するデータの間隔が小さいので、選択は常に順序どおりになります。私はそのような目的をターゲットにしたMySQLの部分インデックスのようなPostgreSQLを実装しようとしています。部分一意制約が必要な制約と同じかどうかはわかりません。 PostgreSQL 9.4のコード CREATE UNIQUE INDEX dir_events ON events (measurement_id) USING btree (eventBody) WHERE is_active; MySQLでのypercubeの部分インデックスの試行 CREATE UNIQUE INDEX dir_events [index_type] -- TODO what here? ON events (measurement_id, is_active) [index_type] -- TODO what here? MySQL 5.5などでPostgreSQLのような部分インデックスをどのように作成できますか?
9 mysql  index 

1
最高実行クエリを確認/知る方法
データベースで最も実行回数の多いクエリの統計を収集したいと思います。 そのため、私はクエリを追跡する方法を知っている必要があります。これにより、大きなDBがあるため、ビューまたはマテリアライズドビューを作成して、最も実行回数の多いクエリの結果をキャッシュできます。

6
Redshiftでの次元モデリングとETL
私はデータウェアハウスの将来の代替品として、AmazonのRedshiftデータベースを調査しています。私の経験は常に次元モデリングとRalph Kimballの方法を使用してきたので、Redshiftが自動インクリメント列のシリアルデータ型などの機能をサポートしていないのを見るのは少し奇妙でした。 ただし、スタースキーマ用にRedshiftを最適化する方法についてのAWSビッグデータブログからのこの最近のブログ投稿があります:https : //blogs.aws.amazon.com/bigdata/post/Tx1WZP38ERPGK5K/Optimizing-for-Star-Schemas -Amazon-Redshiftでインターリーブされたソーティング Redshiftでスタースキーマをロードするためのベストプラクティスは何ですか?これがRedshiftのドキュメントで解決されていません。 私はS3からステージングテーブルにファイルをインポートし、SQLを使用してルックアップなどの変換を行い、宛先テーブルに挿入する前に代理キーを生成することに傾倒しています。 これは他の人が現在行っていることですか?これを簡単にするためのお金の価値があるETLツールはありますか?

1
複数のカスケードパスを使用できないのはなぜですか?
複数のカスケードパスについて多くの質問が出されていることがわかります。例えば: /programming/851625/foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths /programming/6065501/multiple-cascade-delete-path-in-many-many-relationship-ef-4-1 /programming/27613117/introducing-foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths-s ただし、私が見て理解していることから、関連するマスターレコードの削除の1つの条件だけでなく、多くの子レコードを削除することはまったく問題ありません。 質問では、SQL Serverがこれを防止して安全を確保しようとしていると言われていますが、複数のカスケードパスがある場合に何が問題になるのか、安全にするためにどのような問題が発生しないのかはわかりません。 誰かが私に分かりやすく簡単な言葉で、できれば複数のカスケードパスの場合に問題が発生する可能性のある例を使用して説明できることを願っています。

2
Postgres 9.3でのjson_object_agg()の実装
json_object_agg()Postgres 9.4 の機能が必要な気がしますが、9.3からのアップグレードは今のところできません。9.3でやりたいことを行う方法はありますか?これが私のシナリオです。click_activity次のようなデータのテーブルがあります user | offer | clicks -----|-------|-------- fred |coupons| 3 fred |cars | 1 john |coupons| 2 しかし、これを次のように変えたいと思います:(ユーザーごとのアクティビティを集計します) user | activity -----|---------- fred | {"coupons": 3, "cars": 1} john | {"coupons": 2} json_object_agg()Postgres 9.4 の機能はこれを完全に行うと思います、私が呼ばなければならないのは select user, json_object_agg(offer, clicks) from click_activity group by 1 9.3でこれを行う方法はありますか?ありがとうございました!

3
PostgreSQLクエリで返される不明な型
次のクエリは機能します。 SELECT a, b FROM unnest(ARRAY[(1,2), (3,4)]) AS t(a integer, b integer); a b _ _ 1 2 3 2 ただし、次のような別の列タイプを使用することはできませんでしたvarchar(255)。 SELECT a, b FROM unnest(ARRAY[(1,'hello'), (3,'world')]) AS t(a integer, b varchar(255)); ERROR: 42804: function return row and query-specified return row do not match DETAIL: Returned type unkown at ordinal …

2
少量のデータでパーティション化するときに現実的なクエリプランを取得する
パーティション分割を使用して、ロックのためにOLTPシステムエクスペリエンスがブロックされる量を減らし、パーティションIDに基づいて作業テーブルを100個のパーティションに分割します。ただし、テスト中に、実行プランが予想したとおりに選択されていないことがわかりました。 テストシナリオは、300,000件の連絡先レコード(各連絡先のデータは2つのテーブルに分割されています)を持つ単一の顧客であり、すべて単一のパーティションに存在し、顧客のパーティションで500の特定の行を検索するクエリがあります。ハッシュ一致のようなものが計画のかなり早い段階で不要な299,500を排除することを期待しますが、SQL Serverはテーブル全体のレコード数を取得し、すべてのパーティションで平均化することを選択しているようです。処理する多くのレコード。これにより、ネストされたループが選択され、プロセスのかなり後の方で不要なレコードが削除されます。通常、これには、パーティション分割されていないテーブルに対する同じクエリの9倍の時間がかかります。 奇妙なことに、selectにオプション(再コンパイル)を追加すると賢明な計画が得られますが、なぜこれが違いを生むのか途方に暮れています。これはストアドプロシージャではありません。テスト中に、各テストを実行する前にプロシージャキャッシュをクリアします。 この動作は、関係するテーブルが分割されていない場合には見られません。つまり、推定される行数が実際の数と一致するため、毎回適切なプランが選択されます。 この動作についての洞察はいただければ幸いです。 スキーマのセットアップ: USE [Scratch] GO CREATE SCHEMA part GO CREATE PARTITION FUNCTION [ContactPartition](smallint) AS RANGE LEFT FOR VALUES (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, …

2
mysqlパスワードハッシュが内部的にスター(アスタリスク)で保存されるのはなぜですか?
私はいくつかのmysqlの内部を読んでいましたが、私のmysqlシェルでmysql.userテーブルを通過すると、 mysql> select * from mysql.user limit 1 \G *************************** 1. row *************************** Host: localhost User: root Password: *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B パスワードは明らかにハッシュ化されていますが、なぜスター(アスタリスク)で始まるのですか?

4
ドメインコントローラーにSQLサーバーをインストールしない理由が必要です
私は小さな会社のシステム管理者です。ここで、Windows Server 2008 R2をロールアウトすることを検討します。Active Directoryの実装を計画しています。また、RDMSをSQL Server 2000からSQL Server 2014にアップグレードしたいと考えています。 組織の規模により、1台のサーバーしか購入できないため、同じマシンにADとSQL Server 2014の両方を実装する予定です。ただし、マイクロソフトでは、SQL Server 2014をドメインコントローラーにインストールしないことをお勧めします。 理由は確認しましたが、何が問題なのかわからないので、以下の質問に誰かが答えてくれればとても助かります。 ローカルサービスアカウントのドメインコントローラーでSQL Serverサービスを実行することはできません。→ドメインユーザーアカウントのドメインコントローラーでSQL Serverを実行するとどうなりますか? SQL Serverがコンピューターにインストールされた後、コンピューターをドメインメンバーからドメインコントローラーに変更することはできません。ホストコンピュータをドメインコントローラに変更する前に、SQL Serverをアンインストールする必要があります。→SQL Server 2014をインストールする前にサーバーをドメインコントローラーに昇格させる予定です。メンバーサーバーは私たちの唯一のサーバーであるため、プロモートを解除する予定はありません。私たちの計画は間違っていますか? SQL Serverがコンピューターにインストールされた後、コンピューターをドメインコントローラーからドメインメンバーに変更することはできません。ホストコンピューターをドメインメンバーに変更する前に、SQL Serverをアンインストールする必要があります。→これが私たちの唯一のサーバーであるため、メンバーサーバーへの昇格は予定していません。私たちの計画は間違っていますか? SQL Serverフェールオーバークラスターインスタンスは、クラスターノードがドメインコントローラーである場合はサポートされません。→フェイルオーバークラスターの設置は予定していないので問題ないと思います。私たちは間違っていますか? SQL Serverセットアップでは、読み取り専用ドメインコントローラーでセキュリティグループを作成したり、SQL Serverサービスアカウントをプロビジョニングしたりすることはできません。このシナリオでは、セットアップは失敗します。→サーバーが1つしかないので、読み取り専用のドメインコントローラーにはならないので問題ないと思います。私たちは間違っていますか? 実際、(1)をクリアすれば、SQL Server 2014をドメインコントローラーにインストールできます。 すべての文章をお読みいただきありがとうございます。誰かが答えてくれるといいのですが。

1
PostgreSQLデータベースへのリモートアクセスのタイムアウトオプションはありますか?
私が働いている経由でリモートのPostgreSQLデータベースにpgAdminでIII。pgAdminで何もせずにそれほど長くない期間(たとえば10〜15分)が経過すると、接続は自動的に期限切れになります。そのため、再接続するかどうかを尋ねるエラーメッセージが表示されます。これには約10秒かかります。データベース構造が崩れるため、以前開いていたスキーマを再度開く必要があります。 タイムアウトパラメータをどこかに変更して、接続の有効期限が長くなるのを防ぐ方法はありますか?

4
SQL Serverデータファイルの空き領域の監視
SQL Serverデータベースでの自動拡張操作を回避するために、mdf / ndfファイルを手動で大きなサイズに変更しました。ファイルの方が大きいので、ディスクパーティションの空き領域はほとんどなく、システム管理者は、領域が不足していることを警告し続けます。 サイズを変更したため、データファイルには多くの空き領域がありますが、ファイルサイズ/ディスクの空き領域を確認しても気付かないでしょう。 データファイルの実際の使用率を監視するにはどうすればよいですか?私は、perfmonカウンタを使用したいと思います。ファイルが実際にスペースを使い果たすと、SQL Serverは十分なスペースを割り当てることができず、クラッシュするだろうと私は確信しています。

1
1つだけではなく、PostgreSQLで多くのスキーマを使用することの長所と短所?
(PostgreSql 9.4に裏打ちされた)大規模なSAASアプリケーションの場合、300,000を超えるアカウントがあり(そして成長中)、アカウントごとにスキーマを使用してデータをパーティション分割することと、すべてのデータを1つのスキーマに入れ、外部キーを使用することの長所と短所は何ですか。クエリで分割しますか? 以前、多くのスキーマを操作するときにpg_dumpが非常に遅くなっていましたが、それが今日のケースかどうかはわかりません。また、データベース構造の変更はすべてのスキーマで行う必要があることも認識しています。そしてプラス面では、スキーマをある物理サーバーから別の物理サーバーに移動するのは簡単です。また、スキーマをバックアップから復元することはもちろんです。データをそのようにパーティション分割することは理にかなっています。 それで、私が見逃している長所と短所は何ですか?

1
名前のないチェック制約をPostgresQLテーブルにどのように削除しますか?
PostgresQLテーブルを作成しましたが、名前のないチェック制約を列の1つに追加しました。 CREATE TABLE FOO ( id serial primary key, price_range smallint CHECK (price_range > 0), url varchar(255) ); この制約を削除したいのですが、どうすればいいのかわかりません。典型的なALTER TABLE ... DROP CONSTRAINT ...は必要ですが、constraint_name持っていません。 私はここに答えがあることを知っていますが、そこの答えに従ってチェック制約の名前を決定しようとしたとき: SELECT * FROM information_schema.constraint_table_usage WHERE table_name = 'your_table' 返されたのは、列のチェックではなく、主キー制約を参照するconstraint_nameエントリの単一の制約だけでした。だから私が何かを逃していない限り、その答えは私を助けませんでした。foo pkeyprice データを失わずにこの制約を削除するにはどうすればよいですか? ありがとう!

2
データベースがオフラインになったのはいつですか
いくつかのSQLデータベースがいつオフラインになったかを知る方法を見つけようとしています。 ログを確認しましたが、そのような情報は見つかりませんでした。さらに、デフォルトのトレースが有効になっていません。 以前はオフラインでDBAがいましたが、電子メールや書面によるコミュニケーションはなかったという情報があります。 これに関する情報を見つけることができますか? 提案してください、ありがとう!

3
SQL Server Management Studio 2014バックアップ-プロパティデバイスの設定エラー
最近、ローカルSQL Serverをバージョン2014にアップグレードしました。 これにより、SSMS 2014もインストールされました。SQLServer Management Studio 2014を使用してバックアップ(ローカルとリモートの両方、サーバーバージョン2008〜2014)を作成すると、次のエラーが発生します。 このアクションを実行するには、プロパティデバイスを設定します。 ドロップダウンで[ディスク]を選択し、バックアップのパスも選択しました。パスはサーバー上に存在し、このパスに対する完全な権限を持っています。 同じ設定で古いSQL Server Management Studio 2012を使用すると、バックアップは問題なく機能します。 T-SQLを使用しても機能しますBACKUP DATABASE SOMEDATABASE TO DISK = 'D:\SomeDir\SomeDataBase.bak' WITH COMPRESSION したがって、問題は管理ツールバージョン2014に固有のものである必要があります。インターネットで見つけた唯一の解決策は、パスが見つからなかったことによるものでしたが、私には当てはまりません。 誰かがこの問題を経験したり解決したりしていますか? 編集:スクリーンショットを追加(UIはドイツ語) 翻訳: -Vollständig: Full -Datenträger:Disk メディアとセキュリティのオプションは変更されていません。マスターデータベースは例として取り上げただけで、他のすべてのデータベースで発生します。 2015年7月21日更新 この問題は、ドイツ語版のWindowsで英語の言語パックを使用していて、ドイツ語版のSQL Server 2014インストールを使用していることに関連しているようです。Windowsの表示言語がドイツ語に設定されている場合、問題は解消されます。Windowsの表示言語が英語に設定されている場合、問題が再発します。 すべての貢献に感謝します。

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