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 の起動時にバスエラーが発生していた。
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.