MySQLについての質問です。


<テーブル構成>のテーブルBを、phpMyAdminで「修復」しました。
1時間くらい処理中になっています。

(1)これほど時間はかかるのでしょうか。

(2)そもそも、マージされているテーブル(B,C)を「修復」したり「最適化」するのは問題ないのでしょうか。

(3)テーブルBは稼働中で、データの出入りがあります。「修復」したり「最適化」するのは問題ないのでしょうか。


<テーブル構成>
------------------------------------
マージテーブルA
 テーブルB・・・100万件のデータ
 テーブルC・・・100万件のデータ
------------------------------------
※マージテーブルAは、テーブルB,Cをマージしています。
※インデックスはそれなりにあります。

回答の条件
  • 1人10回まで
  • 13歳以上
  • 登録:2010/03/11 12:07:11
  • 終了:2010/03/18 12:10:03

回答(1件)

id:b-wind No.1

b-wind回答回数3344ベストアンサー獲得回数4402010/03/11 12:43:23

ポイント60pt

MySQL :: MySQL 5.1 リファレンスマニュアル :: 13.6 MERGE ストレージエンジン

MERGE テーブルと言うことはテーブルB・Cは MyISAM 形式と考えて良いのか?

情報がだいぶ不足している。


(1)これほど時間はかかるのでしょうか。

サーバースペックもデータ量も分からない状態では答えようがない。

かかることもあるし、かからないこともある。


(2)そもそも、マージされているテーブル(B,C)を「修復」したり「最適化」するのは問題ないのでしょうか。

マージされているかどうかには関係がない。テーブルB,Cは独立した MyISAM テーブルとして存在し、

通常とは別のアクセス手段を用意しただけだから。

ただ、稼働中のデータベースに関してそういったメンテナンス系操作を行うのはパフォーマンス上のペナルティは大きい。


(3)テーブルBは稼働中で、データの出入りがあります。「修復」したり「最適化」するのは問題ないのでしょうか。

なにをもって「問題」とするかによる。

SQL 構文としての REPAIR TABLE を実施する事によってDBが壊れるなどの障害は基本的には発生しないはず。

ただ、前出の通りパフォーマンスには大きな影響を与えるので稼働中に行うのは好ましいことではない。


また、MyISAM の特性上本当に「修復」が必要な状態であれば、そもそもその時点で使用不能になっている。

MySQL :: MySQL 5.1 リファレンスマニュアル :: 13.4.1 MyISAM スタートアップオプション

id:webuser

ありがとうございます。

2010/03/16 19:38:28

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません