InnoDB がトランザクション分離レベル
READ COMMITTED
および READ
UNCOMMITTED
をサポートするようになった。READ
COMMITTED
は Oracle
を厳密にエミュレートしているため、Oracle
から MySQL
へのアプリケーションの移植が容易になる。
デッドロックが選択的に解消されるようになった。つまり、ローの変更または挿入が少ないトランザクションを選んで犠牲にするようにした。
外部キーの定義で、my.cnf
の
lower_case_table_names
の設定が考慮されるようになった。
外部キー定義で参照されるテーブルが作成されるテーブルと同じデータベースにある場合は、SHOW
CREATE TABLE
で外部キー定義にデータベース名が出力されない。
InnoDB は、インデックスページをデータファイルに書き込む前に、そのほとんどのページに対して整合性チェックを実行する。
innodb_force_recovery
に 0
より大きい値を設定すると、InnoDB
はテーブルに対して SELECT *
FROM
を実行する際に、破損したインデックスレコードとページをとばす。これはダンプの際に役立つ。
InnoDB が、Windows 2000 と XP で再びバッファなしの非同期 I/O を使用するようになった。NT、95/98/ME ではバッファなしのシミュレートされた非同期 I/O のみが使用される。
バグ修正: インデックスツリーでの範囲のエンドポイントへのパスがルート内ですでに分岐している場合に、InnoDB で短いインデックス範囲のサイズが大幅に誇張して推定されていた。このため、SQL クエリで不必要なテーブルスキャンが実行される可能性があった。 この修正は、下位の 3.23.54 にも移植される。
3.23.52、4.0.3、4.0.4 で検出されたバグを修正: 一部の Windows 95/98/ME コンピュータで、InnoDB の起動に時間がかかり、クラッシュすることもあった。
バグ修正: ロック待ちの後で付与された AUTO-INC ロックが、トランザクションが終了するまで維持されていた。これによって、不必要なデッドロックが発生する可能性があった。
バグ修正: SHOW INNODB
STATUS、innodb_monitor
、または
innodb_lock_monitor
で、1
回のレポートに数百のトランザクションを出力する必要がある場合に出力が切り捨てられると、srv0srv.c
の 1621 行目で作成された mutex
に対する多数の待ちをエラーログに出力する際に
InnoDB がハングしていた。
バグ修正: Unix で SHOW INNODB
STATUS
を実行すると、平均ファイル読み取りサイズが常に
0 バイトとして報告されていた。
4.0.4 の潜在的なバグを修正: InnoDB が、MyISAM
のように ORDER BY ... DESC
を実行するようになった。
バグ修正:
テーブル上でロールバックが実行されているときに
DROP TABLE
を実行すると、クラッシュまたはハングが発生する可能性があった。これが実際にユーザにとって問題であると見なされた場合のみ、この修正が下位の
3.23 にも移植される。
バグ修正:
テーブルに主キーを作成せずに複数のインデックスを定義し、そのうちの少なくとも
1
つをユニークインデックスにして、そのすべてのカラムを
NOT NULL
として宣言すると、ORDER BY
が失敗する可能性があった。
バグ修正: ON DELETE CASCADE
に関連するロック待ちタイムアウトによって、インデックスが破損する可能性があった。
バグ修正:
プライマリインデックスから一意のキーを使って
SELECT
を実行した場合に、検索で一致したレコードに削除マークが付いていると、InnoDB
が次のレコードを返す可能性があった。
未解決のバグ: 4.0.4
で、AUTO_INCREMENT
に関する 2
つのバグが検出された。1 つは
REPLACE
がカウンタを 1
のままにする可能性があること、もう 1
つはデッドロックまたはロック待ちタイムアウトで同じ問題が発生する可能性があることである。これらは
4.0.6 で修正される。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.