:: DEVELOPER ZONE
3.23 の機能セットは、このバージョンより凍結される。新しい機能は 4.0 ブランチで導入され、3.23 ブランチではバグの修正のみが行われる。
CPU バウンドの結合クエリの多くで、実行が速くなった。Windows では、その他の CPU バウンドのクエリも実行が速くなった。
新たな SQL コマンド SHOW INNODB STATUS によって、InnoDB モニタの出力がクライアントに返されるようになった。InnoDB モニタで、最後に検出されたデッドロックに関する詳細情報が出力されるようになった。
InnoDB では、SQL クエリオプティマイザがインデックスのみの範囲スキャンを多用する代わりにフルテーブルスキャンを使用していた。これが修正された。
BEGIN および COMMIT がトランザクション周辺のバイナリログに追加されるようになった。
MySQL レプリケーションでトランザクションの境界が考慮されるようになった。これで、レプリケーションスレーブでユーザに半分のトランザクションが表示されなくなる。
クラッシュリカバリで、レプリケーションスレーブがマスタバイナリログのどの位置までリカバリできたかが出力されるようになった。
新たな設定 innodb_flush_log_at_trx_commit=2 によって、InnoDB がコミットのたびにオペレーティングシステムのファイルキャッシュにログを書き込むようになった。その速度は、設定 innodb_flush_log_at_trx_commit=0 とほぼ同じである。また設定 2 には、クラッシュが発生してもオペレーティングシステムがクラッシュしなければコミットされたトランザクションが失われないという優れた特徴がある。
オペレーティングシステムのクラッシュまたは停電が発生した場合は、設定 2 の安全性が設定 0 より低くなる。
ログブロックにチェックサムフィールドが追加された。
外部キーの規則が考慮されない任意の順序でのテーブルインポートでは、SET FOREIGN_KEY_CHECKS=0 が役立つ。
セカンダリインデックスに UNIQUE 制約を設定している場合に SET UNIQUE_CHECKS=0 を指定すると、InnoDB へのテーブルのインポートが速くなる。
このフラグは、入力レコードが UNIQUE 制約に違反していないことが確実である場合のみ使用できる。
SHOW TABLE STATUS で、想定される ON DELETE CASCADE や ON DELETE SET NULL もテーブルのコメントフィールドに列挙されるようになった。
InnoDB 型のテーブルで CHECK TABLE を実行すると、すべてのテーブルのハッシュインデックスもチェックされるようになった。
ON DELETE CASCADE または SET NULL を定義し、親レコードで参照キーを更新すると、InnoDB によって子レコードが削除または更新されていた。この動作が変更され、SQL-92 に準拠するようになった。つまり、エラー 'Cannot delete parent row' が表示されるようになった。
オートインクリメントのアルゴリズムが改善され、最初の挿入または SHOW TABLE STATUS でテーブルのオートインクリメントカウンタが初期化されるようになった。
これによって、SHOW TABLE STATUS で突然デッドロックが発生することがほぼなくなった。
データファイルへの読み取りと書き込みに使用されていた一部のバッファが調整された。 これによって、Linux でバッファなしのローデバイスをデータファイルとして使用できるようになった。
バグ修正: 大文字と小文字を変更するだけの目的でテーブルの主キーを更新した場合に、主に page0page.ic の 515 行目でアサートエラーが発生する可能性があった。
バグ修正: 外部キー制約で参照されているレコードを削除または更新する場合に、外部キーチェックでロック待ちが発生すると、そのチェックから誤った結果が報告されることがある。これは、ON DELETE... 操作にも影響する。
バグ修正: InnoDB でデッドロックまたはロック待ちタイムアウトエラーが発生すると、InnoDB はトランザクション全体をロールバックするが、MySQL が以前の SQL ステートメントを(InnoDB がそれらをロールバックした後も)バイナリログに書き出す可能性があった。このため、たとえばレプリケートされたデータベース間で同期が取れなくなることがあった。
バグ修正: コミットの途中でデータベースがクラッシュした場合に、リカバリでテーブルスペースのページがリークされることがあった。
バグ修正: latin1 以外のキャラクタセットを my.cnf で指定した場合に、マニュアルの記述に反して、外部キー制約の文字列型カラムの長さの指定を参照元テーブルと参照先テーブルで同じにしなければならなかった。
バグ修正: CREATE TABLE の実行中に DROP TABLE または DROP DATABASE を実行すると、失敗する可能性があった。
バグ修正: 32 ビットコンピュータで 2 GB を超えるバッファプールを設定した場合に、InnoDB が buf0buf.ic の 214 行目でアサートしていた。
バグ修正: 64 ビットコンピュータで、あるカラムに SQL NULL を含んでいるレコードを更新した場合に、UNDO ログと通常のログが破損する可能性があった。
バグ修正: innodb_log_monitor でページに対してロック出力を抑制するとハングが発生していた。
バグ修正: HP-UX-10.20 バージョンでは、ミューテックスによって InnoDB コードのあらゆる部分でリーク、競合、クラッシュが発生していた。
バグ修正: AUTOCOMMIT モードで SELECT を実行した直後に RENAME TABLE を実行すると、RENAME が失敗し、MySQL からエラー 1192 が返されていた。
バグ修正: 64 ビットの Solaris でコンパイルすると、InnoDB の起動時にバスエラーが発生していた。
© 1995-2005 MySQL AB. All rights reserved.
