データベース管理者

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

2
SQL Server 2019で「nvarchar / nchar」が使用されるのはいつですか?
SQL Serverの2019 Microsoftが紹介してUTF-8サポート用CHARとVARCHARデータ型をと言います: この機能により、使用中の文字セットによっては、ストレージを大幅に節約できる場合があります。たとえば、UTF-8対応の照合を使用して、ASCII文字列を含む既存の列データ型をNCHAR(10)からCHAR(10)に変更すると、ストレージ要件が約50%削減されます。この削減は、NCHAR(10)がストレージに22バイトを必要とするのに対し、CHAR(10)は同じUnicode文字列に12バイトを必要とするためです。 UTF-8は、ように見えるサポートので、基本的に私たちがUnicodeデータを格納し始めることができ、すべてのスクリプトをvarcharしてchar列。また、ドキュメントで述べられているように、これによりテーブルとインデックスのサイズを削減でき、そこから読み取るデータの量が少ないため、パフォーマンスがさらに向上します。 これは、UTF-16を実装する列nvarcharとnchar列の使用を停止できることを意味しているのでしょうか。 誰かがシナリオと理由を指摘できますUTFか?エンコーディングでcharデータ型を使用せず、n-chars データ型を引き続き使用しますか?

1
DynamoDBで複数のテーブルを使用する場合
DyanmoDBのベストプラクティスにより、次のことが明確になります。 DynamoDBアプリケーションでは、できるだけ少ないテーブルを維持する必要があります。ほとんどの適切に設計されたアプリケーションは、1つのテーブルのみを必要とします。 私がDyanmoDBを扱うのを見たほとんどすべてのチュートリアルがマルチテーブル設計を持っていることは、それから面白いと思います。 しかし、これは実際にはどういう意味ですか? ユーザー、プロジェクト、ドキュメントという3つの主要エンティティを持つ単純なアプリケーションを考えてみましょう。ユーザーは複数のプロジェクトを所有し、プロジェクトには複数のドキュメントを含めることができます。通常、ユーザーのプロジェクトとプロジェクトのドキュメントを照会する必要があります。読み取りは書き込みの数を大幅に上回ります。 素朴なチュートリアルのテーブルデザインでは、3つのテーブルを使用します。 Users Hash key user-id Projects Hash key Global Index project-id user-id Documents Hash key Global Index document-id project-id 簡単に折り畳んProjectでDocument1つのDocumentsテーブルにすることができます。 Documents Hash key Sort key Global Index project-id document-id user-id しかし、なぜそこで停止するのですか?1つのテーブルですべてを統治しないのはなぜですか?Userがすべての根であるため... Users Hash key Sort key user-id aspect --------- --------- foo user email: foo@bar.com ... …

2
MongoDBはメモリ不足になると終了します
次の構成があります。 3つのDockerコンテナーを実行するホストマシン: MongoDB Redis 前の2つのコンテナーを使用してデータを格納するプログラム RedisとMongoDBはどちらも、大量のデータを格納するために使用されます。RedisがすべてのデータをRAMに保持する必要があることはわかっています。これで問題ありません。残念ながら、mongoは大量のRAMを消費し始め、ホストRAMがいっぱいになると(ここでは32GBについて話している)、mongoまたはRedisがクラッシュします。 これに関する次の以前の質問を読みました。 MongoDBのRAM使用量を制限する:明らかにほとんどのRAMがWiredTigerキャッシュによって使い果たされています MongoDBのメモリ制限:ここで明らかに問題はログデータでした MongoDBのRAMメモリ使用量を制限します。ここでは、mongoのメモリを制限して、キャッシュ/ログ/データに使用するメモリ量を少なくすることを推奨しています。 MongoDBが使用するメモリが多すぎる:ここでは、より高速なアクセスを提供するために可能な限り多くのRAMを使用する傾向があるのは、WiredTigerキャッシングシステムであると彼らは言います。彼らはまた述べていますit's completely okay to limit the WiredTiger cache size, since it handles I/O operations pretty efficiently mongodbのメモリ使用量を制限するオプションはありますか?:再びキャッシング、彼らはまた追加しますMongoDB uses the LRU (Least Recently Used) cache algorithm to determine which "pages" to release, you will find some more information in these two …

1
ユーザー `dbo`とsys.databasesに保存されているデータベースの所有者の違いは何ですか
最近dbo、データベースのユーザーがとsid一致しないを持っている場所に質問がありowner_sidましたsys.databases。データベースの所有者がロールのメンバーとどのように異なるかを理解していますがdb_owner、ユーザーdboがデータベースの実際の所有者であるといつも思っていました。そうではありませんか?そして、もしそうならdbo、何が入っているのsys.databasesか、何が本当の違いがあるのですか?

2
TSQLを使用してデータベースを動的に変更する方法
SSMSのコンテキストを動的SQLで指定されたデータベースに動的に変更しようとすると問題が発生します。 EXEC sys.sp_executesql N'USE db1 ' ; 正常に実行されますが、SSMSのデータベースコンテキストは変更されません。 上記のように少し変更してみました DECLARE @sql NVARCHAR(100) DECLARE @db NVARCHAR(50) SET @db = N'db1' SET @sql = N'Use ' + @db EXEC sp_executesql @sql 繰り返しになりますが、正常に実行されますが、データベースは変更されません。

3
SSMS結果グリッド、オブジェクトエクスプローラー、その他のウィンドウでダークテーマを使用する
SSMSメインコーディングウィンドウでダークテーマを使用するには、vsettingsファイルをインポートする方法、構成ファイルで無効になっているダークテーマを適用する方法、または手動で行う方法があります。ただし、これらのオプションはすべて、グリッド結果、オブジェクトエクスプローラー、およびその他のウィンドウには影響しません。これら2つは、コーディング以外の主なものです。 私はいつも試したツール>オプション>環境>フォントと色を、その後のコンボボックスで選択:用の表示設定オプショングリッドの結果及び使用して白のためのアイテムの前景色とブラックのためのアイテムの背景。保存して再起動したSSMSですが、テキストだけが白で、背景は白のままです。 何が起こっているのか、またはそれを行う方法について何か考えはありますか?オブジェクトエクスプローラーでそれを行う方法が見つかりません。

3
SQL Server Insert Into-切り捨てエラーの原因となっている列を特定する方法
テーブルに650のフィールドを挿入するストアドプロシージャがあります。挿入は、切り捨てエラーで失敗します。 簡単です INSERT INTO SELECT (a bunch of fields) FROM (a bunch of tables) 以下はエラーメッセージです。 メッセージ8152、レベル16、状態14、プロシージャDSP_Procedure、行1075文字列またはバイナリデータは切り捨てられます。 切り捨てエラーの原因となっているフィールドを簡単に特定できる方法はありますか? テーブルに挿入される選択ステートメントに650のフィールドがあるため、どのフィールドが切り捨てエラーの原因であるかを正確に特定することが困難です。 一度に100個のフィールドのみを挿入するように、一度にフィールドのブロックをコメント化し、少なくとも100個のフィールドのグループに絞り込むことができるまで、SP 6または7の異なる時間を実行できると思います。切り捨てエラーの原因となっているフィールドが含まれます。 またはSELECT INTO、新しいテーブルを作成して、SPに挿入しようとしているターゲットテーブルのデータ長とテーブルのデータ長を比較して、どのフィールドに予想より長いフィールド長が含まれているかを確認できると考えています。 .. SQL Server 2014を使用しています。 より簡単な代替手段はありますか?

4
ストアドプロシージャを使用して日付範囲の毎日の行を作成する方法
特定の日付範囲の毎日のテーブルに行を作成するストアドプロシージャを作成したいと思います。ストアドプロシージャは、2つの入力(ユーザーが希望する日付範囲の開始日と終了日)を受け入れます。 それで、私がそのようなテーブルを持っているとしましょう: SELECT Day, Currency FROM ConversionTable DayはDateTimeであり、Currencyは単なる整数です。 話を簡単にするために、これらの挿入された行ごとにCurrency列を常に1にしたいとします。したがって、誰かが「2017年3月5日」を開始日として入力し、「2017年4月11日」を終了日として入力した場合、次の行を作成します。 2017-03-05 00:00:00, 1 2017-03-06 00:00:00, 1 ... 2017-04-11 00:00:00, 1 これを行うためにストアドプロシージャをコーディングする最良の方法は何ですか?私のテスト環境ではSQL Server 2008 R2を使用していますが、実際の環境ではSQL Server 2012を使用しているため、このタスクを容易にする新しい機能が2012年に導入された場合、テストマシンをアップグレードできます。

1
トリガーを使用せずにPostgreSQLマテリアライズドビューを自動的に更新する
view_table_A外部データラッパーテーブルで名前が付けられたマテリアライズドビューを作成しましたtable_A。私が欲しいのは、に新しい挿入が行われるたびにビューが自動的に更新されるようにすることtable_Aです。トリガーを使用してこれを実行しようとしましたが、機能しませんでした。 トリガーを使用せずにマテリアライズドビューを自動的に更新することは可能ですか?

2
データベースは、トランザクションのどの時点でインデックスを更新しますか?
インデックスとトランザクションの両方が関与する挿入のイベントのシーケンスを理解しようとしています。 たとえば、Oracleのドキュメントには次のように記載されています。 データをロードする前に1つ以上のインデックスを作成[または保持]している場合、データベースは各行が挿入されるたびにすべてのインデックスを更新する必要があります。 しかし、トランザクションを作成し、5つの行を挿入してからコミットするとどうなりますか?挿入ごとにインデックスが更新されますか、それともコミットポイントで更新されますか? これらのレコードがコミットされるまで、更新されたインデックスはおそらく使用できないため、ロジックはそれらがコミットポイントでのみ更新されることを教えてくれます。しかし、それは本当ですか? もしそうなら、挿入する行が1mある場合、最高のパフォーマンスを得るには、100kレコードの10トランザクションではなく、すべての行の1つの大きなコミットを実行する必要がありますか?もちろん、これは、999,999行が失敗した場合にロールバックが大きくなるリスクがあることを理解しています。 私の専門用語が少し出ていればお詫びします。私は貿易ではDBAではありません。私は特定のデータベースにはあまり関心がありません。データベース全般についてですが、私が最もよく使用しているのはOracleとPostgresです。私はこのトピックについて検索しましたが、決定的な答えは本当に見つかりません。

2
マスターデータベースが破損している、インスタンスが起動しない-私のオプションは何ですか?
助けて!マスターデータベースが破損しています。SQLインスタンスをオンラインにすることもできません。サーバーをバックアップするためのオプションは何ですか? マスターのバックアップはありますが、MSDNページの「Restoring the master Database」で、インスタンスをシングルユーザーモードで起動するように求められますが、それはできません! (注:この質問は、SQLバージョンに関しては未指定のままにしておきます。これは、より広く適用できる参照となるようにするためです。DBA.SEにも同様の質問がいくつかありますが、サーバーが起動できないことに関する質問はありません。)

2
Ubuntu 16.04でSQL Serverを起動できない
昨日、Ubuntu 16.04マシンにSQL Server v.Nextパブリックプレビューをインストールして動作させました。しかし、今日は機能していません。 エラーを取得: root @ OraServer:/ var / opt / mssql / log#systemctl status mssql-server ●mssql-server.service-Microsoft(R)SQL Server(R)データベースエンジン ロード済み:ロード済み(/lib/systemd/system/mssql-server.service; enabled; vendor preset:enabled) アクティブ:非アクティブ(デッド)(結果:終了コード)Sun 2016-11-27 13:34:23 IST以降; 18秒前 プロセス:6368 ExecStart = / opt / mssql / bin / sqlservr(code = exited、status = 1 / FAILURE) メインPID:6368(コード=終了、ステータス= 1 /障害) 11月27日13:34:23 OraServer …

5
クエリを実行するためにアクセスするデータベースサーバーにインストールされているデータベースエンジンを確認するにはどうすればよいですか?
アクセス可能なDatasaseサーバーで実行されているSQLのタイプを確認したい。Webインターフェースとテーブルのリストにしかアクセスできません。 インターフェイスを介して、リストにあるテーブルに対してクエリを実行できます。 サーバーとサーバーが実行しているバージョンに関する詳細情報を取得するにはどうすればよいですか。サーバーが実行しているIPまたはポートについてはわかりません。 サーバーがMySQL、Mircosoft SQLサーバー、Oracle SQL、Postgre SQL、またはその他のSQLサーバーかどうかを知りたい。 私が話しているWebサイトは、 w3schools.com SQLエディターです。 編集2:一部のコマンドselect sqlite_version()は私にとっては機能しますが、機能しません。これは応答のスクリーンショットです。 編集3:Chromiumブラウザでは、コマンドは正しく機能しています。ただし、Firefoxブラウザーではコマンドは機能しませんでした。 また、私はLinuxを実行していることも述べました。 FirefoxとChromeで異なる結果が得られる理由は何だと思いますか?

1
更新後に行全体が同じままである場合にトリガーをチェックインする方法は?
もちろん、次のように比較するすべての列でそれを行うことができます: if (old.column1 = new.column1 and old.column2 = new.column2...) しかし、たとえば将来的に別の列を追加する場合は、ハードコーディングし、維持するのが困難になります。 個々の列をすべて手動で確認せずに、すべての列が同じかどうかを確認する方法はありますか?

1
SQL Serverの統計のデフォルトのサンプルサイズは何ですか?
MSDNから: サンプルオプション(SAMPLE, FULLSCAN, RESAMPLE)が指定されていない場合、クエリオプティマイザーはデータをサンプリングし、デフォルトでサンプルサイズを計算します。 統計のデフォルトのサンプルサイズを特定するにはどうすればよいですか? MSDNを調べましたが、デフォルトのサンプルサイズを特定するための式や方法が見つかりませんでした。どこにも、自動統計更新をトリガーするための数式しかありません。どんなポインタも役に立ちます。

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