• 締切済み

SQL Server 2000 テーブル未使用領域の解放について

テーブル内の未使用領域を解放する事が出来ずに困っています。 SQL Server 2000で運用中のデータベースで200MB程度を想定していた テーブルが、600MB程度になっていました。おかしいなと思い、 インデックスの再構築でもすれば何か状況が変わるかなと以下の 手順を行いました。 該当のテーブルをDBCC DBREINDEXした後、sp_spaceusedで確認  data と index_size のサイズは約半分に減少  しかしその分 unused が増加 この後データベースを圧縮すれば、unusedの部分が解放されるかと 思いやってみたのですが  unused の領域はそのままで解放されず  data と index_size のサイズが約倍に増加(ほぼ元に戻っている) という状況になってしまいました。 お聞きしたい事は以下の2点です。 1. データベースを圧縮すると、テーブル内のデータ量が増加したように見えるのですが、これは何が起きているのでしょうか? 2. テーブル内の未使用領域を解放する方法は無いでしょうか? よろしくお願いいたします。

みんなの回答

  • norayuni
  • ベストアンサー率79% (27/34)
回答No.1

直接質問されている2点への回答ではないのですが、 DBの容量が膨らんでいるのは インデックスと言うよりは、トランザクションログが膨らんでるような気がします。 バックアップモードがどうなっているのか、バックアップを定期的に行っているのかでトランザクションログの状況が変わります。

関連するQ&A

  • SQL server 2005・メンテナンスプランに関する質問です。

    SQL server 2005・メンテナンスプランに関する質問です。 SQL server 2005において、メンテナンスプランで毎日データベースの圧縮と バックアップ、不要データの削除を行っています。 不要データ削除により、バックアップファイルは日に日に小さくなって おり、 メンテナンスプラン開始日より約7GB小さくなっているのですが、 肝心の データベース本体(mdfファイル)は全く小さくなっていません。 データベースを右クリックし、タスク-圧縮を選ぶと、使用可能な空き領域が 7GBと表示されるので、不要データの削除により空き領域は増えているもの の、メンテナンスプランの圧縮時にその空き領域の解放が行われていない ようです。 そこで、質問ですが、メンテナンスプランの圧縮タスクで空き領域を解放する には下記の設定以外に何か特別な設定が必要なのでしょうか? 圧縮後に残す空き領域は10%、解放された領域はオペレーティングシステム に返すよう設定しています。 ※SQLのログで気になるのは、圧縮のメンテナンスプランは毎日実行され、 正常に実行されましたと記述されているのですが、実行時間が数十秒しか かかっていないのです。 20GBのデータベースの圧縮で数十秒しかかかっていないというのは実際には 正常に実行されていないのでしょうか? よろしくお願いします。

  • trancute tableで消したんですが、サイズが・・・

    今使っているデータベースのファイルサイズが2GBに なってしまったので、 一度まっさらなデータベースを用意しようと思い、 trancute tableで全てのテーブルの内容を消して、 データベースのバックアップをしました。 バックアップのファイルサイズは40MBぐらいになっているんですが、 復元するとファイル領域に元の2GBのサイズが確保されてしまいます。 どうすれば、ファイルサイズが小さくなるのでしょうか? よろしくお願いいたします。

  • SQLServer2005でデータ領域を更新したい

    SQLserever2005を使用しております。 あるデータベースをHDに入れて計算してたところ 「データベース '---' のトランザクション ログがいっぱいです。」 とエラーが出てしまい、HDの容量を見てみたら9MBほどしか空いてませんでした。 容量が空いてないのが原因かなと思いデータベースのテーブルを いくつか削除したのですが、HDの空き容量は変わっておりません。 恐らく過去にテーブルを作成した際、データ領域が追加されてしまい、 削除してもそのデータ領域が変わっていないのではないかと思うのですがこのデータ領域を更新することは出来ないでしょうか? [要するに削除した分のデータ領域をHDの空き容量に反映できないのでしょうかという意味です] ご教授宜しくお願いします。

  • 表領域サイズについて

    現在Oracle10gにてDB構築しているのですが、表領域サイズについてよくわからないので詳しい方がいらしたら教えてください。 以下の3つのテーブルを同一表領域内に入れたいと考え、表サイズの合計サイズ分の表領域を確保してそこにテーブルを作成しようとしたときに領域が足りずにエラーが発生します。 テーブルA 604,800KB テーブルB 444,352KB テーブルC 725,760KB 合計サイズ:1,774,912KB→確保サイズ:1,740MB ブロックサイズ:16KB しょうがないので少しずつ拡張して入るように調整したところ「1,750MB」確保したところ無事に作成することができました。 Enterprise Managerコンソールで使用量を確認したところ「1,744.063MB」となっていました。 約10MBほど多く領域が取られているのですが、この現象についてご存知の方がいらっしゃいましたらご教授願えませんでしょうか。 ちなみに他の領域についても同様に計算どおりのサイズになっておらず、増えているサイズはマチマチです。 よろしくお願いいたします。

  • データベースの圧縮について

    お世話になります。 初歩的な質問かもしれませんが、よろしくお願いします。 SQL Server 2000 を使用しています。 比較的大きいサイズのデータベース「A」があります。 Dataフォルダ内のサイズは次の通りです。 ・A.mdf 50MB ・A_1.mdf 4.4GB ・A_log.ldf 1.2GB この「A」を別の用途で使用したいため、全てのテーブルのデータを削除しましたが、Dataフォルダ内のサイズがほとんど変わりません。 プロパティのデータベースの圧縮で見ると、空き容量が98%と表示されているので、無駄な領域が多いのは分かるのですが、実際に圧縮をかけても小さくなりませんでした。 方法が悪いのかもしれませんので、データベースを圧縮する手順を教えて頂ければ幸いです。 よろしくお願いします。

  • インデックスの領域について

    インデックスの領域について教えてください。 オラクルDBを使用しているのですが、インデックスを作成した場合、何も指定しなければ、エクステントサイズ、エクステント数、はデフォルト値になると思うのですが、 追加の数や、最大数はテーブルの何を元に決定すればいいのでしょうか? テーブルの項目数などを元に決定すればいいのでしょうか? インデックスの領域についてあまり良く理解していないのが原因ではあるのですが ...勉強不足です。 インデックスの領域についても、お教え願えないでしょうか 宜しくお願い致します。

  • 表領域の使用率がもうすぐ100%

    お客様に納めているDBの表領域がもうすぐで 100%使用済み状態になります。 そこでなんらかの対応をしなくてはなりません。 みなさんならどのように対処しますか? 私の考えは 削除できるデータ(テーブル)があれば 削除して使用率を下げます。 もし、削除できるデータがない、または たいして空き領域が増えなければ 表領域を拡張しようと思っています。 ■表領域拡張のメリット・デメリット ・メリット 使える領域が増える ・デメリット バックアップファイルが大きくなる。 バックアップに時間がかかる。 ※データベースファイル ※expコマンドのダンプファイル ※Oracleのバックアップファイル 表領域を拡張するを嫌う方もいらしゃると思います。 技術者みなさんのいろいろ考えが知りたいです。 よろしくお願いいたします。

  • HDDの空き領域が無くなった場合

    HDDの空き領域が少なくなると警告バルーンが表示されますが、 2度目のバルーンが表示された後(大体100MBを切ったあたりから)空き領域を調べると徐々に領域が増えていき、 最終的に1GBくらい空き領域ができると止まるのですが、 これは何らかのファイルが削除されているのか、それとも古いデータが圧縮されているのでしょうか? また、後者の場合この繰り返しで圧縮の限界が来た場合どうなるのでしょうか。 宜しくお願いします。

  • 大きいデータ数のテーブルに対するインデックス作成

    mySQL server 5.1 でのindex作成について質問です かなり大きいデータ数(1000億)のテーブルを扱う必要があり検索速度向上のためにindexを作成しようとしています。テーブルのdouble型のカラムに対してインデックス作成コマンドを入力しましたが(create index)、数日経ってもまだインデックス作成が終わりません。長すぎて何か問題でも起きているのでは、と思ってのですが同様の形式のサイズの小さいデータベースに対して同様の処理を行うと問題なく終わります。 なんらかの方法でインデックス作成のスピードを上げることは可能でしょうか?たとえばint型のデータ型に変換するとスピードが向上するなどはあるでしょうか?

    • ベストアンサー
    • MySQL
  • SQL 2005のデータベースファイルのサイズ変更について

    こんにちは。 現在、基幹システムのDBとして、SQL Sever 2005 を使用しております。 稼動1年が経過した現在、データそのものの容量は50GB程度なんですが、導入時、ストレージ自体に余裕があったため、データベースファイルの初期サイズをかなり大きく採ってしまい、バックアップに非常に時間がかかっております。(データ増加率を間違えました・・・)  ・データベースファイル 合計8個  各ファイルサイズ 75GB   データベース容量 600GB 増加率から、データベース容量を半分の300GBに縮小したいと思っております。 縮小するための方法を教えていただけないでしょうか?