データベース管理者

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

3
SQL Server 2008 R2への挿入が最初にRAMにキャッシュされることをどのように保証できますか?
「バースト性」のデータストリームを想像してください。つまり、10,000個のイベントが非常に速く到着し、その後1分間何も続かない場合があります。 あなたの専門家のアドバイス:SQLのC#挿入コードを書くと、SQLがすべてのデータをRAMにキャッシュするという保証があります。これを達成するために、SQLサーバー自体のセットアップのパターン、または書き込み先の個々のSQLテーブルをセットアップするパターンを知っていますか? もちろん、RAMに独自のキューを作成するという独自のバージョンを実行できますが、いわば旧石器時代の石Aを再発明したくありません。

3
ストアドプロシージャを介してTSQLシーケンスをエミュレートする
TSQLシーケンスをエミュレートするストアドプロシージャを作成する必要があります。つまり、呼び出しごとに常に増加する個別の整数値を提供します。さらに、整数が渡された場合、結果がこれまでにないか、利用可能な次に高い整数がなかった場合、その値を返す必要があります。言うまでもなく、このSPを同時に呼び出す複数のクライアントが存在する可能性があります。 列MetaKey varchar(max)およびMeatValueLong bigIntを持つ表MetaInfoが与えられます。「Internal-ID-Last」のMetaKeyを持つ行には、割り当てられた最後の最高値が含まれることが予想されます。次のストアドプロシージャを作成しました。 CREATE PROCEDURE [dbo].[uspGetNextID] ( @inID bigInt ) AS BEGIN SET NOCOUNT ON; BEGIN TRANSACTION UPDATE MetaInfo WITH (ROWLOCK) SET MetaValueLong = CASE WHEN ISNULL(MetaValueLong,0) > @inID THEN MetaValueLong+1 ELSE @inID+1 END WHERE MetaKey = 'Internal-ID-Last' SELECT MetaValueLong FROM MetaInfo WHERE MetaKey = 'Internal-ID-Last' COMMIT TRANSACTION END …

3
パーティションキーを更新して、パーティション間で行を移動できますか?
これはかなり単純な質問だと思いますが、実際にはこれに対する答えを見つけるのに苦労しました。 質問:パーティション列を更新してパーティションの境界を越えるだけで、パーティションテーブル内のデータ行をあるパーティションから別のパーティションに移動できますか? たとえば、パーティションキーを持つテーブルがある場合: CREATE TABLE SampleTable ( SampleID INT PRIMARY KEY, SampleResults VARCHAR(100) NOT NULL, ) 主キーにマップするパーティション関数を使用して: CREATE PARTITION FUNCTION MyPartitionFunc (INT) AS RANGE LEFT FOR VALUES (10000, 20000); SampleIDを1から(たとえば)500,000に変更して、最初のパーティションから3番目のパーティションに行を移動できますか? 注:どちらもパーティション分割をサポートしているため、SQL Server 2005と2008の両方としてこれをタグ付けしています。彼らはそれを異なって扱いますか?

2
すべてのクエリを強制終了-MySQL
時々、SNAFU中に20〜30 kill query xxxxxxx回走らなければなりません。任意の並べ替えkill allコマンドは、私が行方不明ですか? 入力が好きではないため。
17 mysql 




6
Redgate SQL CompareとVisual Studio 2010 Premium / Ultimateデータベースプロジェクト
現在、データベーステンプレートをプロジェクトテンプレートとして使用しているVisual Studio Professional Editionを使用していますが、その一部の機能(スキーマ比較ツールなど)は使用できません。スキーマ比較とデータベース更新スクリプトの生成は、Visual Studio 2010 Premium / Ultimateバージョンでのみ使用できます。 しかし、Visual Studioのスキーマ比較および更新スクリプト生成機能は、Redgate SQL Compareツールの機能と同じくらい充実していますか?(私も使用しませんでした)機能比較リストを見つけることができませんでした。両方を使用した人は、それを明確にするのに役立つでしょうか?

4
テーブルのすべての列を含む主キーの利点はありますか?
4つの列がすべてNULL不可のテーブルがあり、一意のレコードを区別するには4つすべてが必要なデータです。これは、主キーを作成する場合、すべての列を構成する必要があることを意味します。テーブルに対するクエリは、ほとんどの場合、単一のレコードをプルバックします。つまり、クエリですべての列がフィルタリングされます。 すべての列を検索する必要があるため、主キーを持つことは(レコードの一意性を強制することに加えて)まったく私に利益をもたらしますか?

2
REINDEXは危険ですか?
COUNT(*)主キーを持つ150,000行のテーブルを試しました。約5分間のツールなので、これはインデックス作成の問題であることがわかりました。 PostgreSQLマニュアルの引用: REINDEXは、インデックスの内容を最初から再構築するという点で、インデックスのドロップと再作成に似ています。ただし、ロックに関する考慮事項はかなり異なります。REINDEXは、インデックスの親テーブルの書き込みをロックしますが、読み取りはロックしません。また、処理中の特定のインデックスの排他ロックを取得し、そのインデックスを使用しようとする読み取りをブロックします(...)後続のCREATE INDEXは書き込みをロックしますが、読み取りはロックしません。インデックスが存在しないため、読み取りはインデックスを使用しようとしません。つまり、ブロッキングは発生しませんが、読み取りは高価な順次スキャンに追い込まれる可能性があります。 あなた自身の経験から、あなたは言うことができます: あるREINDEXING危険な?データの一貫性を損なうことはありますか? 時間がかかりますか? それは私のシナリオのおそらく解決策ですか? 更新: 私たちのために働いた解決策は、別の名前で同じインデックスを再作成し、古いインデックスを削除することでした。 インデックスの作成は非常に高速であり、インデックスサイズを650 MBから8 MBに削減しました。COUNT(*)withの使用にはbetween3秒しかかかりません。
17 postgresql 

2
Google BigTables(およびその他の統合DB)でのパフォーマンステストの取得と配置
特にデータベース自体が専用ツールを提供していない環境で、データベース操作のプログラムによるパフォーマンステストを実行するための効果的な方法は何ですか? たとえば、Google App Engineでは、ページ読み込み全体が特定のデータベース操作を含む1つの操作として評価されます。この問題は、SQLiteやその他の統合DBにも存在する可能性があります。テストが必要な選択および挿入(と同等)を完全に抽象化することは困難なので、これらの種類のクエリでより徹底的な診断を実行するための推奨データベースツールはありますか?


7
データベースからアプリのデータを更新する唯一の方法はポーリングですか?
アプリケーションは、できるだけデータベースから最新のデータを更新する必要があります。そのような場合、タイマーベースのデータベースの要求(ポーリング)の他に、データを取得する他の方法はありますか? 私はMS SQL Server 2008(および.NETアプリケーション+ Entity Framework)を使用していますが、他の種類のデータベースについても知りたいです。

2
CROSS APPLYは外部結合を生成します
パーティションで異なるSQLカウントへの回答として、Erik Darlingはこのコードを投稿し、以下の不足を回避しましたCOUNT(DISTINCT) OVER ()。 SELECT * FROM #MyTable AS mt CROSS APPLY ( SELECT COUNT(DISTINCT mt2.Col_B) AS dc FROM #MyTable AS mt2 WHERE mt2.Col_A = mt.Col_A -- GROUP BY mt2.Col_A ) AS ca; クエリの使用CROSS APPLY(ないOUTER APPLY)、なぜそこにある外側は代わりの実行計画に参加し、内側が参加? また、group by句のコメントを外すと内部結合が発生するのはなぜですか? データは重要ではないと思いますが、他の質問のkevinwhatによって与えられたデータからコピーします。 create table #MyTable ( Col_A varchar(5), Col_B int ) insert into …

1
Postgres:SET NOT NULLはCHECK制約よりも「効率的」です
では制約のためのPostgreSQLのドキュメント、それは言います 非ヌル制約は、機能的にチェック制約の作成と同等ですCHECK (column_name IS NOT NULL)が、PostgreSQLでは明示的な非ヌル制約の作成がより効率的です。 不思議なんだけど 「より効率的」とはどういう意味ですか? のCHECK (column_name IS NOT NULL)代わりに使用することの欠点は何SET NOT NULLですか? NOT VALID CHECK制約を追加して個別に検証できるようにしたい(したがって、制約の追加のAccessExclusiveLockために短時間だけ保持され、その後ShareUpdateExclusiveLock、より長い検証手順のために保持される): ALTER TABLE table_name ADD CONSTRAINT column_constraint CHECK (column_name IS NOT NULL) NOT VALID; ALTER TABLE table_name VALIDATE CONSTRAINT column_constraint; の代わりに: ALTER TABLE table_name ALTER COLUMN column_name SET NOT NULL;

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