データベース管理者

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

1
mysqlのスロークエリログ内の「ロック時間」をどのように解釈すればよいですか?
MySQLのスロークエリログに表示されるクエリのロック時間を最適に解釈する方法を理解しようとしています。 たとえば、UPDATEクエリのロック時間が10秒の場合です。更新クエリがロックを取得してからの合計時間だと思います。以前の選択クエリが完了するのを待っているがUPDATEアクション自体を実行していない場合でも、UPDATEクエリの後に並んでいるすべてのSELECTクエリをロックしているので、時計が動いているはずです。 そして、SELECTクエリのロックについてはどうでしょう。一部の選択クエリにロック時間があるのはなぜですか?UPDATEクエリがフォローアップしているため、テーブルをロックしています。
12 mysql  locking 

2
T-SQL(SSMSではない)を使用してデータベースにログインをマップする方法
すべてのアクセス許可とすべてをコードに割り当てる必要があるプログラムを書いています。私はこの部分で立ち往生しています: msdbデータベースの[マップ]の下にある小さなボックスをクリックし、そのユーザーをSqlAgentUserロールに割り当てるのと同じことをしたいだけです。SQL Serverエージェントジョブを追加/編集できるユーザーが必要です。SSMSを使用して設定を正しく取得できますが、生のSQLでそれを実行する方法を理解することができません。 ALTER LOGINを調べましたが、必要なことを実行するものは何も見つかりません。私はGoogleに対する正しい用語を知らないだけだと思います。私は通常、このようなことはしません。 どんな助けでも大歓迎です!

3
maxrecursionのシステム全体のデフォルトを変更する
システム全体のデフォルト値の変更方法を教えてくださいMAXRECURSION。 デフォルトでは100ですが、1000などに増やす必要があります。 クエリを取得して実行するプログラムを使用しているため、クエリヒントを使用できません。残念ながら、この制限を回避することはできません。 ただし、サーバーインスタンスの管理者権限は持っています。サーバーファセットをざっと見てきましたが、クエリオプションや再帰に関連するものは何もありません。私はそこに想定している私は、システム全体のデフォルトを更新することができる場所のどこかにあることを。 何か案は?

2
Redshiftテーブルがスキーマのテーブルに表示されませんか?
Redshiftで、次のクエリにテーブルが表示されないのはなぜですか?私が実行する次のクエリが示すように、それは間違いなく存在します。スキーマのすべてのテーブルを一覧表示する方法が必要です。 mydb=# select distinct(tablename) from pg_table_def where schemaname = 'db'; tablename ----------- (0 rows) mydb=# \d db.some_table Table "db.some_table" Column | Type | Modifiers -----------------+-----------------------------+----------- ...correct info shows up here... ...but nothing showed up above?
12 redshift 

1
PostgreSQL psql-動作しませんがエラーはありません[終了]
この質問が今後の訪問者を助けることはほとんどありません。それは、地理的に狭い地域、特定の瞬間、またはインターネットの世界中のオーディエンスには一般的に適用できない非常に狭い状況にのみ関連しています。この質問をより広く適用するためのヘルプについては、ヘルプセンターにアクセスしてください。 7年前休業。 私はPostgreSQLの完全な初心者なので、おそらく完全に明らかなものを見逃しているでしょう。 端末のpsqlを介してローカルデータベースに接続しました。dbを変更するために実行するコマンド、または単純な選択でさえも何もしません。エラーなし、結果なし。 createdb、dropdbのシェルコマンドを使用できます。 ローカルのPostgreSQL dbを使用して、Ruby on Rails、RefineryCMSで実行されているサイトを取得したので、dbにデータがあり、機能していることがわかります-psqlを介してクエリまたは変更することができないようです。 何が欠けていますか? Mac OS X Lion、pg v 9.2。
12 postgresql  psql 


1
MySQLの複合主キーのINDEXはどうですか?
2つ以上の列の複合主キーを作成する場合PRIMARY KEY(col1, col2, col3)。システムはINDEX各列を個別に使用しますか? 私はこの質問をしていた理由は、私たちが使用している場合ということですUNIQUE INDEX (col1, col2, col3)、それはとして機能するINDEXだけで、最初の列のために、私たちは、追加作成する必要がありINDEX、他の列に対して複数可。それが複合主キーにも当てはまるかどうかを知りたいです。

1
SQL Serverでのvarcharのサイジングに関する現在のベストプラクティスは何ですか?
ストレージとパフォーマンスの両方の観点から、varchar列の大きさを決定する最良の方法を理解しようとしています。 パフォーマンス 私の研究から、それはそうですvarchar(max)は、本当に必要な場合にのみ使用してください。つまり、列が8000文字以上を収容する必要がある場合、1つの理由はインデックス作成の欠如です(ただし、一般にvarcharフィールドでのインデックス作成には少し疑いがあります。ただし、DBの原則はかなり新しいので、それが根拠がないかもしれません。 )および圧縮(より多くのストレージの問題)。実際、クエリは可能な最大サイズを考慮しなければならないため、一般的に人々はvarchar(n).... oversizingを行うときに必要なものだけを使用することを推奨しているようです。しかし、エンジンはデータの実際の平均サイズの推定値として、示されたサイズの半分を使用することも述べられています。これは、データから平均サイズを決定し、それを2倍にし、それをnとして使用する必要があることを意味します。ただし、変動性が非常に低いがゼロではないデータの場合、これは、最大サイズの最大2倍のサイズ変更を意味します。洞察をいただければ幸いです。 ストレージ 実際のストレージは実際のデータに制限されていることを念頭に置いて、行内ストレージと行外ストレージのしくみについて読んだ後、nの選択はストレージにほとんどまたはまったく影響がないように思えます(それがすべてを保持するのに十分な大きさであることを確認してください)。varchar(max)を使用しても、ストレージに影響はありません。代わりに、可能であれば、各データ行の実際のサイズを〜8000バイトに制限することが目標になる場合があります。それは物事を正確に読んでいますか? コンテキスト 一部の顧客データは少し変動するため、通常、必要な列よりも少し幅を広く(たとえば15〜20%大きく)します。他に特別な考慮事項があるかどうか疑問に思っていました。たとえば、一緒に仕事をしている人から、2 ^ n-1サイズを使用するように言われました(ただし、それを証明するものは見つかりませんでした。 最初のテーブル作成について話している。新しいテーブルの送信を開始し、サンプルデータ(または最初の本番データセットのみ)を送信することをお客様から言われます。これを見て、データを保持するためのテーブルを作成します。将来のインポートとサンプルの内容を処理できるように、テーブルを作成します。ただし、特定の行は長くなるようにバインドされているため、それらをパディングします。 問題はどれくらいか、そして技術的なガイドラインはありますか?

1
シーク述語と述語の違い
SQL Server 2014 Enterpriseにあるクエリのパフォーマンスを調整しようとしています。 私はSQL Sentryのプランエクスプローラで、実際のクエリプランを開いていて、私はそれがいることを一つのノード上で見ることができる述語をシークしても述語 Seek PredicateとPredicateの違いは何ですか? 注:このノードには多くの問題(たとえば、推定行と実際の行、残りのIO)があることがわかりますが、質問はそれとは関係ありません。

3
テーブルの作成中にデフォルトの制約を追加するにはどうすればよいですか?SQL Server [終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、データベース管理者のスタック交換のトピックになるようにします。 3年前休業。 以下に示すように、列の後に制約が続く新しいテーブルを作成しようとしています。 Create tblTest( columns.. .. .. Gender int, Constraint DF_tblTest_Gender Default 3 For Gender, .. .. .. ) ただし、デフォルトの制約に近いエラーメッセージが表示されます。 「for」の近くに不正な構文

3
PostgreSQLロールにリンクされたオブジェクトを検索する
以前、user1という名前のPostgreSQLユーザー(PostgreSQL 9.4.9)を作成しました。 このユーザーを削除します。そのため、最初に、テーブル、シーケンス、関数、デフォルトの権限、所有権のすべての権限も取り消します。 ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON SEQUENCES FROM user1; ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON TABLES FROM user1; ALTER DEFAULT PRIVILEGES IN SCHEMA public REVOKE ALL ON FUNCTIONS FROM user1; REVOKE ALL ON ALL SEQUENCES IN SCHEMA public FROM user1; REVOKE …

4
ジョブ、スケジュール、および次のスケジュールされた実行日時のリスト
ジョブ、スケジュール、および次のスケジュールされた実行日時のリスト ジョブ、スケジュール、次のスケジュールされた実行日時を一覧表示しようとしています。しかし、私は成功しているようには見えません。 sysjobactivity next_scheduled_run_dateがありますが、これは必要ですが、ジョブとスケジュールの両方に接続することはできません。 以外の方法がある場合は、そこにsysjobactivity案内してください。 SELECT sj.name AS jobName , ss.name AS scheduleName , sja.next_scheduled_run_date FROM msdb.dbo.sysjobs sj INNER JOIN msdb.dbo.sysjobactivity sja ON sja.job_id = sj.job_id INNER JOIN msdb.dbo.sysjobschedules sjs ON sjs.job_id = sja.job_id INNER JOIN msdb.dbo.sysschedules ss ON ss.schedule_id = sjs.schedule_id WHERE (sj.name LIKE 'xray%') AND (sja.next_scheduled_run_date > GETDATE())

3
小数点記号としてコンマを使用した文字列数値をNUMERIC(10、2)に変換します
私はギリシャ語でフォーマットされた数値を含むvarchar列のSQLテーブルを持っています(千の区切り文字として。そして小数点の区切り文字としてコンマ) 古典的な変換 CONVERT(numeric(10,2),REPLACE([value],',','.')) ので機能しません。(千区切り)変換を強制終了します たとえば試してください CONVERT(numeric(10,2),REPLACE('7.000,45',',','.')) そのような値をnumeric(10,2)に変換したい それを処理する方法の提案はありますか?

2
MySQLインデックスのメンテナンス
MySQLでインデックスを維持して断片化を防ぎ、いくつかのクエリの実行を何らかの方法で最適化する方法について、多くの調査を行いました。 テーブルで使用可能な最大スペースとデータとインデックスで使用されるスペースの比率を計算する式に精通しています。 しかし、私の主な質問はまだ答えられていません。おそらく、これはSQL Serverでのインデックスのメンテナンスに精通しているためであり、MySQLでもそれはある程度似ているはずだと思う傾向があります。 SQLサーバーでは、いくつかのインデックスを設定でき、それぞれに異なるレベルの断片化を設定できます。次に、1つをピックアップして、残りに影響を与えることなく、その特定のインデックスで「REORGANIZE」または「REBUILD」操作を実行できます。 私の知る限りでは、このような「テーブルの断片化」はなく、SQL Serverは「テーブルの断片化」を修正するためのツールを提供していません。それが提供するのは、内部および外部の断片化だけでなく、インデックスの断片化(インデックスによって使用されるページ数とそのページの完全性と連続性の間の比率のように理解される)をチェックするツールです。 少なくとも私にとっては、そのすべてを理解するのは非常に簡単です。 MySQLでインデックスを維持する番になると、前述のように「テーブルの断片化」の概念しか存在しません。 MySQLのテーブルには複数のインデックスを含めることができますが、その有名な式で「断片化率」を確認すると、各インデックスの断片化が表示されず、テーブル全体が表示されます。 MySQLでインデックスを最適化したい場合、(SQL Serverのように)操作する特定のインデックスを選択しません。代わりに、テーブル全体で「OPTIMIZE」操作を実行します。これは、おそらくすべてのインデックスに影響します。 MySQLでテーブルが最適化されると、データ+インデックスVS全体のスペースによって使用されるスペースの比率が減少します。これは、ハードドライブでのある種の物理的な再編成を示唆し、物理スペースの減少につながります。ただし、インデックスの断片化は、物理的なスペースだけでなく、挿入と更新によって時間の経過とともに変更されたツリーの構造に関するものです。 最後に、InnoDB / MySQLにテーブルを取得しました。このテーブルには、300万レコード、105列、55インデックスがあります。2.1GBのインデックスを除いて1.5GBです。 このテーブルは、更新、挿入のために毎日何千回もヒットしています(実際にはレコードを削除しません)。 そのテーブルは何年も前に作成されており、誰もインデックスを維持している人はいません。 そこに巨大な断片化を見つけることを期待していましたが、規定どおりに断片化計算を実行すると free_space / (data_length + index_length) 断片化が0.2%しかないことがわかります。私見はかなり非現実的です。 したがって、大きな質問は次のとおりです。 テーブル全体ではなく、MySQLの特定のインデックスの断片化をチェックするにはどうすればよいですか SQL Serverのように、OPTIMIZE TABLEは実際にインデックスの内部/外部断片化を修正しますか? MySQLでテーブルを最適化すると、実際にテーブルのすべてのインデックスが再構築されますか? (ツリー自体を再構築せずに)インデックスの物理スペースを減らすと、実際にパフォーマンスが向上すると考えるのは現実的ですか?

3
ヘッダー付きのCSVファイルからテーブルを作成する
指定したCSVの内容のみに基づいて新しいMySQLテーブルを生成する方法を探しています。私が使用するCSVファイルには、次のプロパティがあります。 「|」区切られた。 最初の行は列名(ヘッダー)を指定し、 "|"も指定します 区切られた。 列名と順序は固定されていません。 列の数は固定されていません。 ファイルのサイズが大きい(1 mil行/ 50列)。 Excelではこれはすべてかなり単純ですが、MySQLではそうではありません(Googleでは運がありません)。私が見ているべきものについて何か提案はありますか?
12 mysql  csv  import  bulk 

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