データベース管理者

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




2
SQL Serverでインデックスを再構築および再編成する必要がある理由
インターネットを検索した後、私は理由を見つけることができませんでした SQL Serverでインデックスを再構築および再編成する必要があるのはなぜですか? 再構築して再編成すると、内部的にはどうなりますか? サイトの記事には次のように書かれています: インデックスの断片化が40%を超える場合、インデックスを再構築する必要があります。インデックスの断片化が10%〜40%の場合、インデックスを再編成する必要があります。インデックス再構築プロセスはより多くのCPUを使用し、データベースリソースをロックします。SQL Server開発バージョンとエンタープライズバージョンにはオプションのオンラインがあり、インデックスの再構築時にオンにできます。ONLINEオプションは、再構築中にインデックスを利用可能にします。 これを理解することはできませんでしたが、これWHENを行うにはそれを言うが、WHYインデックスを再構築および再編成する必要があるかどうかを知りたいですか?

1
8000文字以降のデータを切り捨てるVarchar(max)フィールド
いくつかのデータを保存するフィールドがあり、フィールドはとして宣言されていvarchar(max)ます。私の理解では、これは2^31 - 1文字を保存する必要がありますが、8000文字を超えるコンテンツを入力すると、残りがカットされます。 すべてのデータが更新ステートメントに含まれていることを確認し、クエリは他のすべての場所で正常に見えますが、データを選択し直すと切り捨てられました。 データをWebサイトに表示するとき、およびSSMSを使用してデータを表示するとき、データは切り捨てられselect content from tableます。 select DATALENGTH (content) from table 8000として返されます。 これを使用してデータを設定しますupdate table set content = 'my long content' where id = 1。コンテンツには多くのHTMLが含まれていますが、問題の原因はわかりません。私がやっていることを見ることができる唯一のことは、これがユーザーが入力したコンテンツ"である''ため、すべてを置き換えることです(私が今やった理由を覚えていない)。 コンテンツ内のすべての単一引用符を削除することで、コンテンツを正しく入力することができたので、データベースではなくデータで何か奇妙なことが起こっていると思います。 varchar(max)フィールドを使用するためにクエリで特別なことをする必要がありますか? 使用:SQL Server 2008(10.50)64ビット。

2
データベースプリンシパルはデータベース内のスキーマを所有しているため、ドロップできません
データベースからプリンシパルを削除しようとしていますが、スキーマを所有しているためできません。ただし、ユーザーを編集する場合、スキーマのチェックを外すボックスは青色で削除できません。これらのスキーマからプリンシパルを削除するにはどうすればよいですか?

7
MySQL DBごとのディスクスペース使用量の計算
現在、information_schema.TABLESを使用して、データベース名ごとにグループ化された合計ディスク領域使用量を計算していますが、実行速度が非常に遅くなっています。数百のデータベースがあるサーバーでは、計算に数分かかる場合があります。 データベースごとのディスク領域使用量を計算する最も速い方法は何ですか?ファイルシステムを見ているだけですか?information_schemaを高速化する方法はありますか?
28 mysql 


4
同じ値で行を更新すると、実際に行が更新されますか?
パフォーマンス関連の質問があります。マイケルという名のユーザーがいるとしましょう。次のクエリを実行します。 UPDATE users SET first_name = 'Michael' WHERE users.id = 123 同じ値に更新されている場合でも、クエリは実際に更新を実行しますか?もしそうなら、どうすればそれを防ぐことができますか?


7
MySQLでMEMORYストレージエンジンを使用しない理由は何ですか?
私は最近、MySQLが認識していない「メモリ」エンジンを持っていることを発見しました(私のデータベース作業の大部分は趣味のプロジェクト向けであるため、必要に応じて学習しています)。このオプションを使用すると、パフォーマンスが大幅に向上するはずなので、それに伴う欠点はあるのでしょうか。私が知っている2つは: 問題のテーブルを保持するのに十分なRAMが必要です。 マシンがシャットダウンすると、テーブルは失われます。 私はAWS EC2を使用しており、必要に応じてより多くのメモリを備えたインスタンスタイプに移行できるため、#1は問題ではないと考えています。必要に応じてディスクにダンプバックすることで、#2を軽減できると思います。 他にどんな問題がありますか?メモリエンジンは、MyISAMまたはInnoDBのいずれよりもパフォーマンスが低下することはありますか?このエンジンではインデックスが異なるということを読んだと思います。これは私が心配する必要があるものですか?

4
ユーザーがSQL Serverデータベースに存在するかどうかを確認します
SQL Server 2012を使用しています。ユーザーをデータベースに追加する前に、ユーザーが存在するかどうかを確認したいと思います。 これは私がテストしたものです: USE [MyDatabase] GO IF NOT EXISTS (SELECT name FROM [sys].[server_principals] WHERE name = N'IIS APPPOOL\MyWebApi AppPool') Begin CREATE USER [IIS APPPOOL\MyWebApi AppPool] FOR LOGIN [IIS APPPOOL\MyWebApi AppPool] WITH DEFAULT_SCHEMA=[dbo] end ALTER ROLE [db_owner] ADD MEMBER [IIS APPPOOL\MyWebApi AppPool] GO ただし、SELECT name FROM [sys].[server_principals]そのユーザーがに存在する場合、このコードは戻りませんMyDatabase。 ユーザーが存在するMyDatabaseかどうかを確認するにはどうすればよいですか

2
「部分一致インデックス」とは何ですか?
SQL Server 2016で導入された「外部キー参照チェック」クエリプラン演算子について詳しく学習しようとしています。これに関する情報はあまり多くありません。マイクロソフトはここでそれを発表し、私はここでそれについてブログを書きました。new演算子は、254以上の着信外部キー参照を持つ親テーブルから行を削除することで確認できます:dbfiddle link。 オペレーターの詳細には、3つの異なるカウントが表示されます。 外部キー参照カウントは、着信外部キーの数です。 一致するインデックス数は、適切なインデックスのない着信外部キーの数です。更新または削除されたテーブルがその制約に違反しないことを確認するには、子テーブルのスキャンが必要です。 部分一致インデックスカウントが何を表すのかわかりません。 このコンテキストでの部分一致インデックスとは何ですか?次のいずれかを動作させることができませんでした。 フィルター選択されたインデックス 外部キー列をINCLUDEインデックスの列として配置する 2番目のキー列として外部キー列を持つインデックス 複数列の外部キーの単一列インデックス 複数の列の外部キーに対して「インデックス結合」プランを有効にするための複数のカバーインデックスの作成 Dan Guzmanは、インデックスキーの順序が外部キーの列と異なる場合でも、複数の列の外部キーがインデックスと一致する可能性があることを指摘しました。彼のコードは、誰かが部分一致インデックスについてさらに理解するための出発点としてそれを使用できる場合に備えてここにあります。

3
pgAdmin 4バージョン3の2回目のオープンに失敗する
macOS SierraのpgAdmin 4バージョン3.0.0をインストールしました。し、同じMacでローカルに実行されているPostgres 10.3にバンドルされてい pgAdminを。 私は開いた pgAdmin 4.appアプリのアイコン Safariブラウザーの前面にタブが表示され、通常のpgAdminユーザーインターフェイスが表示されます。良い。 Safariでそのタブを閉じました。今、私が開くとpgAdmin 4.appアイコンをダブルクリックするか、File[> ]を選択してOpenも、何も起こりません。 pgAdminはアプリのウィンドウではなくブラウザウィンドウで起動することになっていますか? pgAdminを再度開く方法は?

4
あるサーバーから別のサーバーに(数百の)テーブルをコピーする(SSMSを使用)
1つのサーバーから別のサーバーにコピーする必要があるテーブルは数百(現在は466ですが、増え続けています)です。 私はこれをする必要がなかったので、どのようにアプローチするのか全くわかりません。すべてのテーブルは同じ形式です。Cart<Eight character customer number> これは、これらすべてのCart<Number>テーブルを1つのCartsテーブルにマージするより大きなプロジェクトの一部ですが、それはまったく別の質問です。 これらのすべてのテーブルをコピーするために使用できるベストプラクティスの方法はありますか?両方のサーバーのデータベース名は、それが役立つ場合は同じです。先ほど言ったように、saAからBにデータを取得するために必要なことは何でもできるようにアカウントを持っています。両方のサーバーも同じサーバーファームにあります。

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