データベース管理者

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

1
インデックスの影響の見積もりSQLiteデータベースサイズ
多数のインデックス付き列を含むSQLite DBの(ディスク上の)データベースサイズを推定しようとしています。これらの列は(SQLite)タイプの整数と文字列です。これらの列を使用して行ごとのサイズを見積もるのは十分簡単ですが、インデックスのために行ごとの余分なパディングをどのように説明するかわかりません。これに対する最善のアプローチは何ですか?
9 index  sqlite  size 

5
SQL Selectの実行に時間がかかりすぎる
これは一時テーブルからの単純な選択であり、既存のテーブルを主キーに結合したままにします。結合されたテーブルを参照するトップ1を使用する2つのサブ選択があります。 コードで: SELECT TempTable.Col1, TempTable.Col2, TempTable.Col3, JoinedTable.Col1, JoinedTable.Col2, ( SELECT TOP 1 ThirdTable.Col1 -- Which is ThirdTable's Primary Key FROM ThirdTable WHERE ThirdTable.SomeColumn = JoinedTable.SomeColumn ) as ThirdTableColumn1, ( SELECT TOP 1 ThirdTable.Col1 -- Which is also ThirdTable's Primary Key FROM ThirdTable WHERE ThirdTable.SomeOtherColumn = JoinedTable.SomeColumn ) as ThirdTableColumn2, FROM …

1
動的SQLのパラメーターの印刷
私は多くのタスクで動的SQLを使用しており、同じ問題に継続的に遭遇しました:動的T-SQLステートメント内で使用される変数の値を出力します。 例えば: Declare @SQL nvarchar(max), @Params nvarchar(max), @DebugMode bit, @Foobar int select @DebugMode=1,@Foobar=364556423 set @SQL='Select @Foobar' set @Params=N'@Foobar int' if @DebugMode=1 print @SQL exec sp_executeSQL @SQL,@Params ,@Foobar=@Foobar 上記のコードの印刷結果は、単に "Select @Foobar"です。実行中のSQLの値と変数名を動的に出力する方法はありますか?または、印刷を行うときに、SQLを再実行できるようにパラメーターを実際の値に置き換えますか? 同様のことを行うために関数を1つまたは2つ作成しましたが、データ型変換、パターンマッチングの切り捨ての問題、非動的な解決策を試しました。他の開発者がすべての変数を手動で印刷せずにこの問題を解決する方法に興味があります。

2
Oracleに移行するSQL Server開発者向けのリソース
Oracleの基本を学びたいSQL Server開発者にどのようなリソースを推奨できますか? これらのシステムの違いを説明し、IDENTITY列を作成する方法などの質問に答える包括的なホワイトペーパーまたはブログ投稿を探しています。またはfloatに相当するデータ型は何ですか?。

1
SQL Serverのパフォーマンスを向上させるために、2つ以上のテーブルのJOIN結果にインデックスを付ける方法
私はインデックス作成に慣れていないため、インデックス作成の基本を学びました。対応するテーブルのインデックス部分内にある主キー制約のデフォルトのクラスター化インデックスを見つけることができますが、外部キー制約を作成した後は見つかりません。 これで、パフォーマンスを向上させるためにインデクシングを実装する必要があるという要件があります。JOINの結果のパフォーマンスを向上させるために、外部キーのインデックス付けについて読みました。 外部キー列を追加の非クラスター化インデックスに追加する必要がありますか、それとも外部キーにデフォルトのインデックスがありますか? SQLテーブルの構造が次のようで、t1_col3を使用してWHERE句を含むJOINクエリを実行している場合、どのようにして効率的にインデックスを実装できますか table1 table2 ------ ------ t1_col1(pk) t2_col1(pk) t1_col2 t2_col2 t1_col3 t2_col3 t1_col4 t2_col4 t2_col1(FK)

2
MySQLスレーブが「mysql」データベースへの変更を複製しないようにするにはどうすればよいですか?
これで説明されているように、「mysql」データベースを複製しないようにスレーブを設定しています SHOW SLAVE STATUS\G; Slave_IO_State: Waiting for master to send event Master_Host: 127.0.0.1 Master_User: replication Master_Port: 3306 Connect_Retry: 60 Master_Log_File: master-bin.000001 Read_Master_Log_Pos: 1660 Relay_Log_File: mysql-relay-bin.000004 Relay_Log_Pos: 478 Relay_Master_Log_File: master-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: **Replicate_Ignore_DB: mysql** Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1660 Relay_Log_Space: 633 Until_Condition: …

2
COMMITはPostgreSQL 9.5の匿名のplgpsql関数内で機能しますか?
匿名のplpgsqlコードブロック内のループを使用して、多数の大きなファイルをいくつかのテーブルにインポートしてパーティション分割します$do$。 $do$ BEGIN FOR yyyy in 2012..2016 THEN EXECUTE $$COPY table$$||yyyy||$$ FROM 'E:\data\file$$||yyyy||$$.csv DELIMITER ',' CSV;$$; END LOOP; END; $do$ LANGUAGE plpgsql このプロセス全体には約15時間かかります。ある時点でインポートエラーが発生した場合、すべてのインポートがロールバックされないことを願っています。 IIRC COMMITは、関数全体が単一のトランザクションとして扱われるため、ストアド関数内では機能しません。 のドキュメントから$do$ コードブロックは、パラメーターのない関数の本体であるかのように扱われ、voidを返します。解析と実行は1回です。 これは、全体$do$が1つのトランザクションであるため、ブロック内のコミットが機能しないことを想定しています。私は正しいですか?

3
すべてのSQL Serverを実行する単一のサービスアカウント
同じサーバーアカウントとエージェントアカウントを使用して、SQL ServerとSQL Agentをそれぞれ35サーバーの小規模な会社で実行されているすべてのSQLサーバーインスタンスに対して実行すると、パフォーマンスに悪影響がありますか?最大のデータベースは0.5 GBです。どんな提案も大歓迎です。ありがとうございました。

1
ハッシュ結合とハッシュセミ結合
PostgreSQL 9.2 私は違いを理解しようとしているHash Semi JoinだけにHash Join。 2つのクエリを次に示します。 私 EXPLAIN ANALYZE SELECT * FROM orders WHERE customerid IN (SELECT customerid FROM customers WHERE state='MD'); Hash Semi Join (cost=740.34..994.61 rows=249 width=30) (actual time=2.684..4.520 rows=120 loops=1) Hash Cond: (orders.customerid = customers.customerid) -> Seq Scan on orders (cost=0.00..220.00 rows=12000 width=30) (actual time=0.004..0.743 rows=12000 loops=1) …


1
sp_prepexec(sp_execute)とsp_executeSQL
質問の要点:実際のストアドプロシージャは、一時テーブルキャッシュを実装する唯一のメカニズムですか、それともsp_executeSQL/ などのシステムストアドプロシージャsp_executeもそれらを利用しますか? 私はDBAではないので、少しだけ言葉を使ってください。私たちのアプリケーションは、プロファイラーから、sp_prepexec実行sp_prepareとの両方のシステムプロシージャであるすべてのSQLを実行する準備済みステートメントを送信しますsp_execute。私がやろうとしているのは、一時テーブルのキャッシュから利益を得ているかどうかを判断することです。 このガイドをobject_id()と一緒に使用して動作を調べています https://sqlkiwi.blogspot.com/2012/08/temporary-tables-in-stored-procedures.html 次に、このブログ投稿のポイント3は、EXECは一時テーブルキャッシュを使用できないことを示していますが、sp_executeSQLができるかどうかは省略しています:http : //blogs.msdn.com/b/turgays/archive/2013/09/18/exec-vs- sp-executesql.aspx クライアント経由で送信されたクエリでは、単純な一時テーブルを作成しました。 DECLARE @foo int; -- set by JDBC, unused but required to force a prepared statement SELECT 1 AS id INTO #tmp SELECT OBJECT_ID('tempdb..#tmp'); プロファイラーで、私は見ることができます: declare @p1 int set @p1=NULL exec sp_prepexec @p1 output,N'@P1 int',N'declare @foo INT = @P1 SELECT 1 …

1
アイドル接続が多すぎると、PostgreSQL 9.2のパフォーマンスに影響しますか?
データベースサーバーでのクエリの応答に時間がかかるようで、CPU使用率が高いと思います。を実行するとps aux、約250の「アイドル」接続が表示されます(多すぎると思われます)。私は完全な診断を始めていませんが、これが探し始めるのに良い場所かどうか知りたいと思っていました。 また、PgBouncerをトランザクションレベルのプールで使用しています。idleプールサイズを調整することで、接続数を簡単に減らすことができると思います。ただし、正当な理由がない限り、あまり多くの変更を開始したくありません。 idlePostgreSQL 9.2の多くの接続がパフォーマンスに影響を与える可能性はありますか? どうもありがとう!


2
Oracleは1つのテーブルに対して複数の同時INSERTをどのように処理するか
Oracle 11gについてもう少し詳しく理解しようとしています。私の質問は簡単です。Oracleは、単一のテーブルに同時にレコードを挿入しようとしている2つのセッションをどのように処理するのですか。 たとえば、INSERT Aは表1に対して午後1時に実行されます。完了するまでに5分かかります。INSERT Bは、表1に対して午後1:02に実行されます。完了するまでに1分かかります。 何が起こるか?Oracleは、INSERT Aが完了した後にINSERT Bを実行するようキューに入れますか?INSERT BはINSERT Aと同時に実行されますか? ありがとう!
8 oracle  insert 

1
使用されているデータベースミラーリングプロトコルのTCPポート。1つのデフォルト、1つのダイナミック?
SQL Server Always On可用性グループ™のプライマリ/セカンダリレプリカで以下のクエリを実行する場合 SELECT DISTINCT local_tcp_port,protocol_type,num_reads,num_writes FROM sys.dm_exec_connections WHERE local_net_address is not null; 2つのローカルTCPポートは、データベースミラーリングプロトコルに現れ、5022&63420 Server Name local_tcp_port protocol_type num_reads num_writes ServerName 5022 Database Mirroring 102942598 5 ServerName 63420 Database Mirroring 5 89655349 5022これはミラーリングエンドポイントとして構成された一つであるとポートが、期待されています。 もう1つは動的ポートのようですが、なぜこのポートを使用するのですか。 1つは多数の読み取り(5022)を示し、もう1つは多数の書き込み(63420)を示しているという事実と関係があるのでしょうか。 ビルドバージョン:13.0.5264.1

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