データベース管理者

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


3
「GRANT USAGE」を削除できません
私はいくつかのものをテストしていましたが、追加しました: grant usage on statistics.* to cptnotsoawesome@localhost identified by 'password'; だから今私がするとき show grants for cptnotsoawesome@localhost; それらの1つが次のように表示されます。 Grants for cptnotsoawesome@localhost ---------------------------------- GRANT USAGE ON *.* TO 'cptnotsoawesome'@'localhost' IDENTIFIED BY PASSWORD 'somePEW-PEWstring' 今、私はそれがセキュリティ上の危険だと思うのでそれを削除したいので、私はそれをします: REVOKE USAGE ON *.* FROM 'cptnotsoawesome'@'localhost' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; しかし、それでもUSAGEがグラントリストにあることを示しています。 Grants for cptnotsoawesome@localhost ---------------------------------- GRANT USAGE ON …

6
ストアドプロシージャの実行が突然遅くなる
SQL Server 2000で発生している問題を理解しようとしています。中程度のトランザクションWebサイトでありsp_GetCurrentTransactions、customerIDを受け入れるストアドプロシージャと2つの日付があります。 現在、日付と顧客に応じて、このクエリは0〜1000行の任意の行を返すことができます。 問題:私たちが経験したことはExecution Timeout Expired、特定のクライアントがそのストアドプロシージャを実行しようとすると、突然(通常または同様の)多くのエラーが発生することです。そのため、クエリを調べてSSMSで実行すると、30秒かかることがわかります。したがって、ストアドプロシージャを再コンパイルすると、-bang-が300ミリ秒で実行されます。 私はこれについてDBAに話しました。彼は、ストアドプロシージャを作成したときにデータベースがクエリプランを作成したと言っています。彼は、そのパラメーターセットには良い計画であると言いましたが、特定のパラメーターセットをスローすると、そのデータに最適なプランではなくなるため、実行が遅くなります。 私に提示されたオプションは、問題のクエリをストアドプロシージャから、実行ごとに作成された実行プランを持つ動的SQLに戻すことです。 これは私に一歩後退したような気がし、これを回避する方法があるに違いないと感じています。この問題に対処する他の方法はありますか? ありとあらゆる回答を歓迎します。


6
SQL ServerはGREATESTとLEASTをサポートしていますか?サポートされていない場合、一般的な回避策は何ですか?
この質問を検討すると、それは必要のない多くの作業のようです。彼らは日付で範囲を拡大しようとしています。他のデータベースでは、単にgreatestandを使用しleastます。 least(extendDate,min), greatest(extendDate,max) これらを使用しようとすると、 'least' is not a recognized built-in function name. 'greatest' is not a recognized built-in function name. それはどちらの方向への拡張もカバーします。 質問の目的のために、あなたはまだ排他的な範囲置換をしなければならないでしょう。 SQL Serverユーザーがどのようにクエリパターンを実装して模倣するかleast、greatest機能するのか疑問に思っています。 PostgreSQL GREATEST/LEAST MySQL GREATEST/LEAST MariaDB GREATEST LEAST DB2 GREATEST LEAST オラクル GREATEST LEAST 条件をCASEステートメントに展開しますか、またはこの機能を有効にする拡張機能、サードパーティのアドオン、またはマイクロソフトからのライセンスがありますか?


3
別の月と年の列、または日付が常に1に設定されている日付?
私はPostgresを使用してデータベースを構築していますが、ここではmonthand によってグループ化されますが、によってグループ化されることはありyearませんdate。 整数monthとyear列を作成して使用できます。 または、month_year列を作成し、常にday1に設定することもできます。 前者は誰かがデータを見ている場合は少し単純で明確に見えますが、後者は適切な型を使用する点で優れています。

4
CHARとVARCHAR(Postgres)のインデックスパフォーマンス
この答え(/programming/517579/strings-as-primary-keys-in-sql-database)で、1つの発言が目を引きました: また、インデックスの比較を行うとき、CHARとVARCHARの間に非常に大きな違いがあることが多いことに留意してください これはPostgresに適用されますか? OracleのページCHARは多かれ少なかれエイリアスであるVARCHARと主張しているため、インデックスのパフォーマンスは同じですが、Postgresで決定的なものは何も見つかりませんでした。

3
Mongoシェルでの過去24時間の日付範囲クエリ
MongoDBデータベースプロファイラーから結果を収集するためにcronジョブを設定しています。24時間以内に結果を収集したいと思います。javascriptでmongoコマンドを実行する予定です。 質問は、Mongoシェルで、24時間前の日付範囲を見つけるためのクエリをどのように書くのですか?といった: db.system.profile.find({ "timestamp" : { $lte : <current date & time>, $gt : <date & time 24 hrs ago> } })
15 mongodb  cron 

2
/ var / lib / mysqlファイルを再初期化する方法は?
事故のため、/ var / lib / mysqlディレクトリ全体を削除しました。データベースには重要なものが何も含まれていなかったため、古いバックアップからデータベースを復元する手間を省きたいのではなく、最初からディレクトリ構造を作成します。MySQLを再インストールせずに行うにはどうすればよいですか?
15 mysql  linux  debian 

2
Postgresの高速ハミング距離クエリ
画像のハッシュを含む大規模なデータベース(16M行)があります。 妥当な時間枠で距離をハミングすることで行を検索できるようにしたいと思います。 現在、私が問題を適切に理解している限り、ここでの最良の選択肢はBK-Treeを実装するカスタムSP-GiST実装だと思いますが、それは多くの作業のように思われ、まだ実用的ではありませんカスタムインデックスの適切な実装の詳細。ハミング距離を計算すると、扱いやすい十分です、と私はやるけれども、Cを知っています。 基本的に、ここでの適切なアプローチは何ですか?ハッシュの特定の編集距離内で一致を照会できる必要があります。私が理解しているように、等しい長さの文字列を持つレーベンシュタイン距離は機能的にハミング距離です。そのため、そこからインデックスを作成する明確な方法はありませんが、少なくともいくつかの既存のサポートがあります(私が照会している値を思い出してください)変更:固定値からの距離を事前に計算することはできません。 ハッシュは現在、ハッシュのバイナリASCIIエンコード(たとえば「10010101 ...」)を含む64文字の文字列として格納されていますが、十分簡単に​​int64に変換できます。本当の問題は、比較的高速にクエリできる必要があるということです。 私が望むものの線に沿って何かを達成することは可能だと思わpg_trgmれますが、トライグラムマッチングメカニズムがどのように機能するかについては少しわかりません(特に、それが返す類似性メトリックは実際に何を表しますか?編集距離のようなもの)。 挿入のパフォーマンスは重要ではありません(各行のハッシュを計算するのは非常に計算コストがかかります)ので、私は主に検索を気にします。

1
log_min_duration_statement設定は無視されます
Postgresql 9.1Ubuntuで実行しています。正確なPostgresqlバージョンは9.1+129ubuntu1、パッケージマネージャーが示すとおりです。 アクティブに使用されている2つのデータベースがあり、それらはリモートサーバーから使用されます。 実行時間が長いクエリを記録したい。だから私は/etc/postgresql/9.1/main/postgresql.confファイルに次のパラメータを設定します log_min_duration_statement = 10000 log_statement = 'mod' そのため、Postgresqlは10秒以上かかるクエリをログに記録します。 しかし、私reloadがpostgres構成を行うと、Postgresqlはlog_statement値に適合するすべてのクエリのログを記録し始めます。確実に持続時間を100秒に設定したこと log_min_duration_statement = 100000 しかし、Postgresqlはlog_statement、値に関係なく、log_min_duration_statement値に適合するすべてのクエリのログを記録し続けます。 ロギングを停止log_statementするnoneように設定する。 構成に関して私が見逃したものはありますか?

3
PostgreSQL 8.4を使用して、postgresでbyteaをテキスト値に変換する方法は?
私のアプリケーションでは、Cコードを使用してデータベースにデータを挿入します。信頼できないソースから受け取った文字列PQescapeByteaConnはlibpqライブラリを使用してエスケープしているためです。これは完全に正常に機能しています。つまり、Octet形式の文字列になります。以下の例を参照してください、 入力文字列: \n\t\f\b\p\k\j\l\mestPrepared 出力文字列: \\012\\011\\014\\010pkjlmestPrepared 出力文字列がデータベースに挿入されます。次に、JDBCを使用してJavaコードでデータベースからそのデータを取得します。文字列を元の値に戻すにはどうすればよいですか? 私は2つの可能なアプローチを考えました、 データベース検索クエリを変更し、このフィールドをpostgresの文字列操作関数、つまりbyteaをテキストに変換できる関数に渡します。 Javaコードでデコードを行います。 アプローチ1の方が効率的であることを理解できます。ここにリストされているほとんどすべての機能を試しましたが、何も機能していません。助けてください!! Linuxマシンでpostgresのバージョン8.4を使用しています。

3
最大日付と最新日付のどちらを選択する
以下に2つのテーブルを示します。 学校職員 SCHOOL_CODE + STAFF_TYPE_NAME + LAST_UPDATE_DATE_TIME + PERSON_ID ================================================================= ABE Principal 24-JAN-13 111222 ABE Principal 09-FEB-12 222111 人 PERSON_ID + NAME ================= 111222 ABC 222111 XYZ これが私のoracleクエリです。 SELECT MAX(LAST_UPDATE_DATE_TIME) AS LAST_UPDATE, SCHOOL_CODE, PERSON_ID FROM SCHOOL_STAFF WHERE STAFF_TYPE_NAME='Principal' GROUP BY SCHOOL_CODE, PERSON_ID ORDER BY SCHOOL_CODE; この結果が得られます LAST_UPDATE SCHOOL_CODE PERSON_ID ===========+===========+========= …

4
ゼロ行が一致する場合でも、SELECTが定数値を返すようにする
次の選択ステートメントを検討してください。 SELECT *, 1 AS query_id FROM players WHERE username='foobar'; プレーヤーの他の列query_idとともに値を1持つ列を返します。 selectが一致する行を検出しなかった場合でも、上記のSQLに少なくともquery_idofを返させるにはどう1すればよいですか? ところで、それはPostgreSQL 8.4です。

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