「みんな教えて! 選手権!!」開催のお知らせ

mysqlに大量のデータを毎日、取り込んでいるのですが、昨日から処理が遅くなり、今日はmysqlに入ることもできなくなりました。ODBCでテーブルをリンクして、データをある程度、削除したら入れるようになったのですが、1つのデータベースに対して、最大容量が決まっているのでしょうか?
(PC自体の容量に空きはあります)
もし、DBを作成する際に容量を指定できたり、広げたり、こうするとよい
などの対処方法がありましたら、教えてください。

A 回答 (5件)

あっぷあっぷになりそうです。

。(笑

気になったので調べてみました。
MyIsamに対してはやはり、OSに依存しています。
ただ、テーブル作成時にRow_sizeを決めれるようで
それを指定していれば、サイズに制限がかかっているのではないかと思います。
参考URLに記載されています。


確認ですが、
show table status like 'TABLE_NAME' \G
を実行すると、Data_length・Max_data_length
が表示されます。Data_lengthが現在でMax・・が最大値のはずです。。
それが、どの状態になっていますでしょうか?
近いのであれば、Maxを増やさなければなりません。
その場合、alter文で・・

alter table TABLE_NAME max_rows=ここにrow数記入;
Avg_row_lengthと、max_rowsでMax_data_lengthの
値が決まっているようです。。(参考URLに記載あり)

どうでしょう?確認してみてください。

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/create-ta …

この回答への補足

naochancomさん、回答ありがとうございます。
テーブルの最大データ長は、全テーブル4Gでした。
現在、利用している一番大きいテーブルでも800Mでしたので、問題はないようです。

やはり、OSに依存しているようでしょうか。
MySQLのバージョンをあげようとも思いましたが
この場合、直接の解決にはならないですよね。
1つのテーブルが最大4Gまで用意されているのにLinuxOSに依存されているため、2Gまでしかファイルを利用できないというのつらいですね。
この2Gという制限は、変更できないのでしょうか?

補足日時:2006/06/16 17:43
    • good
    • 0

テーブルタイプがMyIsamということなので


前回まで記載したInnoDBファイルサイズの
オーバーではないと思います。

MyIsamのファイルとなるとOSのファイルサイズ
に依存されますので、Linuxだったら、最大2G
でしょうか?それを超えていなければ、
問題ないと思います。
テーブルには、テーブル構成を保持するファイル、
データを保持するファイル、インデックスを保持するファイルの3つで構成されています。
このデータを保持するファイルとインデックスを保持するファイルがOSの最大ファイルサイズを超えようと
していないか確認できますでしょうか?

テーブル名.myd と テーブル名.myi ファイルだった
と記憶しています。

これ以上は、私には想定するところがありません。

この回答への補足

回答ありがとうございます。
テーブル名.mydとテーブル名.myiファイルを調べました。
最大ファイルサイズというのは、全テーブルの合計でしょうか?
全テーブルの合計としてのファイルサイズとしては2Gを超えていますが、各テーブルは300M程度です。

my.cnfにinnonDBの設定しか記載されていないのですが問題あるでしょうか?
コンパイルに問題があったのでしょうか?
お手数をお掛けします。
宜しくお願いいたします。

補足日時:2006/06/15 17:04
    • good
    • 0

#2です。



まず、最大容量をオーバーしていないか確認して
いただけないでしょうか?
その対象テーブルに対し、テーブルタイプがInnoDB
を使用していて、ibdata1ファイルが128Mを超えている
(近い)のであれば、ファイルサイズを増やすか、
ファイル追加で対応できると思います。

この対象テーブルタイプがMyIsamであれば、関係ありませんので、する必要は有りません。

以前、私も容量オーバーになったことがあったのですが、エラーが発生したと記憶しています。
なので、ちょっと今回の件は違うのかな?と感じております。

サイズを確認できれば、切り分けが出来ると思いますので、確認をお願いします。

この回答への補足

回答ありがとうございます。
テーブルタイプですが、全てMyIsamでした。
特定テーブルに対して、アクセスが遅くなるというよりも
このDBに対して、アクセスが遅くなります。
新規で他にDBを作成すると快適に作業を行えます。

1つのDBに対して、最大容量を指定する個所があるのでしょうか?
テーブルを作成しすぎなのでしょうか?
(現在のテーブル数…440)

宜しくお願いいたします。

補足日時:2006/06/14 09:15
    • good
    • 0

憶測で記載しますが、、



TableタイプがInnoDBになっていて、設定している最大データをオーバーしたのではないでしょうか?

my.ini か my.cnfでinnodb_data_file_pathを設定されていないでしょうか?
その場合でしたら、autoextendをつけることによって、自動拡張に変更することが出来ます。。

でも、エラーは出ないんですよね??

参考URL:http://dev.mysql.com/doc/refman/4.1/ja/innodb-st …

この回答への補足

回答ありがとうございます。
mysqlのバージョン:4.2.25
OS:gentoo linuxになります。

my.cntに
innodb_data_file_path = ibdata1:10M:autoextend:max:128M
と設定されているのですが、単純にこの数値をあげればよいのでしょうか?
エラーは出てきませんでした。
データを取り込もうとSQLを実行すると処理がフリーズしてしまうようなイメージです。
宜しくお願い致します。

補足日時:2006/06/13 11:47
    • good
    • 0

サーバーOSやMySQLのバージョン、テーブルのタイプ


くらいかかなければ回答がぶれると思います。
重い処理というのは何をやっても重いという理解で
よろしいのですね?
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


おすすめ情報