データベース管理者

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

5
MySQLのテーブルのデータサイズとインデックスサイズを推定/予測する方法
私が発見していますテーブルの大きさを推定するための最良の方法は何か私はブログやフォーラムの多くを学んだが、任意の正確な答えを見つけることができていることのために たとえば、InnoDBエンジンを搭載したテーブルCityがあり、将来(今後1年)に100万件のレコードがあるため、この期間のそのテーブルの推定データサイズとインデックスサイズはどうなるでしょう。 mysql> desc City; +-------------+----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+----------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | Name | char(35) | NO | | | | | CountryCode | char(3) | NO | …
26 mysql  innodb 

7
値が最後に変更された時間を見つけようとする
ID、値、および日付を持つテーブルがあります。この表には多くのID、値、および日付があります。 レコードはこのテーブルに定期的に挿入されます。IDは常に同じままですが、ときどき値が変更されます。 IDと値が変更された最新の時間を提供するクエリを作成するにはどうすればよいですか?注:値は常に増加します。 このサンプルデータから: Create Table Taco ( Taco_ID int, Taco_value int, Taco_date datetime) Insert INTO Taco Values (1, 1, '2012-07-01 00:00:01'), (1, 1, '2012-07-01 00:00:02'), (1, 1, '2012-07-01 00:00:03'), (1, 1, '2012-07-01 00:00:04'), (1, 2, '2012-07-01 00:00:05'), (1, 2, '2012-07-01 00:00:06'), (1, 2, '2012-07-01 00:00:07'), (1, 2, '2012-07-01 00:00:08') …


7
なぜinnodb_file_per_tableを使用するのですか?
の必要性を誇張する(もちろん私見)多くの記事がありますinnodb_file_per_table。を使用するとinnodb_file_per_table、個々のテーブルをより適切に制御できるはずです。各テーブルを個別にバックアップするようにします。ただし、パフォーマンスを向上させるという主張には疑問があります。 私のテストでは、性能の差はないinnodb_file_per_tableとibdata160ギガバイトのデータベースのために。もちろん、通常のクエリを使用した簡単なテストであり、実際の複雑なクエリでは状況が異なる場合があります(これがこの質問をした理由です)。64ビットLinuxは、ext4大きなファイルを効果的に処理できます。 ではinnodb_file_per_table、より多くのディスクI / O操作が必要です。そして、これは複雑なJOINsとFOREIGN KEY制約で重要です。 テーブルスペースはsingleで共有されibdataます。個別のテーブル専用のテーブルスペースがディスクスペースを節約する方法 もちろん、を使用して各テーブルのテーブルスペースを解放する方が簡単ALTERですが、それでも(テーブルロックを伴う)高価なプロセスです。 QUESTION: DOESはinnodb_file_per_tablemysqlののより良いパフォーマンスに影響を持っていますか?はいの場合、なぜですか?

5
PostgreSQL:同じデータベースにデータベーススキーマの完全なコピーを作成する方法は?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 7年前に移行され ました。 public完全なテーブル構造、データ、関数、fk、pkなどを使用してスキーマを同じデータベースにコピーする方法。Postgresの バージョンは8.4 PSです。データベースではなくスキーマをコピーする必要があります。
26 postgresql 

3
デッドロックをシミュレートするコード
アプリケーションをテストしています。データベースサイトのデッドロックを安定してシミュレートするコードが必要です(可能であればSQLスクリプト)。 ありがとうございました。 追加: 1つのテーブルのみが関与するデッドロックを再現する

2
サブクエリが行の推定値を1に減らすのはなぜですか?
次の不自然な単純なクエリを検討してください。 SELECT ID , CASE WHEN ID <> 0 THEN (SELECT TOP 1 ID FROM X_OTHER_TABLE) ELSE (SELECT TOP 1 ID FROM X_OTHER_TABLE_2) END AS ID2 FROM X_HEAP; このクエリの最終的な行の推定値は、X_HEAPテーブル内の行数に等しいと予想されます。サブクエリで何をしていても、行を除外できないため、行の推定値は重要ではありません。ただし、SQL Server 2016では、サブクエリが原因で行の推定値が1に減少しています。 なぜこれが起こるのですか?私はそれについて何ができますか? 適切な構文でこの問題を再現するのは非常に簡単です。これを実行するテーブル定義のセットを次に示します。 CREATE TABLE dbo.X_HEAP (ID INT NOT NULL) CREATE TABLE dbo.X_OTHER_TABLE (ID INT NOT NULL); CREATE TABLE dbo.X_OTHER_TABLE_2 …

8
誰もがsaログインを使用できるようにするのが悪い習慣なのはなぜですか?
MicrosoftでさえSQL Server認証モードの使用を推奨していませんが、アプリケーションではそれが必要です。 ユーザーにsaログインを直接使用させないで、代わりにWindows認証を使用し、それらのアカウント(またはアカウントグループ)のsysadmin特権を許可することがベストプラクティスであることを読みました。 それは本質的に同じものではありませんか?長所/短所は何ですか? ベストプラクティスは、SQL Serverインスタンスのセキュリティをどのように向上させますか? これは本番インスタンスのみに適用されますか、それとも社内開発インスタンスにも適用されますか?

1
ファイルパスが間違っているため、バックアップ時にSQL Server 2017がクラッシュする
データベースを復元しようとしていて、SQL Serverがクラッシュし続けました。SSMSで、ネットワークトランスポートエラーが発生したというメッセージが表示されます(接続がクラッシュしてクラッシュしました)。ログを確認したところ、SQL Serverが予期せず閉じられただけです。次に、サービスを再起動する必要があります。 GUIが実行しようとしているスクリプトに問題を絞り込みました。問題は、ログの末尾のバックアップを取るときに、バックアップファイルへのパスが間違っていることです。そのはずD:\mapbenefits\... BACKUP LOG [mapbenefits] TO DISK = N'D:mapbenefits_LogBackup_2019-02-21_13-58-24.bak' WITH NOFORMAT, NOINIT, NAME = N'mapbenefits_LogBackup_2019-02-21_13-58-24', NOSKIP, NOREWIND, NOUNLOAD, NORECOVERY , STATS = 5 2つの質問があります。 このパスを修正するにはどうすればよいですか?サーバー設定にアクセスしようとしましたが、バックアップパスはD:スラッシュなしです。スラッシュを追加すると、GUIによって削除されます。これはSSMS v17.9.1です。私は選ぶことができD:\mapbenefits\、それはうまくいきますが、私は欲しいですD:\DATABASE\... これはバグですか?パスが正しく入力されていないという理由だけで、SQLサーバーがクラッシュする必要がありますか?ファイルパスを修正したら、問題はありません。ファイルパスを改造するだけでいつでも再現できます。 バージョンを確認するクエリを実行するとCU13が取得されますが、設定に入るとバージョン14.0.1000.169が表示されます。 これはバグのようで、再現可能であるため、ここに投稿しました:https : //feedback.azure.com/forums/908035-sql-server/suggestions/36920542-incorrect-filepath-with-backup-log-command-原因

4
疑問符の付いた青いアイコン-それはどういう意味ですか?
SQL Serverインスタンスはアクセス可能で、問題ないようです。 Microsoft SQL Server 2016(SP1-CU2)(KB4013106)-13.0.4422.0(X64) 2017年3月6日14:18:16 Copyright(c)Windows Server 2012 R2 Standard 6.3(ビルド9600上のMicrosoft Corporation Enterprise Edition(64ビット) :)(ハイパーバイザー) しかし、白い疑問符はどういう意味ですか? これらのアイコンは、更新しても消えません。私はSQLサーバー内のシステム管理者であり、外部ではそのボックスの管理者です。 私が気づいたもう一つのことは、下の写真で見ることができます。これらは2つの異なるManagement Studioセッションです。 一番上では、自分としてログインしますDBA and sysadmin。2番目では、Management Studio run as a different userを使用して、レプリケーションに使用するドメインアカウントを使用しますが、そうではありませんsysadmin。 2番目blue iconのサーバーにはこのサーバーと他のサーバーもありますが、私のサーバーは通常の緑色のサーバーです。

1
シーケンス-キャッシュなしvsキャッシュ1
SQL Server 2012+で宣言さSEQUENCEれた使用NO CACHEと宣言された使用の間に違いはありCACHE 1ますか? シーケンス#1: CREATE SEQUENCE dbo.MySeqCache1 AS INT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999 NO CYCLE CACHE 1; GO シーケンス#2: CREATE SEQUENCE dbo.MySeqNoCache AS INT START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 9999 NO CYCLE NO CACHE; GO 2つの間に違いはありますか?SQL Server 2012+環境で使用される場合、それらは異なる動作をしますか?

3
統計更新のためのサンプルサイズによる奇妙な動作
SQL Server(2012)の統計情報の更新を使用してサンプリングのしきい値を調査し、いくつかの奇妙な動作に気付きました。基本的に、サンプリングされる行の数は、同じデータセットであっても、状況によって異なるようです。 このクエリを実行します。 --Drop table if exists IF (OBJECT_ID('dbo.Test')) IS NOT NULL DROP TABLE dbo.Test; --Create Table for Testing CREATE TABLE dbo.Test(Id INT IDENTITY(1,1) CONSTRAINT PK_Test PRIMARY KEY CLUSTERED, TextValue VARCHAR(20) NULL); --Insert enough data so we have more than 8Mb (the threshold at which sampling kicks in) INSERT INTO …

1
PostgreSQL DELETE FROMが「エラー:不可視のタプルを削除しようとしました」で失敗します
この質問は、データベース管理者のStack Exchangeで回答できるため、Server Faultから移行されました。 2年前に移行され ました。 エラー 無効なタイムスタンプを含むタプルを削除しようとしています DELETE FROM comments WHERE date > '1 Jan 9999' OR date < '1 Jan 2000' OR date_found > '1 Jan 9999' OR date_found < '1 Jan 2000'; で終わる ERROR: attempted to delete invisible tuple 2009年には、OPで修正されたまったく同じエラーメッセージについて議論するメーリングリストがありますが、彼がそれをどのようにしたのか、またはこのエラーにつながったのかについての説明はありません。 Googleでヒットがなく、PostgreSQLの知識が限られているため、私は無力です。 腐敗の原因 OSカーネルがパニックになったときに、おそらくスワップが配置されている/ dev / md1を再構築しているときに、Debian 8で実行しているPostgreSQL 9.5.5サーバー(メモリ制限の上限を除くすべてのデフォルト設定)を実行しました。それ以前は、PostgreSQLは400GBのログファイルでほとんどすべてのディスク領域を使い果たしました。OSは二度と起動しなかったので、ディスクチェックは問題ありませんでした。念のため、LiveCDから起動し、各ブロックデバイスをイメージにバックアップしました。/ …

3
Management StudioはSQL Server 2016インストールメディアから削除されましたか?
SQL Server 2016 Enterpriseをインストールしようとしましたが、Management Studioがデフォルトでインストールされていないことに気付きました。また、https: //msdn.microsoft.com/en-us/library/mt238290.aspxを指すインストールガイドにSSMSへの別のリンクがあることに気付きました。 この決定の理由は何ですか? 上記のURLには次のことが記載されています。 このSSMSの一般リリースは無料であり、インストールして使用するためにSQL Serverライセンスは必要ありません。 おそらく、これですか?
25 sql-server  ssms 

4
更新すべきではない列の更新を明示的に拒否する必要がありますか?
私は非常に安全な環境で作業することに慣れているため、非常に細かい粒度で権限を設計します。私が通常行うことの1つは、更新されるべきではない列DENYに対する機能を明示的にユーザーに提供するUPDATEことです。 例えば: create table dbo.something ( created_by varchar(50) not null, created_on datetimeoffset not null ); これらの2つの列は、値が設定されたら変更しないでください。したがって、私は明示的にそれらDENYのUPDATE許可をします。 最近、チームミーティング中、開発者は、「何らかの理由で値を更新する必要がある場合」に、フィールドが更新されないことを保証するロジックをデータベース層ではなくアプリケーション層に含めるべきであると指摘しました。私にとっては、典型的な開発者のメンタリティのように聞こえます(私は知っています、私は以前は1人でした!) 私は会社のシニアアーキテクトであり、アプリを機能させるために必要な最小限の特権の原則に常に取り組んできました。すべての許可は定期的に監査されます。 このシナリオのベストプラクティスは何ですか?

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