|
MySQL 5.5.20 リリースノート (日本語翻訳)
機能の追加と変更
・ 新しいサーバオプション --slow-start-timeout によって、Windowsサービス制御マネージャのサービス開始タイムアウトが制御されるようになった。値は、起動中のMySQLサービスの停止をサービス制御マネージャが試行するまで待機する最大ミリ秒で、デフォルト値は15000(15秒)。MySQLサービスの起動に時間が長くかかりすぎる場合は、この値を増やす必要がある。値を0にすると、タイムアウトなしになる(Bug#45546、Bug#11754011)。
修正されたバグ
・ パフォーマンス : InnoDB ストレージエンジン :この修正では、 innodb_file_per_table オプションを有効にした際に InnoDB テーブルに対して DROPTABLE を実行した場合に、 InnoDB バッファプールのページを解放する際の効率と同時性が向上する。
この変化が最も顕著に表れるのは、バッファプールが大きいシステムの場合である。削除操作の際、バッファプールメモリ構造に対する1回のトラバースはLRUリスト(バッファプール全体)からフラッシュリスト(より小さい構造)に変更される。LRUスキャンは減るが、完全に排除されるわけではない。バッファプールのミューテックスは定期的にも解放されるので、削除操作に一定以上の時間がかかる場合には、他のスレッドが同時に処理を実行できる(Bug#11759044、Bug#51325)。
・ 重要な変更 : レプリケーション : CHANGEMASTERTO ステートメントで空のユーザを設定すると無効な内部結果が得られたが、現在これは許可されなくなった。 MASTER_USER='' の使用を試みると、または MASTER_USER を設定しないままで MASTER_PASSWORD を設定すると、ステートメントはエラーで失敗する(Bug#13427949)。
・ 重要な変更 : レプリケーション :バイナリログファイル、リレーログファイルまたはその両方を新しい場所に移動し、 --log-bin か --relay-log 、またはその両方に新しい値を指定してサーバを再起動すると、サーバが起動中に中断した。これは、インデックスファイルのエントリが新しい場所をオーバーライドしたことが原因である。さらに、パスはdatadir( --log-bin または --relay-log の値)と相対的に計算されていた。
この問題を修正するために、サーバがインデックスファイルからエントリを読み込む際に、そのエントリに相対パスが含まれるかどうかがチェックされるようになる。相対パスが含まれる場合には、 --log-bin または --relay-log オプションを使用してパスの相対表記部分が絶対パスに置き換えられる。絶対パスは変更されないため、新しいパスを使用するにはインデックスを手動で編集する必要がある(Bug#11745230、Bug#12133)。
・ InnoDB ストレージエンジン : innodb_page_size を16384以外の値に設定してMySQL5.6.4以降からライブダウングレードを実行するとき、旧バージョンのMySQLはクラッシュしたり破損のエラーを表示したりするかわりに、ページサイズに旧バージョンとの互換性がないことを報告するようになった(Bug#13116225)。
・ InnoDB ストレージエンジン :外部キー定義を含む InnoDB 子テーブルに対しては、特定の CREATETABLE ステートメントがエラーになる可能性があった。この問題が影響するのは、Windowsシステムで lower_case_table_names=0 と設定した場合のみである。この退化はMySQLBug#55222から導入された(Bug#13083023、Bug#60229)。
・ InnoDB ストレージエンジン :同時スレッドから InnoDB テーブルに対する INSERT...ONDUPLICATEKEY ステートメントを発行すると、特に INSERT...ONDUPLICATEKEYUPDATE フォームの場合は、 デッドロック が発生した。この問題は、複数の INSERTIGNORE ステートメントを発行する場合にもトリガされる可能性があった。この修正で、複数のトランザクションが同じ行にアクセスすることによって発生するデッドロックが回避される。複数のトランザクションが一貫性のない順序で複数の行を同時に挿入および更新するときは、現在もデッドロックが発生する。このタイプのデッドロックに対しては、アプリケーションの側でトランザクションを再試行する標準のエラー処理が必要である(Bug#11759688、Bug#52020、Bug#12842206)。
・ InnoDB 表明が正しくないためにサーバが停止する可能性があった。この問題はデバッグビルドにのみ影響した。この表明は、ソースファイルbtr0pcur.icと変数 cursor->pos_state を参照していた(Bug#13358468)。
・ FORMAT() 関数インスタンスのロケール情報が、ビュー定義で失われていた(Bug#63020、Bug#13344643)。
・ アンセーフな関数の呼び出しが原因で、 mysqld における handle_segfault() シグナルハンドラコード自体がクラッシュする可能性があった(Bug#54082、Bug#11761576)。
・ myisam_use_mmap を有効にすると、サーバがクラッシュする可能性があった(Bug#48726、Bug#11756764)。
・ ARCHIVE テーブルが、同時アクセスによって破損する可能性があった(Bug#42784、Bug#11751793)。