データベース管理者

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

1
階層に関係なくMDX Query for RANK
グルーパーを事前に指定せずに、SSASキューブ(SSAS 2012)に計算を追加して、そのグルーパーの他のすべてのメンバーに対する現在のメンバーの相対ランクを表示したいと考えています。 たとえば、Efficiency$$ /時間として定義されている計算がすでにあるとします。 Efficiency Rank現在のメンバーが設定されている中での現在のメンバーの相対的な位置を教えてくれる計算も追加したいと思います。 私が試した構文は RANK([Measures].[Efficiency].CurrentMember, [Measures].[Efficiency]) 私が気づくのは間違っています。 これに関するガイドをどこにも見つけることができないようで、比較的一般的なビジネス要件であると思われるため、確立されたベストプラクティスまたはパターンがあることを願っています。

1
バックアップからのトランザクションレプリケーションの初期化
レプリケーションのパブリケーションを設定するときに、バックアップからの初期化を許可するオプションがあります。私たちは数年前から複製データベースを作成しており、常にバックアップから初期化してきましたが、このフラグを設定したことはありません(数日前に初めて気づきました)。複製は常に問題なく機能してきました。 これを使用する必要があることを説明するヒットがたくさん見つかりましたが、理由を説明するものはありません。 これが実際に何をしているのか誰かが理解していますか?私の観点から、それは必要ではないようですが、私は何かを逃している必要があると考えています。

4
(変数値に基づいて)条件付きでpsqlスクリプトを停止する方法は?
次の例を考えてみましょう(psqlスクリプトの最初から)。 \c :db_to_run_on TRUNCATE the_most_important_table; -- tried to avoid similarities to anything that exists out there これをコマンドで実行すると psql [connection details] -v db_to_run_on=\'dev_database\' その後、それは実行され、ユーザーは満足しています。しかし、もし彼が特定することを決定した場合はどうなります-v db_to_run_on=production_databaseか?(人々がrm -rf / # don't try this at home!!!たまに実行するように、これが起こる可能性があると仮定しましょう。)うまくいけば、そのテーブルの新しいバックアップがあるでしょう... したがって、問題が発生します。スクリプトに渡された変数を確認し、その値に基づいて以降の処理を停止する方法は?
10 postgresql  psql 

1
MySQLパーティショニング:パーティションの数と各パーティションのサイズの間にパフォーマンスのトレードオフはありますか?
効率的に分割したい大きなテーブル(数億行)があります。私の質問は、パーティションサイズとパーティション数の間にトレードオフがあるかどうかです。私が理解している限り、クエリは(ほとんどのクエリに対して)クエリに適用可能なパーティション内のみを検索する必要があるため、パーティションで使用される列に対するほとんどのクエリはより高速になります。したがって、効率を最大化するには、大きなテーブルを最大数のパーティションに分割する必要があるので、各パーティションをできるだけ小さくする必要があります。MySQLの場合、これは1024パーティションを意味します。しかし、多数のパーティションを持つことにはパフォーマンス上の欠点がありますか?そうであれば、どのようにして最適なパーティション数を見つけるのでしょうか? 注:stackoverflowについては多少似た質問がすでにありますが、(私の観点から)マークを逃す答えは1つだけです。だから私は私自身の方法で質問を述べます...うまくいけばそれはより明確です

1
行の変更時に日付フィールドと時間フィールドを更新するトリガーを作成するにはどうすればよいですか?
次の構造を持つtesttableデータベース内にテーブルを作成しましたtestbase。 product_no (int, not null) product_name (varchar(30), not null) price (money, null) expire_date (date, null) expire_time (time(7), null) ただし、変更された(または新しい情報で更新された)特定の行を更新し、変更日をexpire_dateフィールドに、変更時間をフィールドに記録するようにトリガーを作成するにはどうすればよいexpire_timeですか?(またはこれが可能かどうか)


4
サブクエリに正確に1つの異なる結果と指定された値があるかどうかを簡潔に確認するにはどうすればよいですか?
私は次のように書いていることに気づきました: select 'yes' where exists(select * from foo where val=1) and not exists(select * from foo where val<>1); 読みやすさを犠牲にせずにもっと簡潔な方法があるかどうか疑問に思っています。 回答として投稿している方法を1つ見つけましたが、完全に満足しているわけではなく、代替案に非常に興味があります。 この場合valは一意ですfoo-重複はありません

1
モンゴは私のコレクションを見つけることができません
私のmongodbサーバーには、villageContentsという名前のデータベースがあります tablebusinessという名前のコレクションがあります。 モンゴを走らせたら MongoDB shell version: 2.0.7 connecting to: test > 「テスト」って何なんだろう。そこにはtestという名前のデータベースはありません。 実行してみました > villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"}) Wed Aug 15 09:28:28 ReferenceError:is not defined (shell):1 > 実行してみました > test.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"}) Wed Aug 15 09:29:13 ReferenceError: test is not defined (shell):1 > 私は何を間違えましたか? それから私はやった db.villageContents.tablebusiness.ensureIndex({"LatitudeLongitude" : "2d"}) 何も表示されません。インデックスも追加されません。 何が問題なのですか?
10 mongodb 

4
2つのテーブル(異なるサーバー上)がまったく同じデータを持っているかどうかの確認
したがって、SQL Serverをホストしている会社が、運用サーバーからバックアップサーバーへのレプリケーションに問題を抱えているようです...いくつかのテーブルは正しくレプリケートされていると思います。複製は毎日(時間外に)行われます。 同じテーブルの2つを比較する方法はありますか。1つはバックアップからで、もう1つは本番サーバーからです。昨夜のレプリケーションが機能したかどうかを確認できますか? 私が見つけることができた唯一の方法は、両方のサーバーで次のクエリを実行し、結果が一致するかどうかを確認することでした。 SELECT CHECKSUM_AGG(BINARY_CHECKSUM(*)) FROM ( SELECT * FROM table_to_compare ) t1 上記のコードを使用すると、チェックサム値が同じであるため、テーブルは正常に複製されたようですが、この方法の信頼性はわかりません。 これをチェックするより良い方法を知っている人はいますか? Windows Server 2008コンピューターでSQL Server 2008を実行しています。 ありがとう。

2
文字列から数値以外の文字を削除するにはどうすればよいですか?
ユーザーがボックスに検索語を入力すると、その値がストアドプロシージャに渡され、データベース内のいくつかの異なるフィールドに対してチェックされます。これらのフィールドは、常に同じデータ型であるとは限りません。 1つのフィールド(電話番号)はすべての数字で構成されているため、チェックすると、.Net CLR関数を使用して文字列からすべての非数値文字が削除されます。 SELECT dbo.RegexReplace('(123)123-4567', '[^0-9]', '') 問題は、この関数が次のエラーで突然動作を停止することです。 メッセージ6533、レベル16、状態49、行2 AppDomain MyDBName.dbo [runtime] .1575はエスカレーションポリシーによってアンロードされ、 アプリケーションの一貫性。重要なリソースへのアクセス中にメモリ不足が発生しました。 System.Threading.ThreadAbortException:タイプの例外 'System.Threading.ThreadAbortException'がスローされました。 System.Threading.ThreadAbortException: このエラーについてMSDNに投稿された提案を試しましたが、まだ問題が発生しています。現時点では、64ビットサーバーに切り替えることはできません。 サーバーを再起動すると、サーバーが保持していたメモリが解放されることは知っていますが、本番環境では実行可能なソリューションではありません。 T-SQLのみを使用してSQL Server 2005で文字列から数値以外の文字を取り除く方法はありますか?

4
16 GBのRAMを搭載したQuadCoreマシンでMySQLを最大限に活用する方法は?
科学的データ分析のためにワークステーションでMySQL 5.5サーバーを実行していますが、パフォーマンスを最大限に活用するためにMySQLを構成する方法を考えています。私が通常実行するクエリの種類には、10〜20のテーブルの結合が含まれ、非常に長く実行できます。1〜数分は例外ではありません。同時にデータベースにアクセスするユーザーはごくわずかです(最大5人)。2.2 GHzのデュアルコアと4 GBのRAMを搭載したLenovo Thinkpad T61から、コンポーネントを手動で選択した次の新しいマシンにサーバーを移動しました。 Intel i7 3770、4x 3.4 GHz(4x3.7 GHzで稼働) Z77チップセット 16 GBのDDR3 1600 RAM Windows 7 Prof 64ビット WindowsおよびMySQLサーバーはIntel 520シリーズSSDドライブで実行されます。 最初のテスト(両方のマシンで同じクエリを実行)は、新しいテストの速度の決定的な改善を示しましたが、クエリにはまだ多くの時間がかかり、さらに向上することを期待していました。問題のクエリはかなり適切に最適化されています。つまり、すべてのテーブルには、「拡張された説明」の時点でも使用されている適切なキーがあります。 さて、現在のMySQLの設定に戻ります。最初に、MyISAMからInnodbにかなり前に移動したことを述べておきます。 my.iniの調整の一部(つまり、デフォルト設定からの逸脱): # Maximum size for internal (in-memory) temporary tables. If a table # grows larger than this value, it is automatically converted to disk # …

4
MySQLの以前のスレーブをマスターに変更し、スレーブステータス情報を削除する方法は?
マスターが失敗したマスター->スレーブ構成があります。私は古いスレーブをマスターに、古いマスターをスレーブにリセットすることができました。いいね。 私ができないように見えるのは、現在新しいマスターになっている古いスレーブのマスター情報を削除することです。そうですか: mysql> show slave status \G *************************** 1. row *************************** Slave_IO_State: Master_Host: 10.1.2.101 Master_User: replicationSlave Master_Port: 3306 ... Slave_IO_Running: No Slave_SQL_Running: No 多くのMySQLドキュメントを読みましたが、スレーブ情報をnew-masterからクリアする方法がまだ見つかりません。私はもう試した: RESET SLAVEこれらの設定はクリアされないようです。[実際には、master.infoファイルは削除されますが、メモリ設定は削除されません。下記参照。]] CHANGE MASTER TO MASTER_HOST='' これは最近廃止されたため、エラーが発生しただけです。 my.cnfそれらがプログラムで追加されたため、マスター情報がないものをチェックしています。 RESET MASTER一部のmysqlドキュメントで推奨されているため。これは、binログのみをリセットします。 内部のMySQLテーブルを調べて、クリアするフィールドが見つかるかどうかを確認します。 MySQL〜5.5.9でこれを行う適切な方法は何ですか?助けてくれてありがとう。 編集: したがって、@ RolandoMySQLDBAが暗示するようにファイルをRESET SLAVE削除することがmaster.infoわかりました。ただし、スレーブ情報を削除する前に、サーバーを再起動する必要があります。 mysqldを再起動せずにこのスレーブ情報を削除する方法はありますか?

1
全文検索でLIKEよりも少ない行が返される理由
全文検索が期待どおりに機能せず、結果リストの違いがわかりません。 ステートメントの例: SELECT `meldungstext` FROM `artikel` WHERE `meldungstext` LIKE '%punkt%' 92行を返します。たとえば、 "Punkten"、 "Zwei-Punkte-Vorsprung"、 "Treffpunkt"などの一致する行がmeldungstext列に表示されます。 「meldungstext」列にフルテキストインデックスを設定し、これを試しました。 SELECT `meldungstext` FROM `artikel` WHERE MATCH (`meldungstext`) AGAINST ('*punkt*') これは8行のみを返します。「Punkt」自体に一致する行、または「i-Punkt」のように「Punkt」と見なされると思われる単語のみを受け取ります。 次にブールモードを試しました: SELECT `meldungstext` FROM `artikel` WHERE MATCH (`meldungstext`) AGAINST ('*punkt*' IN BOOLEAN MODE) 44行を返します。meldungstext列に「Zwei-Punkte-Vorsprung」または「Treffpunkt」を含む行が表示されますが、「Punkten」の行は表示されません。 なぜこれが発生し、「完全に」機能する全文検索を設定して、where句でLIKE '%%'を使用しないようにするにはどうすればよいですか?

1
動的に作成されたテーブルデータを返すストアドプロシージャ
簡単に言えば、調査システムを備えた外部ベンダーと協力しています。システムは、新しい調査を作成し、システムが新しいテーブルを作成するときに、必ずしも次のように設計されているとは限りません。 Tables ____ Library_1 -- table for Survey 1 SurveyId int InstanceId int Q_1 varchar(50) Library_2 -- table for Survey 2 SurveyId int InstanceId int Q_2 int Q_3 int Q_4 varchar(255) テーブルはで生成されたSurveyId名前の末尾に(Library_)と質問の列がで生成されQuestionId、それの終わり(でQ_)。 明確にするために、質問は別のテーブルに格納されているため、質問IDは連続していますが、各調査で1から開始されません。質問の列は、テーブルで割り当てられたIDに基づいています。 別のシステムに送信するためにすべての調査テーブルからデータを抽出する必要があることを除いて、クエリを実行するのに十分簡単なようです。これは問題が発生する場所です。新しい調査がフロントによって追加されると、テーブルが自動的に作成されるため、アプリケーションを終了すると、他のシステムはこのタイプの構造を処理できません。彼らは消費するためにデータが一貫している必要があります。 そのため、すべてのSurveyテーブルからデータを抽出して次の形式で配置するストアドプロシージャを作成する必要がありました。 SurveyId InstanceId QNumber Response ________ __________ _______ ________ 1 1 1 great 1 2 1 …

1
PostgreSQLデータ型textとvarcharの長さなし
PostgreSQL では、次のようにデータ型文字が可変(長さ精度なし)またはテキストで列を作成できます。 ALTER TABLE test ADD COLUMN c1 varchar; ALTER TABLE test ADD COLUMN c2 text; これら2つのデータ型に違いはありますか? ドキュメントはそれについて明確ではありません。彼らが言う : 文字指定が長さ指定子なしで使用される場合、型は任意のサイズの文字列を受け入れます。 [...] さらに、PostgreSQLは、任意の長さの文字列を格納するテキストタイプを提供します。 これら2つのデータ型は同等であるようですが、明示的ではありません...これについての詳細情報? ありがとう、ニコ

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