データベース管理者

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

12
DBAを「プログラマーフレンドリー」にするにはどうすればよいでしょうか?
「データベースレイヤーにアプリケーションロジックを配置することに対する、またはそれに対する引数は何ですか?」という質問のdba.seバージョンとProgrammers.seバージョンに関する回答とコメント 一部の職場のDBAとプログラマーの格差について非常に明らかにしています。 このような問題に関してプログラマーとより良く働くために、DBAはどのように異なってできるでしょうか? 我々がすべき: 特に適切に設計されたデータベースを使用する場合、プログラマーが直面する困難を理解するために使用しているツールと言語を学習しますか? データベースと、データベースレベルでビジネスロジックを持つことの利点について、プログラマーの教育を強化することをお勧めしますか? よりプログラマーにとって使いやすいトランザクションAPIを使用するなどして、データへのインターフェイスを定義する方法を変更します(たとえば、後方互換性などの問題のために)。


5
DROP DATABASEに時間がかかるのはなぜですか?(MySQL)
新しいCentOSインストール。 大きなDB(2GBのsqlファイル)のインポートを実行していて、問題がありました。SSHクライアントは接続を失い、インポートはフリーズしたようです。別のウィンドウを使用してmysqlにログインしましたが、インポートが特定の3M行テーブルでスタックしているように見えました。 だから私は試した DROP DATABASE huge_db; 15〜20分後、何もありません。別のウィンドウで、私がやった: /etc/init.d/mysqld restart メッセージDROP DBウィンドウ:SERVER SHUTDOWN。その後、実際に物理サーバーを再起動しました。 mysqlに再度ログインしてチェックし、データベースがまだそこにあった、実行した DROP DATABASE huge_db; 再び、そして再び私はすでに約5分待っています。 繰り返しますが、新規インストールです。huge_db(システムDBS以外の)唯一のDBです。私は以前にこれほど速くdbをドロップしたことを誓いますが、多分間違っています。 データベースを正常に削除しました。30分ほどかかりました。また、mysqldumpのインポートが死んだと思ったとき、私は間違っていたと思うことに注意してください。端末の接続は失われましたが、プロセスはまだ実行中だったと思います。インポート中テーブル(3M行テーブル)を削除した可能性が最も高く、おそらくデータベース全体の3/4を削除しました。「top」がmysqlを使用してメモリを3%しか使用していないことを示していたのに、それ以上使用する必要があるように思えたのは誤解を招きました。 DBの削除には30分かかりました。そのため、サーバーを再起動する必要がなく、DROPが完了するのを待つこともできましたが、DROPクエリの取得に対するmysqlの反応はわかりません。 mysqldump経由でインポートするのと同じdb。 それでも、疑問が残ります。すべてのdbファイルを削除し、information_schemaからDBへのすべての参照を削除するだけで2 GBのデータベースを削除するのに30分以上かかるのはなぜですか?大したことは何ですか?
46 mysql  mysqldump 

3
ユーザーpostgresのパスワード要件を削除
インストール時に、PostgreSQLにはdb rootユーザー(postgres)のパスワードがないことがわかります。 postgres=# select usename, passwd is null from pg_shadow; usename | ?column? ----------+---------- postgres | t (1 row) ...そして、次のように設定することをお勧めします。 alter role postgres password '<<very-secret>>'; (そして、それにpg_hba.conf応じてファイルを更新します) 私の質問は:パスワードがユーザーのために必要としなかったとき、前の状況に戻すために使用するSQLは何ですかpostgres。 一般に、どのロールのパスワード要件を削除するにはどうすればよいですか?パスワードの変更方法ではなく、パスワード要件(passwd表のヌル列pg_shadow)を削除する方法を尋ねています。

4
パフォーマンス比較を実行する前にキャッシュをクリアするSQL Serverコマンド
2つの異なるクエリの実行時間を比較する場合、最初のクエリの実行によって2番目のクエリのパフォーマンスが変わらないことを確認するためにキャッシュをクリアすることが重要です。 Google検索では、次のコマンドを見つけることができました。 DBCC FREESYSTEMCACHE DBCC FREESESSIONCACHE DBCC FREEPROCCACHE 実際、私のクエリは、数回実行した後、以前よりも現実的な時間で完了しています。ただし、これが推奨される手法であるかどうかはわかりません。 ベストプラクティスは何ですか?

4
機能性能
ストアドプロシージャのパフォーマンス(以前の記事)と使いやすさが疑わしいMySQLのバックグラウンドから来て、私はPostgreSQLを会社の新製品として評価しています。 私がやりたいことの1つは、アプリケーションロジックの一部をストアドプロシージャに移動することです。そのため、ここでは、特にパフォーマンスの落とし穴に関して、PostgreSQL(9.0)で関数を使用する際のDOおよびDO N'T(ベストプラクティス)を求めています。

3
過度のソートメモリ許可
なぜこの単純なクエリはそれほど多くのメモリを許可されるのですか? -- Demo table CREATE TABLE dbo.Test ( TID integer IDENTITY NOT NULL, FilterMe integer NOT NULL, SortMe integer NOT NULL, Unused nvarchar(max) NULL, CONSTRAINT PK_dbo_Test_TID PRIMARY KEY CLUSTERED (TID) ); GO -- 100,000 example rows INSERT dbo.Test WITH (TABLOCKX) (FilterMe, SortMe) SELECT TOP (100 * 1000) CHECKSUM(NEWID()) % 1000, …

1
データベース管理者が一般的に使用する頭字語
データベース管理者の間で最も一般的に使用される頭字語は何ですか?また、それらの相関する意味は何ですか? これは、コミュニティや、データベースなどで作業するときに一般的に使用される用語や頭字語の意味を検索するコミュニティ向けです。



2
now()とcurrent_timestampの違い
PostgreSQLでは、now()and current_timestamp関数を使用しますが、違いはありません。 # SELECT now(), current_timestamp; now | now --------------------------------+-------------------------------- 04/20/2014 19:44:27.215557 EDT | 04/20/2014 19:44:27.215557 EDT (1 row) 何か不足していますか?

4
PostgreSQLのパフォーマンスにとってビューは有害ですか?
以下は、db設計に関する本からの抜粋です(データベース設計の開始ISBN:0-7645-7490-6): ビューを使用する場合の危険は、ビューに対してクエリをフィルタリングし、非常に大きなテーブルの非常に小さな部分を読み取ることです。ビュー自体に対するフィルタリングは、ビュー内のクエリの実行が完了した後に適用されるため、ビュー内でフィルタリングを実行する必要があります。ビューは通常、開発プロセスの高速化に役立ちますが、長期的にはデータベースのパフォーマンスを完全に低下させる可能性があります。 以下は、PostgreSQL 9.5ドキュメントからの抜粋です。 ビューを自由に使用することは、優れたSQLデータベース設計の重要な側面です。ビューを使用すると、テーブル構造の詳細をカプセル化できます。これは、一貫したインターフェイスの背後で、アプリケーションの進化とともに変化する可能性があります。 2つのソースは互いに矛盾しているようです(「ビューを使用して設計しない」対「ビューを使用して設計する」)。 ただし、PGでは、ビューはルールシステムを使用して実装されます。そのため、おそらく(これが私の質問です)ビューに対するフィルタリングは、ビュー内のフィルターとして書き直され、その結果、基礎となるテーブルに対して1つのクエリが実行されます。 私の解釈は正しく、PGはビューに出入りするWHERE句を組み合わせますか?それとも、それらを次々に別々に実行しますか?短い自己完結型の正しい(コンパイル可能な)例はありますか?

1
動作する完全なPostgreSQL DBバックアップとテストを取得する方法
MS SQL Serverの場合と同じようにPostgresの完全なバックアップを作成し、孤立したユーザーの世話をする方法について明確な答えが得られることを望んでいました。 私が読んだことから、それは間違っている可能性がありますが、良いPostgreSQLブログを見つけることは挑戦的でしたので、私にいくつかをお勧めしてくださいレプリケーション。開発者customにdirectory、tarを選択してPgadminIIIから取得したバックアップを復元し、OIDs を選択してフォーマットしましたが、2つはロードされtarませんでしたが、データではなくディレクトリのみでしたと彼は言い​​ました。今は本当に混乱しています。 私はPGAdminIIIを使用していますが、オプションがpg_dumpありpg_dumpallます。このデータベースをどこかでテスト復元するために必要なすべてのものをバックアップし、必要なすべてのデータとバックアップが適切であることを確認したいと思います。最終的には、一度に1日に1回、自動復元スクリプトを書きたいと思います。 pg_dumpall明らかに-globalsすべてをバックアップすることになっているオプションがありますが、ヘルプはオプションではなくをpg_dumpall示して-g, --globals-only dump only global objects, no databasesい--globalsます。 pg_dumpall少なくとも外部キーをバックアップすると思っていましたが、それでも「オプション」のようです。ドキュメントによれば、外部キーをバックアップpg_dumpallする-oオプションを使用する必要がある場合でも、外部キーをバックアップしたくない時期は本当に想像できません。これはデフォルトオプションとしてより理にかなっています。 孤立したユーザーをどのように処理し、すべてが揃っているかを検証するにはどうすればよいですか?実際にバックアップファイルを別のサーバーに復元し、すべてが機能することを確認したいと思います。PostgreSQLで実際のバックアップを作成して復元する方法について誰かが何か提案をしてくれたら、とても感謝しています。 PostgreSQLサーバーがありましたが、なぜアプリがOIDデフォルトでsをバックアップしないのか、まだ推測できません!あなたがそれを望むだろう時間の99.9%のようです。 更新1: Postgresのドキュメントでは、globals私が探していたオプションはこのバージョンのデフォルトオプションのようですが、それでも-oオプションが必要であると述べています。誰かが必要なすべてを備えた単一のデータベースを別の場所に復元するためのコマンドを確認したり、私にサンプルを提供したりできるなら、ありがたいです。 編集:サイトから質問を編集して、この質問の一意性を示すように求められます。この質問により、問題が発生し、バックアップのOID、グローバルと非グローバルの違い、およびバックアップが適切であるかどうかを確認するための復元推奨事項のテストが明確になります。答えがあったので、cronジョブを使用してPostgresでバックアップ、グローバル/ OIDの把握、およびテスト復元プロセスを毎晩開始することができました。助けてくれてありがとう!

3
mysqlでのカスケードの削除とカスケードの更新の違い
MySQLデータベースに2つのテーブルがありますparent- child。親テーブルに基づいて、子テーブルに外部キー参照を追加しようとしています。間の有意差があるON UPDATE CASCADEとは、ON DELETE CASCADE 私の親テーブル CREATE TABLE parent ( id INT NOT NULL, PRIMARY KEY (id) ) ENGINE=INNODB; 私の質問は次のとおりです。次のSQLクエリの違いは何ですか。 ON DELETE CASCADE CREATE TABLE child ( id INT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ) ENGINE=INNODB; ON UPDATE CASCADE CREATE TABLE …

5
IPアドレス経由でサーバーのSQLデータベースに接続できません
Windows Server 2008を実行するサーバーをセットアップし、SQL Server 2008 Expressをインストールしています。 を介してマシンのSQL Server Expressデータベースに接続できますMACHINENAME/SQLEXPRESS。 ただし、IPアドレスを使用してソフトウェアまたはスクリプトを介して接続する場合、接続は許可されません。 私が試してみました: ファイアウォールをオフにします。 SQLデータベースのリモート接続を許可します。 SQL構成内でTCP / IPを有効にします。 ソフトウェア「SQL Server Management Studio」を介して接続しようとすると、次のメッセージが表示されます。 エラーメッセージ: サーバーへの接続を確立中にエラーが発生しました。SQL Server 2005に接続する場合、この失敗は、デフォルト設定ではSQL Serverがリモート接続を許可しないという事実が原因である可能性があります。(プロバイダー:TCPプロバイダー、エラー:0-ターゲットマシンがアクティブに拒否したため、接続できませんでした。)(Microsoft SQL Server、エラー:10061) サーバーとの接続は正常に確立されましたが、ログインプロセス中にエラーが発生しました。(プロバイダー:TCPプロバイダー、エラー:0-確立された接続は、ホストコンピューターのソフトウェアによって中止されました。)(Microsoft SQL Server、エラー:10053) いつ無料かを教えてください。どこでわかるのかを見てみましょう。UKFastから送られた情報に従って詳細を修正しましたが、「サポートの範囲内ではありません」と言っています。 、彼らはそれ以上助けることはできません。 あなたからの便りを楽しみにしています。

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