mysqlのalter table中のロックについてです。
下記のように、alterでテーブルを再構築中に同じテーブルにinsertが実行された場合、
接続Bのinsertはブロックされるかと思うのですが、テーブルが大きくalterに時間がかかる場合、
タイムアウトなどは発生するのでしょうか。
またもし発生する場合、タイムアウト値の設定などの確認方法はあるのでしょうか。
1.接続A
alter table table1 add columnB int(11) ;
2.接続B(接続Aのalter実行中)
insert into table1(columnA) values('aaa');
No.1ベストアンサー
- 回答日時:
ロック待ち関連のパラメータは、
innodb_lock_wait_timeout
table_lock_wait_timeout
だと思うんですが、DDLでロックされているテーブルのロック待ちに関しては、上記パラメータが関係ないようでした。
私の設定値は、デフォルトの50(両方とも)
※確認方法
show variables like '%timeout%';
2パターン、やってみました。
セッション1
alter table table1 add primary key(c1); /* 20分間 */
セッション2
start transaction;
insert into a values (100000001); /* セッション1終了後、ロック解除 */
rollback;
セッション1
alter table table1 drop primary key; /* 10分経過 */
セッション2
lock tables table1 write; /* おそらく、セッション1終了後ロック解除するのでしょう */
お礼が遅れ申し訳ありません。
こちらでもinnodb_lock_wait_timeoutやtable_lock_wait_timeoutをいじって、なぜ適用されないのだろうと悩んでいました。
ブログシステムを運用しているのですが、記事数が予想外に増えて膨れあがったテーブルへの、
ALTERでのテーブル変更を予定しているのですが、大変助かりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- PHP php エラー 2 2022/10/23 16:43
- MySQL 次の時間帯の勝率の合計を求めるSQL文 1 2023/07/04 17:12
- SQL Server AccessのInsertクエリのあとつづけてDeleteクエリを行いたいがSQLでどう書いたらいい 3 2023/05/27 14:12
- PHP PHP MySQLに画像を直接保存 2 2022/06/05 11:50
- MySQL mysqlがインストールされているのかどうか 1 2023/06/05 14:19
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL mysqlがインストールされているのかわかりません 1 2023/06/05 02:26
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- PostgreSQL PostgressからMySQL(MariaDB)へ構造を変更する際のTimestamp等について 2 2023/04/04 12:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
INSERT文でフィールドの1つだ...
-
グループ毎の最大値を持つデー...
-
Unionの結果全体をOrder By し...
-
'internal' のシステム メモリ...
-
MySQLで複数のSELECT文を1文に...
-
SQLについて教えて下さい with(...
-
count集計の結果が0の場合でも...
-
SQL Server 2005 Express で CD...
-
for whichの使い方
-
差し込み後、元データを変更し...
-
エクセルで最後の文字だけ置き...
-
VBAのAccessでDATE型のINSERT
-
同一のユーザー、同一商品のと...
-
Exel VBA 別ブックから該当デ...
-
SELECT 文 GROUP での1件目を...
-
Oracleのデータ型、NUMBERについて
-
マイクラPC版のコマンドで効率...
-
SQL文で、合計が0のレコードを...
-
カーソル0件の時にエラーを発生...
-
【VB.NET】日付型の列にNULLを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
INSERT文でフィールドの1つだ...
-
count集計の結果が0の場合でも...
-
Unionの結果全体をOrder By し...
-
SQLでフィールドの順番を変更し...
-
SQLについて教えて下さい with(...
-
グループ毎の最大値を持つデー...
-
JOINで1つのテーブルに空白があ...
-
SQL server改行コード
-
'internal' のシステム メモリ...
-
SQLでの計算結果がおかしい
-
SQLServerでの切り上げ処理
-
MySQLで複数のSELECT文を1文に...
-
SQL Server 2005 Express で CD...
-
「重複を間引いた数」をcountし...
-
自作関数の方がパフォーマンス...
-
mysqlのalter table中のロック...
-
DB2でのロック
-
外部結合での"OR"文
-
mysqlのsqlスクリプトエラーに...
-
差し込み後、元データを変更し...
おすすめ情報