sql >> データベース >  >> RDS >> Mysql

テーブル全体をロックせずにテーブルを変更する

    簡単な答え:MySQLの場合<5.6ロックが必要です。 5.6以降、InnoDBを使用して、ロック多くのALTER TABLEには必要ありません 列の追加を含む操作

    MySQL 5.5以前を使用している場合は、操作全体で読み取りロックが取得され、最後に短い書き込みロックが取得されます。

    ALTERTABLEのMySQLドキュメントから ...

    つまり、列を追加すると、読み取りはほとんどの操作でテーブルをロックし、最後に書き込みロックを取得します。

    MySQL 5.6は、オンラインDDL を追加しました テーブルやインデックスの変更など、多くのことを高速化および改善するInnoDBに。テーブルに列を追加すると、テーブルロックが不要になります操作の開始時と終了時の短い排他ロックを除く

    すべき 自動的に発生しますが、必ずALGORITHM=inplaceを設定してください およびLOCK=none ALTER TABLEに ステートメント。

    例外が1つあります...




    1. cordovaを使用してプロジェクトファイルにローカルに保存されているSqliteデータベースファイル[アセットフォルダ]にアクセスして更新する方法

    2. CAST()を使用してSQLServerで文字列を日付/時刻に変換する方法

    3. 範囲外の数値:mysqlの1264

    4. Mysqlはデフォルトのテーブル文字セットをデータベース文字セットに変更します