:: DEVELOPER ZONE
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 で修正される。
© 1995-2005 MySQL AB. All rights reserved.
