タグ付けされた質問 「disk-space」

データベースまたはデータベースオブジェクトによって使用されるストレージスペースに関する質問。

4
PostgreSQLテーブルの行のサイズを測定する
PostgreSQLテーブルがあります。素晴らしくて速いのselect *に対し、非常に遅いselect idです。行のサイズが非常に大きく、転送に時間がかかっているか、または他の要因である可能性があります。 すべてのフィールド(またはほとんどすべてのフィールド)が必要なので、サブセットを選択するだけでは簡単に修正できません。必要なフィールドの選択がまだ遅いです。 以下に、テーブルスキーマから名前を除いたものを示します。 integer | not null default nextval('core_page_id_seq'::regclass) character varying(255) | not null character varying(64) | not null text | default '{}'::text character varying(255) | integer | not null default 0 text | default '{}'::text text | timestamp with time zone | integer | timestamp with time …

5
データベースを縮小しても大丈夫ですか?
シュリンクは悪魔です。ページの順序を逆にし、皮膚がん、データの断片化、地球温暖化の原因となります。リストは続きます...つまり、100 GBのデータベースがあり、50 GBのデータを削除するとします。1つのテーブルではなく、データベース全体のレベルで古いデータを削除し、90%をカバーします。テーブル-これはデータベースを縮小するための適切なユースケースを構成しますか? そうでない場合、データベースからこのような高い割合のデータを削除した後に家をきれいにするために取る適切な手順は何ですか?インデックスの再構築と統計の更新の2つを考えることができます。ほかに何か?

6
ディスク領域の割り当てと使用領域を報告するクエリ
1つのアプリケーションで合計6つのデータベースを使用しており、6つの自動拡張データベースすべて(SANストレージ経由)で共有できるのは4TBのみです。 SQL Server Management Studioの[タスク]> [圧縮]> [データベース]オプションで[現在割り当てられているスペース]および[使用可能な空きスペース]属性を示す単一のデータベースのクエリ(レポート)を作成します。 次に、これらの数値をTBに変換し、各データベースを合計して、残されたスペースの大まかな見積もりを取得します。T-SQLクエリを介してこれらのフィールドにアクセスできますか?その場合、クエリはどのようになりますか?

1
PostgreSQLでディスク領域を再利用するにはどうすればよいですか?
この質問は、データベース管理者のStack Exchangeで回答できるため、Stack Overflowから移行されました。 5年前に移行され ました。 私はccaを持っていたいくつかのテーブルを持つ9.1データベースのローカルインストールを持っています。300のmioレコードとデータベースは約20 GBに成長しました。その後、delete fromすべてのレコードを削除するコマンドを発行しました(使用する必要がありましたがtruncate、それを知りませんでした)。だから、ディスク領域を再利用するためにdbを完全に空にしましたが、それはまったく役に立ちません。私の問題はこれと同じように見えますが、解決策は提供されていません。私はすでにこのスレッドと「ディスク領域の回復」に関するドキュメントをチェックしましたが、それでも解決策が見つかりません。このコードを使用して、すべてのテーブルのサイズを取得します SELECT nspname || '.' || relname AS "relation", pg_size_pretty(pg_total_relation_size(C.oid)) AS "total_size" FROM pg_class C LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace) WHERE nspname NOT IN ('pg_catalog', 'information_schema') AND C.relkind <> 'i' AND nspname !~ '^pg_toast' ORDER BY pg_total_relation_size(C.oid) DESC LIMIT 15; …

2
すべてのデータベースをダンプせずに、innodbファイルibdata1を縮小するにはどうすればよいですか?
InnoDBはすべてのテーブルを1つの大きなファイルに保存しますibdata1。 大きなテーブルを削除した後、ファイルはテーブルがどれほど大きくてもそのサイズを維持しています。データベース全体(合計で数百GBあります)をダンプして再インポートすることなく、そのファイルを圧縮するにはどうすればよいですか? 理由は、ドロップをまだロールバックできるからだと思います。私の場合、必要はありません。

1
ディスクスペースをオペレーティングシステムに戻すVACUUM
VACUUM通常、特別な場合を除いて、オペレーティングシステムにディスク領域を返しません。 ドキュメントから: 標準形式でVACUUMは、テーブルとインデックス内の無効な行バージョンを削除し、将来の再利用に使用可能なスペースをマークします。ただし、テーブルの最後の1つ以上のページが完全に空になり、排他的なテーブルロックを簡単に取得できる特別な場合を除いて、オペレーティングシステムに領域を返しません。対照的に、VACUUM FULLデッドスペースのない完全に新しいバージョンのテーブルファイルを書き込むことにより、アクティブにテーブルを圧縮します。これにより、テーブルのサイズが最小になりますが、時間がかかる場合があります。また、操作が完了するまで、テーブルの新しいコピー用に追加のディスク領域が必要です。 問題は、このデータベースの状態をどのone or more pages at the end of a table become entirely freeように達成できるかということです。これはを介して行うことができますがVACUUM FULL、実装するのに十分なスペースがありません。他の可能性はありますか?

3
テーブルのデータスペースが生データの4倍のサイズを占めるのはなぜですか?
490 M行と55 GBの表スペースがある表があるため、1行あたり約167バイトです。テーブルには3つの列があります:a VARCHAR(100)、a DATETIME2(0)、およびa SMALLINT。VARCHARフィールド内のテキストの平均の長さは約21.5なので、生データは行ごとに約32バイトである必要があります。22+ 2はVARCHAR、6はDATETIME2、および2は16ビット整数です。 上記のスペースはデータのみであり、インデックスではないことに注意してください。[プロパティ]で報告される値を使用しています| ストレージ| 全般| データスペース。 もちろん、ある程度のオーバーヘッドが必要ですが、特に大きなテーブルの場合、1行あたり135バイトはかなり多いようです。これはなぜでしょうか?他の誰かが同様の乗数を見ましたか?必要な追加スペースの量に影響する要因は何ですか? 比較のために、2つのINTフィールドと1 M行のテーブルを作成してみました。必要なデータ領域は16.4 MBでした。8バイトの生データと比較して、行あたり17バイトです。INTとVARCHAR(100)実際のテーブルと同じテキストが入力された別のテストテーブルは、行ごとに39バイト(44 K行)を使用します。 したがって、実動テーブルにはかなり多くのオーバーヘッドがあります。これは大きいからですか?インデックスサイズはだいたいN * log(N)になると思いますが、実際のデータに必要なスペースが非線形である理由はわかりません。 ポインタを事前に感謝します! 編集: リストされているすべてのフィールドはNOT NULLです。実際のテーブルには、VARCHARフィールドとDATETIME2フィールドの順にクラスターPKがあります。2つのテストの場合、最初のテストINTは(クラスター化された)PKでした。 重要な場合:テーブルはpingの結果の記録です。フィールドは、URL、ping日付/時刻、およびミリ秒単位の待機時間です。データは常に追加され、更新されることはありませんが、データは定期的に削除され、URLごとに1時間あたり数個のレコードに削減されます。 編集: 非常に興味深い答えがここにいることを示唆している、多くの読み取りと書き込みとインデックスのために、再構築は有益ではないかもしれません。私の場合、消費されるスペースは懸念事項ですが、書き込みパフォーマンスがより重要な場合は、ゆるいインデックスを使用した方が良いかもしれません。


1
SQL Serverボックスのボリュームを拡張するにはどうすればよいですか?
ここにあるシステム運用者(またはこの経験を以前に経験したことのある人)に対する質問があります。 私の会社は、運用中の既存のSQL Serverボックスに追加のディスク領域を割り当てたいと考えています。ボリュームの拡張(ディスクの管理の「ボリュームの拡張...」)をオンラインで実行できるのか、またはSQL Serverサービスをシャットダウンする必要があるのか​​疑問に思っています。 これを行うためにSQL Serverサービスを停止する必要がある理由、または日中にこの操作を実行するだけでよいのですか? システム仕様が関連する場合に備えて。これは、Windows 2012 R2およびSQL Server 2008 R2を実行する実際のボックス(仮想化なし)です。 ありがとう!

2
varchar列のサイズを小さくすると、データベースファイルにどのような影響がありますか?
データベースにはVARCHAR(MAX)、a VARCHAR(500)(またはmaxよりもはるかに小さいもの)で十分な列を持つテーブルがいくつかあります。当然、これらをクリーンアップし、サイズをより合理的なレベルに下げたいと思います。これを行うための「方法」は理解しています:私の質問は、これらの列を変更すると、ディスク上のページとエクステントに何が影響するのでしょうか?(列を拡大すると何が起こるかについて多くの情報がありますが、列を縮小すると何が起こるかに関する情報を見つけるのが困難です。) 一部のテーブルは行数が非常に少ないため、変更のコストについては心配していませんが、一部は非常に大きく、潜在的に再編成されて多くのブロッキング/ダウンタイムが発生することを心配しています。実際には、メンテナンスウィンドウを見積もる方法が必要です。一般に、この場合のデータベースエンジンの動作をよりよく理解したいと思います。 前もって感謝します! 編集: 見ているテーブルは20個ありますが、行カウントが1,000を超えるテーブルは半分しかありません。最大のものにはほぼ100万行あります。最悪の違反者は、350,000行と4 VARCHAR(MAX)列からなるテーブルで、このVARCHAR(500)レベルまで縮小できます。

1
Postgres:マテリアライズドビューが使用するディスク容量を確認しますか?
Postgresでインデックスとテーブルのサイズを確認する方法を知っています(バージョン9.4を使用しています)。 SELECT relname AS objectname, relkind AS objecttype, reltuples AS "#entries", pg_size_pretty(relpages::bigint*8*1024) AS size FROM pg_class WHERE relpages >= 8 ORDER BY relpages DESC; しかし、これには具体化されたビューは表示されません。使用しているディスク容量を確認するにはどうすればよいですか?

2
ディスク領域を解放する方法は?どのログ/ディレクトリを削除しますか?
Linuxマシンのディスク領域を解放したい。スペース使用量をドリルダウンすると、次のディレクトリのサイズが大きいことがわかりました /u01/app/11.2.0/grid/cv/log /u01/app/11.2.0/grid/log/diag/tnslsnr/r1n1/listener_scan2/alert (Contains xml files) /u01/app/11.2.0/grid/rdbms/audit(Contains .aud files) /home/oracle/oradiag_oracle/diag/clients/user_oracle/host_XXXXXXXXXX/alert(Contains xml files) /u01/app/oracle/diag/rdbms/crimesys/crimesys1/alert (Contains xml files) これらのディレクトリからコンテンツを削除できますか?注:ディレクトリではなくコンテンツを意味します。

2
ファイルが移動されたInnoDBテーブルを回復する方法
そのため、レプリケーションストリームでセットアップされたテストデータベースサーバーがあります。名前を超えて、スレーブdatadirのスペースをすぐにいっぱいにする最適化が行われました。Mysqlは忠実に、もう少しスペースを待っていました。 このdatadirはmysqlのdatadirとしてのみ使用されるファイルシステムであるため、他に解放するものはありませんでした。 レプリケーションストリームの一部ではない4ギガのinnodbテストテーブルがあったので、それが機能するかどうかを確認するために何かを試してみようと思ったのです。 これが私がとったステップです 移動しようとしていたテーブルをフラッシュしました 読み取りロックを設定しました(書き込みがなく、レプリケーションストリームにない場合でも) .frmと.ibdをファイルシステムにコピーし、予備の部屋を用意しました テーブルのロックを解除しました そのテーブルは切り捨てられました-これにより、最適化が完了するのに十分なスペースが解放され、レプリケーションが再び開始されます。 mysqlのスレーブ化/シャットダウンを停止する ファイルをtmpからデータディレクトリにコピーして戻します mysqlを再起動します .errログには何も表示されず、見た目は良好です。mydbに接続して使用します。ショーテーブルで私がいじっていたテーブルを参照してください。しかし、私が試してみると select * from testtable limit 10; エラーが出ます ERROR 1146 (42S02): Table 'mydb.testtable' doesn't exist 私がこれまでに伝えることができることから、私は他のすべてのテーブルから問題なく読むことができ、複製は苦情なしでバックアップを開始しました。 この時点から回復するためにできることはありますか?必要に応じてゼロから再構築できますが、他の人がこのベンチャーについて一般的に考えていることを知りたいと思いました。完璧な結果が得られなかった一連の手順について何かありましたか? これがテストサーバーでない場合、「ライブで実行」して何が起こるかを確認できませんでした。私がそれを気に入らなければならなかった場合、本番スレーブのスペースを一時的に解放する最良の方法は何でしょうか?

2
sys.allocation_unitsおよびsp_spaceusedのスペース使用量
DMVがページ数と行数に関する正確な情報を保持していないことは既知の事実です。ただし、統計を更新しても、なぜ更新されないのかわかりません。 私は監視ツールに取り組んでおり、各インデックスとデータのディスクサイズなどを知りたいと思っています。最終的には、適切なフィルファクターなどを見つけたいと思っています。 私の関数と古いsp_spaceusedで使用されるスペースは、スペース使用量で少し異なりますが、レコード数では異なりません。 私のセレクトに足りないものがありますか? これはsp_spaceusedです(その後、数値をMBに変換します)。 sp_spaceused 'tblBOrderRelationship' go select 318008/1024.00 AS reserved, 140208/1024.00 AS data, 177048/1024.00 AS index_size, 752/1024.00 AS unused しかし、以下のselect \ codeのコードを実行すると、わずかに異なる数字が表示されます。 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SELECT schema_name(t.schema_id) as SchemaName, t.NAME AS TableName, t.type_desc, t.is_ms_shipped, t.is_published, t.lob_data_space_id, t.filestream_data_space_id, t.is_replicated, t.has_replication_filter, t.is_merge_published, t.is_sync_tran_subscribed, --t.is_filetable, i.name as indexName, …

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 …

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