MyISAM
ストレージエンジンの使用時に、MySQL
では非常に高速のテーブルロック(複数リーダ/単一ライタ)が使用されます。
このテーブル型の最大の問題は、同じテーブルに対して複数の
UPDATE と遅い SELECT
が混在する場合に発生します。テーブルでこのような問題が発生した場合は、別のテーブル型を使用してもかまいません。
章 13. ストレージエンジンとテーブルタイプを参照してください。
MySQL
はトランザクションテーブル、非トランザクションテーブルの両方で機能します。非トランザクションテーブル(何らかのエラー発生した場合にロールバックができない)での動作をスムーズにするため、MySQL
には次のルールがあります。
このルールが適用されるのは正確にSQLモードで作動しているとき、あるいはIGNORE
スペシファイヤをINSERT
もしくはUPDATE
に使用しているときのみです。
すべてのカラムにデフォルト値がある。
カラムに対して'正しくない' 値を挿入した場合や、数値列の数値が大きすぎる場合、MySQL ではエラーを発生するのではなく、「とりうる可能な値のうちの最適値」に値を設定する。数値の場合は 0 で、可能な最小値か最大値になる。文字列の場合は、空白文字かカラムの最大長さにあわせた文字列になる。
計算式はすべて、エラー状態を表示するのではなく、使用可能な値を返す。たとえば、1/0
の場合は、NULL
を返す。
SQLのサーバモードの設定をすることで、さらに制御されたデータの扱いを有効にします。このことにより、以前の動作反応を変更することができます。この詳細については、項1.8.6. 「MySQL における制約の処理」、項4.2.6. 「SQL モード」、そして項12.2.4. 「INSERT
構文」を参照してください。