データベース管理者

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

4
InnoDB DELETEのパフォーマンスを向上させる方法は?
だから私はこの監査テーブルを持っています(私のデータベース内の任意のテーブルでのアクションを追跡します): CREATE TABLE `track_table` ( `id` int(16) unsigned NOT NULL, `userID` smallint(16) unsigned NOT NULL, `tableName` varchar(255) NOT NULL DEFAULT '', `tupleID` int(16) unsigned NOT NULL, `date_insert` datetime NOT NULL, `action` char(12) NOT NULL DEFAULT '', `className` varchar(255) NOT NULL, PRIMARY KEY (`id`), KEY `userID` (`userID`), KEY `tableID` (`tableName`,`tupleID`,`date_insert`), KEY …

2
PITRを停止/無効にして、WALセグメントを安全にクリーニングするにはどうすればよいですか?
本番サーバーは、CentOSリリース5.2(最終)でPostgreSQL v8.2.3を実行しています。 PITRを本番サーバーに設定しました。いくつかの理由により、PITRをセットアップした後、それを管理および維持することができません。最終的に、WALアーカイブドライブ(セカンダリドライブ)がいっぱいになり(100%使用)、アーカイブされる追加のWALアーカイブセグメントがpg_xlog /ディレクトリ自体(プライマリドライブで利用可能)に蓄積されます。 PITRセットアップの詳細 2つのドライブがあります。 プライマリドライブ(pgsql / data /ディレクトリが存在)は400 GBです。 セカンダリドライブ(WALアーカイブ)は300 GBです。すべてのWALアーカイブは、このセカンダリドライブに書き込まれます。 現在、PITRを停止/無効にすることにしました。 私の質問は、この状況で、どのようにPITRを停止/無効にし、両方のドライブからすべてのWALセグメントを安全にクリーンアップするかです。 推奨/推奨される方法は何ですか?これに関する専門家のアドバイス/アイデア/提案は高く評価されています。

1
MySQL Workbenchからの外部キーの作成エラー
MySQL Workbenchからのスキーマ変更をデータベースに同期しようとしています。外部キーを作成しようとすると、次のエラーが発生します。 Executing SQL script in server ERROR: Error 1005: Can't create table 'tomato.#sql-2730_1b8' (errno: 121) 実行しようとしているステートメントは次のとおりです。 ALTER TABLE `tomato`.`ing_allergy_ingredient` ADD CONSTRAINT `fk_ai_allergy` FOREIGN KEY (`allergy_id` ) REFERENCES `tomato`.`ing_allergy` (`allergy_id` ) ON DELETE NO ACTION ON UPDATE NO ACTION このエラーが意味するアイデアはありますか?

5
プロのフルタイムPostgreSQL DBAはいますか?
私の仕事では、データベースとしてPostgreSQLを使用するJavaEEアプリケーションで作業しています。データベースサーバーも管理する本番サーバー用のシステム管理者がいますが、常勤のDBAがいないので不思議です。私は、専任の専任DBAがOracleデータベースだけを操作することを想像します。私は何かを見落としているのですか、それとも専用のPostgres DBAがいないと想定して正しいのですか? PS:私は純粋な好奇心からこれを求めています。 PPS:この質問にDBAのタグを付けたかったのですが、どうやらそれは新しいタグになるでしょう。誰かがこれを作ってくれませんか?

3
特定のテーブルに関連付けられているすべてのオブジェクトをプログラムでスクリプト化する方法はありますか?
私は、SQL管理スタジオで私は右表/トリガ/キーをクリックすることができることを知っているとscript object as...。オブジェクトの名前を指定して、これをプログラムで行う方法はありますか? もしそうなら、与えられたテーブルに関連付けられたすべてのオブジェクト(主キー、外部キー、トリガー)を見つけ、それらすべてをプログラムでスクリプト化する方法はありますか?

2
2つのDBCC INDEXDEFRAGコマンドをそれぞれ異なるテーブルで同時に実行できますか?
現在、SQL Server 2005データベースのすべてのテーブルに対して、一度に1つのテーブルに対してDBCC INDEXDEFRAGを実行するスクリプトを実行しています。スペースの制約と稼働時間の要件により、INDEXDEFRAGの代わりにDBCC DBREINDEXを使用することはできません。 特定のテーブルが最適化されるまでに長い時間がかかることに気づきました。たとえば、 "sys.dm_exec_requests"動的管理ビューを調べると、table_idが829610394であるテーブルのクラスター化インデックスで、次のINDEXDEFRAGが現在削除されていることがわかります。 DBCC INDEXDEFRAG(0、829610394、1) デフラグプロセスが完了するまでにはかなりの時間がかかることは承知しています。現在実行中のスクリプトが最終的にすべてのテーブルを最適化するという事実は別として、現在のコマンドの実行中に別のテーブルのクラスター化インデックスで別のDBCC INDEXDEFRAGを手動で実行することに害はありますか?これを行うと、両方のテーブルが実際に同時に最適化されますか?



1
小型マイクロコントローラー用の高速データベース
私はPIC32を使用しています。これは、80 MIPSでクロックされる32ビットプロセッサで、約64〜128KBのRAMを使用できます。FAT32ファイルシステムで、最大4 GBのmicroSDカードにアクセスします。これらすべてを実行することはそれを推進していますが、このプラットフォームに簡単に移植できるコンパクトなデータベースと高速なデータベースが必要です。誰か提案はありますか?

2
Google App Engineで、最も効果的な多対多の結合モデルは何ですか?
BigTableのデザインは、明示的に小さなテーブルの大きなホストへの非正規化を好む、標準のリレーショナルモデルの哲学の多くを拒否します。 これが問題となる大きな領域の1つは、多対多の結合のモデリングです。 これらの結合をモデル化する1つの方法は、最初の正規形に違反し、すべての興味深いデータをdb.ListProperty()に置くことです。これはクエリから検索可能ですが、リストの検索と別のテーブルのプルのパフォーマンスへの影響についてはまだ調べていません。 結合はできないため、RelationshipPropertiesを介してテーブルをリンクすることができます。したがって、十分な労力をかけて、標準の交差テーブル(両方の親テーブルを参照する結合主キーを持つテーブル)を作成できます。さまざまな実装のパフォーマンスへの影響を調査した人はいますか? -編集- ドキュメントで提案されているキーのリストは確かにそれを行う1つの方法ですが、私はそのパフォーマンスと他の実装の異常率に興味があります。キーの相互リストを作成するのにユーティリティはありますか?繰り返しに伴う努力はその代価に見合うものですか?それを行うより良い方法はありますか?

2
クラスタ化されたインデックス作成は今や必須です-なぜですか?
以前は、クラスター化インデックスを(常に)エンゲージする/回避するかどうかについての議論/ディスカッションは決定的ではありませんでした。 まあ、私はそれらが時々適切な特定の目的とコンテキストで使用されることを理解しました。 SQL Azureデータベースのクラスター化インデックスの要件: 「SQL Azureはクラスター化インデックスのないテーブルをサポートしていません。テーブルにはクラスター化インデックスが必要です。クラスター化制約なしでテーブルを作成する場合、テーブルで挿入操作を許可する前にクラスター化インデックスを作成する必要があります。」 以前の結論、根拠、および説明には適合しません。 例外なくクラスタ化インデックスのユビキタス性を厳密に課すという、これまでの説明から逃した理論的根拠は何ですか?

1
WHERE句のないUPDATEはPostgreSQLのテーブルをロックしますか?
テーブル全体UPDATE(WHERE句を指定しない)はPostgreSQLのテーブルをロックしますか?たとえば、行が削除または挿入されるのを防ぎますか? たとえば、実行した場合 、実行中にUPDATE t1 SET key = 'value' 新しい行が挿入されないことを期待できますか?t1UPDATE いいえの場合UPDATE、開始後に表示された行も更新されますか?(キーのDEFAULT 'value'定義にはありません)

2
SQL Serverのシリアル化可能な分離レベルはテーブル全体をロックしますか
私と私の同僚は、シリアル化可能な分離レベルの使用の影響について説明しました。彼はそれがテーブル全体をロックしたと言いましたが、私は彼にそれが潜在的に可能であると伝えることに同意しませんでしたが、それは範囲ロックを適用しようとし、ここで説明されるように真のシリアライゼーションを適用しません:シリアライズ可能な分離レベル。 「テーブル全体をロックする」のドキュメントでも何も見つかりません:SET TRANSACTION ISOLATION LEVEL。 ドキュメントには範囲ロックに関する多くの事項が記載されているため、理論的には、テーブル内の可能な値の範囲全体をロックする範囲ロックを持つだけでテーブル全体をロックできますが、テーブルはロックされません。 ここで私は完全に間違っていますか?それは実際にテーブル全体をロックしていますか?

3
RAMまたは物理ファイルのトランザクションログ?
私はトランザクションの初心者ですが、トランザクションログに関する質問です。トランザクションをコミットすると、変更はトランザクションログに書き込まれますが、トランザクションログはRAMまたは物理ファイルにありますか?RAM内にあり、システム障害が発生した場合、明らかにRAMが再消去されるため、トランザクション情報が失われるので、コミットを回復するにはどうすればよいでしょうか。

2
非常に類似したクエリ、大幅に異なるパフォーマンス
2つの非常によく似たクエリがあります 最初のクエリ: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON a.Id = ari.AuditId WHERE ari.RelatedId = '1DD87CF1-286B-409A-8C60-3FFEC394FDB1' and a.TargetTypeId IN (1,2,3,4,5,6,7,8,9, 11,12,13,14,15,16,17,18,19, 21,22,23,24,25,26,27,28,29,30, 31,32,33,34,35,36,37,38,39, 41,42,43,44,45,46,47,48,49, 51,52,53,54,55,56,57,58,59, 61,62,63,64,65,66,67,68,69, 71,72,73,74,75,76,77,78,79) 結果:267479 計画:https : //www.brentozar.com/pastetheplan/?id=BJWTtILyS 2番目のクエリ: SELECT count(*) FROM Audits a JOIN AuditRelatedIds ari ON a.Id = ari.AuditId WHERE ari.RelatedId = '1DD87CF1-286B-409A-8C60-3FFEC394FDB1' …

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