• ベストアンサー

列サイズ変更時、DB停止は必要?

すみません、どなたか教えて下さい。 列のサイズをchar(128)⇒char(300)に変更したいのですが、 システム稼働中に変更処理を行っても、DBへのデータ登録等は問題ないでしょうか? また、サイズ変更処理は正常に終わりますでしょうか? ご存知の方がいらっしゃいましたら、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • 3rd_001
  • ベストアンサー率66% (115/174)
回答No.2

列の拡張ぐらいでしたらロックがかかるので大丈夫でしょう。 しかし、データ量が多いと負荷がかかりますので 業務時間帯に行うのはやめた方がよいと思います。 ※注意点 ManagemrntStudioからテーブルのデザインから変更しようとすると 以下の流れで変更を適用されます。 ・変更適用済みのワークテーブル作成 ・データコピー ・元テーブルと同じ権限を付与 ・本テーブル削除 ・ワークテーブルを本テーブルに変更 ・プライマリーキー作成 なので、一瞬ですがテーブルがなくなります。 Alter table文で変更すると本テーブル自体に変更が行なわれます。

user10
質問者

お礼

アドバイスありがとうございました。 注意点もとても参考になりました。 テストでテーブルのデザインから変更した時、とても時間がかかったので、Alter table文で実行しようと思っています。 クエリアナライザでの実行ですが、コマンドラインから?実行した方が負荷はかからないのでしょうか?

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

ロックが掛っているとDDLも待ちになります。 したがって実行中のトランザクションがそれでコミットされたりすることはないです。 カラムの拡張ですから、DDLがエラーになることもないと思います。 ただ、件数が多い場合はDDLの実行に時間がかかって、その間他のトランザクションがタイムアウトする恐れはあるので、 アクセスの少ない時間帯を選ぶか、メンテナンス時間を設けるかした方がよいと思います。

user10
質問者

お礼

アドバイスありがとうございました!! 件数が多いので、時間帯を考えたいと思います。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • DB2でテーブルのサイズを見たい

    DB2で、テーブルのサイズやスキーマのサイズ(実際にデータが何MBあるのか)を知りたいです。 ご存知の方、いらっしゃいましたら、教えて下さい。

  • ランダム文字列をDBにINSERT

    はじめまして。お世話になります。 LAMPでWEBシステムを作成しております。 ランダムな文字列をDBにINSERTする処理に関して質問させて頂きます。 条件: ・DBに入るランダムな文字列は重複不可。 ・ランダムな文字列は[a-zA-Z0-9]の10桁とする。 ・1度の処理で、ランダムの文字列は確実にINSERTさせる。 ・同時に多数の処理が走ることがある。 ・処理は速いに越したことない(DBの負荷も低めがよい) 環境: PHP 4.4.4 Mysql 5.0.33 使用ストレージエンジン:MyIsam 私が思いついたのが以下の2通りです。 (1) ランダム文字列が入るカラムをユニークキーとし、PHP側で作成されたランダム文字列をINSERT。 重複していたらエラーが返ってくるが、正常にINSERTされるまでPHP側でループ。 (2) 対象テーブルをロックし、PHP側で作成されたランダムの文字列をSELECT。 なければその文字列をINSERTし、テーブルロック解除 (1)はループが少し怖く、(2)はDBへの負荷がかかってしまいそうですが どちらがよいでしょうか? もしくは、他に何か方法があればご教授頂けるとありがたいです。 また、現在MyIsamを使用しておりますが、場合によってはストレージエンジンの変更も 考えておりますのでその点も考慮して頂けると幸いです。 ちなみに検索条件は、ランダムの文字列をキーに全てのデータを取得するくらいです。 そのテーブルは、カラム数15、レコード数1,000万の見込みです。 以上、長くなりましたがよろしくお願いします。

    • ベストアンサー
    • PHP
  • Varcharサイズ変更後にエラー

    こんにちは。宜しくお願いします。 かなり古いシステムでVB6で開発されているものがあるのですが、昨日、データーベース(SQLServer2005)のとあるテーブルの列のサイズをVarchar(1000)からVarchar(2000)へ変更しました。 すると、いままで問題なく稼動していたシステムにエラーが発生しまして、デバッグしてみると、SELECT文で取得した変更箇所の列の値が、NULLで戻ってきました。 NULL値の対策として、IsNull関数を使用して、NULL値の場合には、別の文字列に変換するようにしてあるのですが、IsNull関数ではNull=Falseを返します。 いろいろネットで文献を探しまして、Where句に指定している列名をSELECT句に含まないといけないという記述を発見しましたが、実行しても結果は変わりませんでした。 なにかSQLServer側で意識しなくてはいけない事があるのでしょうか。 当方、DBにはあまり詳しくないので、原因に心当たりのある方はご教授頂ければ幸いです。

  • 正規表現文字列をDB登録

    正規表現に詳しくないことと、PHPも携わったばかりなので、苦戦しています。ご教授いただけると助かります。 以下のようなことをやろうとしています。 1.フォームで入力された正規表現を文字列としてDBに登録していきます。 例{http://[w-.]*test_site.jp}i 2.登録データを取り出して、preg_replace()を使いたいです $url_text = {http://[\w\-.]*test_site\.jp}i $db_data ←1のデータ(配列になってます) preg_replace($db_data, '', $url_text, -1) そうすると、$db_dataの中身は\がないために、エラーとなります。 Warning: preg_replace(): Compilation failed: range out of order in character class at offset 10 DBから取得した後に、変換するような関数などあるんでしょうか。 それとも他の方法を探したほうがよいのでしょうか。 一致したものを省きたいような処理なのですが・・・。 ためしにpreg_quote()をかけてみましたが変な風に置換されてダメでした。 うまく説明もできなくて申し訳ないですが、何か良い案ありますでしょうか。 必要であれば、補足いたします。 ぜひお願いいたします。

    • ベストアンサー
    • PHP
  • 「A列B列C列」 → 「A列C列B列」 に変更したい

    連日ですみません…。 ご存知の方がいらしたら、よろしくお願いいたします。 「A列B列C列」 → 「A列C列B列」 のように、 すでに入っているデータは保持したまま変更したいのですが、 これは可能でしょうか?

    • ベストアンサー
    • MySQL
  • イラストレーターのサイズ変更

    イラストレーターでA4サイズで作ったデータをポスターサイズに変更したい のですが、どの様にして変更したら良いでしょうか?A4をA1にしたいです。 手元にある参考書には載っていなかったので質問させていただきます。 ご存知の方、いらっしゃいましたら、よろしくお願いいたします。

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

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

  • PerlからDB接続し、データ登録時のエラー処理について

    PerlからDB接続し、データ登録時のエラー処理について DBにデータを登録するときにエラー処理を加えたいと思っていますが、 色んなサイトを参考にさせて頂いて、下記のようにしてみたのですが うまくできません。 $sth = $db->prepare(" INSERT INTO DBNAME (hinmei,su,tani,tuikabi) VALUES($hinmei,$su,$tani,$hiduke) "); if(!$sth->execute){  print "接続エラー";  exit; } または、 $sth = $db->prepare(" INSERT INTO DBNAME (hinmei,su,tani,tuikabi) VALUES($hinmei,$su,$tani,$hiduke) "); $sth->execute or &error('DBに登録出来ません'); 両方とも登録出来なければエラーメッセージを出すように してみたのですが、キー項目が同じものを登録しようとすると $sth->execute この部分でとまってしまうらしく、次の処理に行きません。 もちろん、キー項目が同じでなければDBに登録出来ます。 どうすればエラー処理の設定ができるでしょうか。 教えてください。 お願いします。

    • ベストアンサー
    • Perl
  • 仮想メモリの変更時、初期サイズと最大サイズの変更相場を教えてください!

    「システムの仮想メモリがなくなって来ています。仮想メモリ ページ ファイルのサイズを増やしています。この処理の間、いくつかのアプリケーションのメモリ要求が拒否されることがあります。詳細情報に関してはヘルプを参照してください。 」が出て解決方法までは分かるのですが、仮想メモリの変更時、初期サイズと最大サイズの変更相場が分かりません。サイズが大きすぎても不具合が起こると書いてありますので相場を教えてください。よろしくお願いします。。

  • VB.NETでDB2DataReaderをLan切断時にシステムエラーにする方法

    VB.net2003でDB2を使用しています。 問題 1 DB2DataReaderを使ってSQLでセレクトしてきたデータを読みます。 そして、リードする際、Lanケーブルを抜いて 切断時の環境を作るテストをしています。 ところが、ケーブルを抜いてもそのままリードして 処理をスルーしていきます。 データも一件分だけとってきています。 問題 2 リードした中で更に別のDBからテーブルをセレクトし、 別のデーターリーダーを使って処理をしますが、 そのタイミングで線を抜くとシステムエラーできちんと止まります。 両方の問題共にコネクトの設定の仕方等、全く同じやり方ですが、 どうしてこういう相違が生まれるのか教えてください。 必要なコードがあれば記述します。

CM650Wトラブルで困っています!
このQ&Aのポイント
  • CM650Wで図形が読み取れないエラーが発生しました。お困りの状況や試したことを教えてください。
  • お使いの環境はWindows10で無線LAN接続です。関連するソフト・アプリや電話回線の種類も教えてください。
  • ブラザー製品のCM650Wでトラブルが発生しており、図形の読み取りができない状況です。具体的なエラーコードなど情報を提供していただけますか?
回答を見る