データベース管理者

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

2
データベースを削除した後のディスク容量の解放
私は開発システムで作業しており、開発目的のために使用しているデータベース(「foo」など)に復元しています。よじ登って作業しているので、DROP DATABASE fooを実行しています。しかし、ディスクのすべてのスペースを使い果たしてしまったことにすぐに気付きました。くだらない。 別の論理データベースのVACUUM FULLは、以前に削除したデータベース(foo)のスペースを解放しますか?別の論理データベースからこれを試してみましたが、空き領域が回収されましたが、作成したすべてのCREATE DATABASE / DROP DATABASE呼び出しを説明するのに十分だとは思いません。私が実行した論理データベースをVACUUMしただけかもしれません。 合計データベース初期化を行わずにそのスペースを再利用する方法が必要ですか? 編集 だから私はバックアップからデータベースを再初期化し、これらのステップをほぼ実行した。復元後、ディスク上の1トンの領域を回収しました!これは今のところ機能しますが、ドロップされたデータベースをクリーンアップする方法に関するヘルプはまだ有用です。 編集2 だから私はこの問題に関するいくつかの詳細情報を収集することができました...ここに私が例として考え出したものがあります: Initial partition size: Size Used Avail Use% Mounted on 25G 8.1G 16G 35% /apps1 After creating my new database and populating it: 25G 18G 6.4G 73% /apps1 After Dropping the database using "DROP database mydb" from …

2
複数のクエリ列に同じCASE WHEN条件を使用する
SELECT複数の列が同じCASE WHEN条件を使用して、条件が1回だけチェックされるように句を書き換える「より良い」方法はありますか? 以下の例を参照してください。 SELECT CASE testStatus WHEN 'A' THEN 'Authorized' WHEN 'C' THEN 'Completed' WHEN 'P' THEN 'In Progress' WHEN 'X' THEN 'Cancelled' END AS Status, CASE testStatus WHEN 'A' THEN authTime WHEN 'C' THEN cmplTime WHEN 'P' THEN strtTime WHEN 'X' THEN cancTime END AS lastEventTime, CASE testStatus WHEN …

4
Integration Servicesを使用せずにメンテナンスプランをエクスポートできますか?
SQL Serverインスタンスから簡単なメンテナンスプランをエクスポートしようとしています。 ソース管理へのエクスポートをチェックし、エクスポートされた保守計画を機能的に同一のインスタンスに適用します。 StackOverflowとSQL Server Newbieは、Integration Servicesを使用して保守計画をエクスポートすることをお勧めします。 エクスポートターゲットでIntegration Servicesに接続しようとすると、次のエラーが表示されます。 コンピューター「WEBSERVER」上のIntegration Servicesサービスへの接続が次のエラーで失敗しました:指定されたサービスはインストールされたサービスとして存在しません。 このボックスは、コンシューマアプリケーションにデータを提供するためだけに使用するため、WEBSERVERでIntegration Servicesを無効にすることにしました。WEBSERVER上のすべてのデータは、バックエンドインスタンスから複製されます。Integration Servicesは、バックエンドインスタンスでデータを処理するために頻繁に使用されます。 Integration Servicesを使用せずに保守計画をエクスポートする文書化された方法はありますか?マイクロソフトはサポートしていますか?

2
PHP-> mysql永続接続プーリングmysql_pconnectなし-可能ですか?
しばらくの間、これを行うための良い方法を見つけようとしてきました。しかし、これを行うための適切なピースを見つけるのに苦労しました。私はこれが可能でなければならないと推測しています。 ここで簡単に言えば、私が達成したいことです。 PHP / Other front end -> [SOCKET] -> Locally hosted 'pooler' -> [Pool of persistent TCP/IP connection(s)]-> Externally hosted MySQLD そのようなツール/物事を行う方法は存在しますか? 基本的に、mysql_pconnectを使用せずに永続的なmysql接続を実装したいと思います。 永続的な接続が必要ないなどについて議論し始めないように、私は丁重にお願いします。TIME_WAITポートが不足しており、このタイプのシステムが実装された場合に解決される他の問題があります。 つまり、要約すると...ローカルエンドに基づいたソケットであるmysql接続プーラーを実装し、外部でホストされた(LAN)mysqlサーバーへの接続を維持します。 mysql接続がリサイクルされることで影響を受けるトランザクションやその他のものは使用しません。 マスター+マスターpercona 5.5クラスターを使用して、フロントエンドでLinuxを実行しています。 ありがとう!
12 mysql 

2
ビット列とブール列
ビットフィールドはデータの単なるバイナリ表現であり、わずかに「奇妙な」方法で照会する必要があることを考えると。 ブール値にビットフィールドを使用すると、実際に利点がありますか?私が見ることができることから、スペースが唯一の本当の利点であることを示唆しているようです。

2
TinyIntのSQLサーバーストレージ
SQL Serverでは、tinyintが9Bの行に格納されているのはなぜですか。何らかの理由で、NULLビットマップマスクの最後に追加の1バイトがあるようです。 tempdbを使用します。 行く CREATE TABLE TBL ( i TINYINT NOT NULL ); 行く tblに挿入(i) 値(1); 行く DBCC IND( 'tempdb'、 'tbl'、-1); 行く DBCC TRACEON(3604); -ページダンプはコンソールに移動します 行く DBCC PAGE( 'tempdb'、1,168,3); 行く 結果(DBCC PAGEの最下位バイトが最初に表示されるため、バイトを反転しました): Record Size = 9B 10000500 01010000 00 TagA = 0x10 = 1B TagB = 0x00 = 1B Null …

5
調査データベースの設計:回答をユーザーに関連付ける
調査データベースの概念モデルを実行しています。 目標は、ユーザーからの回答を保存することです(Androidアプリになります)。 ユーザー、質問、オプションの3つのエンティティがあります。 質問は(:例えば1つまたは複数のオプションがあります?あなたはどのように多くの従業員が持っていない 1-40、40から1000、+1000)を。 オプションにはテキスト(1〜40)と値(ユーザーが選択した値)があります。 ユーザーはこれらのオプションの1つ(または複数)を選択します。 私の概念設計は次のとおりです。 回答をユーザーに関連付ける方法がわかりません。 その関係をどのように表現できますか? オプション値を表す別のエンティティはありますか? このモデルは、質問と事前に作成された回答(提供された回答)を保存し、さまざまな調査で再利用できるようにします。 私はこのような質問を表さなければなりません: この質問はこれに関連しています:調査データベースの設計:最初のバージョン。エラーはありますか?

3
GROUP BY句を使用した場合よりも、GROUP BY句を使用した場合の方が、集計クエリが大幅に高速になるのはなぜですか?
GROUP BY句を使用しない場合よりも、句を使用した場合に集計クエリの方がはるかに高速に実行される理由を知りたいのです。 たとえば、このクエリの実行には約10秒かかります SELECT MIN(CreatedDate) FROM MyTable WHERE SomeIndexedValue = 1 これは1秒もかかりませんが SELECT MIN(CreatedDate) FROM MyTable WHERE SomeIndexedValue = 1 GROUP BY CreatedDate CreatedDateこの場合は1つしかないため、グループ化されたクエリは、グループ化されていないクエリと同じ結果を返します。 2つのクエリの実行プランが異なることに気付きました-2番目のクエリは並列処理を使用しますが、最初のクエリは使用しません。 GROUP BY句がない場合、SQLサーバーが集計クエリを異なる方法で評価するのは正常ですか?また、GROUP BY句を使用せずに最初のクエリのパフォーマンスを改善するためにできることはありますか? 編集 OPTION(querytraceon 8649)並列処理のコストオーバーヘッドを0に設定するために使用できることを学びました。これにより、クエリで並列処理が使用され、ランタイムが2秒に短縮されます。 SELECT MIN(CreatedDate) FROM MyTable WHERE SomeIndexedValue = 1 OPTION(querytraceon 8649) クエリはユーザーの選択時に値を入力することを目的としているため、実行時間を短くしたいので、グループ化されたクエリのように瞬時に実行するのが理想的です。今はクエリをラップしていますが、それが理想的なソリューションではないことはわかっています。 SELECT Min(CreatedDate) FROM ( SELECT Min(CreatedDate) as CreatedDate …

1
SQL Server DBAはWindows Serverについて何を知る必要がありますか?
前の質問と同様に、DBAはSSASについて何を知る必要がありますか?、本当に素晴らしい答えを生成しました(ありがとう、@ ConcernedOfTunbridgeWells!)、私は今、似たような質問をします: SQL Server DBAがWindows Serverを効率的に管理し、舞台裏で何が起こっているのか、そしてどの程度SQL Serverが実行されている基本OSを知ることが重要かを理解するために、Windows Serverについて知る必要があるもの優れたDBAになるには? 個々の機能、書籍、経験から、あなたはそれに名前を付けることができます!

3
ソーシャルネットワーク/ナレッジベースコミュニティ向けのデータベースの提案
夏に始めたい新しいプロジェクトのために、さまざまなデータベースタイプとDBMSを検討しています。 MySQLとpostgreSQLでシステムを構築しましたが、今ではデータベースに関する知識と経験を広げたいと思っています。 私のプロジェクトは一種のソーシャルネットワーク/知識の集合体です。(まだそれを説明する用語を開発していない)。 私が見てきた: Cassandra(独自の種類のクエリ言語を使用); 機能が豊富なコンテンツと高性能なクエリ実行を実現するのに適しているようです。ただし、Java環境を使用する必要があるため、あまり熱心ではありません。Oracleとは何の関係もありません。 MongoDB(noSQLタイプのDBMS); 優れたスケーラビリティ。ただし、ビジネス情報クエリなどの実績のあるSQL言語で既に利用可能なすべての機能を失います。 システムの要件: データテキスト、日付、時刻、xml、小さな整数、ブロブ、 構造/動作:正規化された3NF、非リアルタイム、リレーショナル、スケーラブル、堅牢 環境: unix / linux、JAVAなし、できればCで実行 私が研究すべき他のデータベースシステムを教えてくれないかと思っていました。 Object Relational Databasesも見てきましたが、PHPオブジェクト(PDO)で動作するというアイデアはとても気に入っていますが、パフォーマンスは少し悪いようです。 ここにDBAがいるので、あなたが操作したこれらのシステムに関するフィードバックをいただければ幸いです。 ありがとう

2
一時テーブルとテーブル変数のINSERTパフォーマンスの違い
SQL Server 2005には次の問題があります。いくつかの行をテーブル変数に挿入しようとすると、一時テーブルを使用した同じ挿入に比べて時間がかかります。 これは、テーブル変数に挿入するコードです DECLARE @Data TABLE(...) INSERT INTO @DATA( ... ) SELECT .. FROM ... これは、一時テーブルに挿入するコードです CREATE #Data TABLE(...) INSERT INTO #DATA( ... ) SELECT .. FROM ... DROP TABLE #Data 一時テーブルにはキーもインデックスもありません。選択部分は2つのクエリで同じであり、選択によって返される結果の数は〜10000行です。選択を単独で実行するのに必要な時間は約10秒です。 一時テーブルバージョンの実行には最大10秒かかり、5分後にテーブル変数バージョンを停止する必要がありました。 クエリは一時テーブルへのアクセスを許可しないテーブル値関数の一部であるため、テーブル変数を使用する必要があります。 テーブル変数バージョンの実行計画 一時テーブルバージョンの実行計画

1
高度な並行ストレージシステム
たとえば、それぞれ300億行(合計サイズ4TB)の3つの巨大なテーブル(構造化データ)があり、多数の同時ユーザー(リモートLANマシンの並列osスレッド)が一部を読み取る必要があることを想像してくださいSELELCT WHERE GROUPBYクエリと非常に同時、たとえば10,000同時読み取りによるデータと、ユーザーがこれらのテーブルにデータを挿入する必要があります(更新なし)2000同時書き込み(データセンターLANネットワーク全体) 。ユーザーは、このストレージから可能な限り高速で読み取りと挿入を行い、各読み取りと書き込みが行われる場所はms〜1秒の範囲です。 そのような要件を満たすために、どのテクノロジーをお勧めしますか?これを実行できるデータストレージまたはキーバリューストアはありますか?クラウドはオプションではありません。 いくつかの明確化: ユーザーはデータをすぐに見る必要はなく、最終的な一貫性は許容されます。データはストレージが提供できるドライバーを介してアクセスされ、ユーザーは再びデータセンターのリモートマシンで実行される単なるスレッドになります。クエリは、主にSELECT WHERE GROUPBYに似ています。 データは表形式で、各行は約60バイトです。 DynamoDBまたは同様のソリューションを使用できないクラウドオプションはありません。データセンターで内部的にホストできる必要があります。 テーブルのすべてのデータを常に読み取ることができ、使用パターンは予測できません。結合または超長いクエリはありません。DRは必要ありませんが、合理的なHAは必要ですが、空想である必要はありません。すべての読者は、where句に基づいて行のバッチを取得しており、行は実際には関連していません。各行の長さを固定することもできますが、ストレージレイヤーが心配することを期待しています。 また、私の最大の懸念は、同時読み取りで発生するすべての同時書き込みです。 これに対するあなたの洞察は非常に高く評価されています。 さらに、これらのテーブルのうち3つにそれぞれ300億行の異なるオブジェクトタイプがあります

4
テーブルなしでデータベースにデータを保存する方法は?
学校で学んだのは、データをテーブルに保存するSQLだけでした。現在、データをXMLファイルに保存するプロジェクトに取り組んでいます。さらに、すべてのXMLにはビジュアルファイル(JPEG)への参照が含まれています。 XML自体には、1,000を超える座標点に加えて、データに関する追加情報が含まれています。 私の意見では、この情報をテーブルに保存しても意味がありません。それに、JPEGファイルをSQLで保存することもできませんでした。 適切な解決策は何ですか、または私の側の推論にエラーがありますか? ご覧のとおり、私はデータベースにはかなり慣れていません。したがって、建設的な提案、リンク、アドバイスは大歓迎です。

4
過去12時間の1時間ごとに1つのレコードを生成する簡単な方法を知っていますか?
過去12時間のイベント数を1時間ごとにグループ化したレポートがあります。簡単に聞こえますが、私が苦労しているのは、ギャップをカバーするレコードを含める方法です。 以下にテーブルの例を示します。 Event ( EventTime datetime, EventType int ) データは次のようになります。 '2012-03-08 08:00:04', 1 '2012-03-08 09:10:00', 2 '2012-03-08 09:11:04', 2 '2012-03-08 09:10:09', 1 '2012-03-08 10:00:17', 4 '2012-03-08 11:00:04', 1 その時間中にイベントがあるかどうかに関係なく、過去12時間ごとに1つのレコードを持つ結果セットを作成する必要があります。 現在の時刻が「2012-03-08 11:00:00」であると仮定すると、レポートには次のように表示されます: Hour EventCount ---- ---------- 23 0 0 0 1 0 2 0 3 0 4 0 5 0 6 …


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