|
MySQL 5.1.44 リリースノート (日本語翻訳)
InnoDBPluginに関する注意事項:
・今回のリリースにはInnoDBPlugin1.0.6が含まれている。本バージョンは、ReleaseCandidate(RC)の品質であるとみなされている。
今回のリリースでは、
InnoDBPlugin
は、RHEL3、RHEL4、SuSE9(x86、x86_64、ia64)、およびLinuxRPM汎用パッケージを除き、ソースおよびバイナリディストリビューションに含まれている。また、FreeBSD6とHP-UX、およびia64全般のLinuxでは動作しない。
機能の追加と変更:
レプリケーション
:
サーバオプション
--binlog-direct-non-transactional-updates
が導入された。このオプションを使用すると、非トランザクショナルエンジンを使用するテーブルに対してステートメントベースのロギング形式を使用する更新が、トランザクションキャッシュではなく直接バイナリログに書き込まれる。
このオプションを使用する前に、トランザクショナルテーブルと非トランザクショナルテーブルの間に依存関係が存在しないことを確認する。InnoDBテーブルからの選択とMyISAMテーブルへの挿入を両方実行するステートメントは、このような依存関係の一例である。詳細については、 Section16.1.3.4,“BinaryLogOptionsandVariables” を参照( Bug#46364 )。
修正されたバグ:
パフォーマンス : INFORMATION_SCHEMAの名前とデータベース名を比較するメソッドは最適化されていなかったため、改善が行われた。あらかじめデータベース名の長さがわかっている場合には、まず長さチェックが実行され、長さが等しくない場合には内容比較がスキップされる( Bug#49501 )。
・
パフォーマンス
:
MD5()
と
SHA1()
の関数で、文字列が短い場合に過剰なオーバーヘッドが発生していた(
Bug#49491
)。
・
パーティショニング
:InnoDBテーブルに対する
ALTERTABLE...REORGANIZEPARTITION
ステートメントが、ロックを待機中の
innodb_lock_wait_timeout
の期限切れが原因で失敗した場合、InnoDBは作成したテンポラリファイルやテンポラリテーブルをクリーンアップしなかった。このタイムアウト後に
ALTERTABLE
ステートメントを再発行しようとすると、ストレージエンジンのエラーが発生するか、サーバがクラッシュする可能性があった(
Bug#47343
)。
・ レプリケーション : テーブルに多数のカラムを挿入すると、バイナリログが破損する可能性があった( Bug#50018 )。
Bug#42749 も参照。
・
レプリケーション
:
行ベースのレプリケーションを使用する場合、MyISAMテーブルの
BIT
または
CHAR
カラムをNULLに設定したうえでテーブルから削除しようとすると、Can'tfindrecordin
table
というエラーでスレーブが失敗した(
Bug#49481
、
Bug#49482
)。
・
レプリケーション
:
行ベースモードでロギングする場合、DDLステートメントは実際にステートメントとしてログに記録されるが、テンポラリテーブルに影響しDDLステートメントに続くステートメントはバイナリログ形式をROWにリセットできないため、ステートメントベース形式でログに記録されていた。現在は、DDLステートメントがバイナリログに書き込まれた後で
binlog_format
の状態が復元される(
Bug#49132
)。
・
レプリケーション
:
行ベースのロギングを使用する場合、
t
がすでにテンポラリテーブルとして存在する場合には、ステートメント
CREATETABLEtIFNOTEXIST...SELECT
が
CREATETEMPORARYTABLEtIFNOTEXIST...SELECT
としてログに記録された。
これは、同じ名前でテンポラリテーブルが存在した場合には、テンポラリテーブルがオープンされて
SELECT
の結果がそのテーブルに挿入されたという事実が原因だった。
現在このステートメントを実行すると、同じ名前のテンポラリテーブルがすでに存在する場合であっても、tがベーステーブルとして作成され、
SELECT
の結果はそのベーステーブルに挿入されるため、ステートメントは正しくログに記録される(
Bug#47418
)。
Bug#47442 も参照。
・
レプリケーション
:
バイナリログにおけるイベント表現のサイズ変更が原因で、MySQL4.1のマスタからMySQL5.0.60以降を実行しているスレーブに複製すると、
STARTSLAVEUNTIL
ステートメントが正しく機能せず、ログの誤った位置で停止した。現在は、マスタが以前のバージョンのバイナリログ形式を使用していることをスレーブが検出し、イベントサイズの差異を補正するため、スレーブは正しい位置で停止する(
Bug#47142
)。
・テストスイートでのSSL証明書が期限切れになるところだった。証明書は更新され、有効期限は2015年まで延長された( Bug#50642 )。
・Solaris8以前にはprintstack関数が存在しないため、コンパイル失敗の原因となった( Bug#50409 )。
・適切な権限のないユーザが
INFORMATION_SCHEMA.TABLES
のテーブルを表示できる可能性があった(
Bug#50276
)。
・結合構造のデバッグ出力が文字化けしていた( Bug#50271 )。
・filesortのソートメソッドを
CHAR(0)
カラムに適用すると、サーバがクラッシュする可能性があった(
Bug#49897
)。
・
sql_buffer_result
は
SELECT
以外のステートメントに対しても効果があり、その点がドキュメントと異なっていた(
Bug#49552
)。
・テーブルメタデータから計算可能な集約値のみを返すため、サブクエリの評価は不要な場合がある。これがエンクロージング型サブクエリによって処理されないことがあり、サーバがクラッシュした( Bug#49512 )。
・全文検索と行の式が混在すると、クラッシュが発生した( Bug#49445 )。
・1023件のトランザクションがアクティブなテーブルを作成または削除すると、表明違反が発生した( Bug#49238 )。
・現在、 mysql-test-run.pl は環境変数MTR_TESTCASE_TIMEOUT、MTR_SUITE_TIMEOUT、MTR_SHUTDOWN_TIMEOUT、およびMTR_START_TIMEOUTを認識する。これらの環境変数が設定されている場合、その値を使用して--testcase-timeout、--suite-timeout、--shutdown-timeout、および--start-timeoutのオプションがそれぞれ設定される( Bug#49210 )。
・
innodb_force_recovery
が4以上に設定されている場合、自動増分のカラムを含むInnoDBテーブルをオープンするとサーバがクラッシュする可能性があった。バージョン5.1.31以降のMySQLが影響を受けた(
Bug#46193
)。
・ストレージエンジンがエラーを報告した後でオプティマイザがクエリの実行を続行する可能性があり、サーバがクラッシュする原因となった( Bug#46175 )。