オープンソース サポート サービス(OSS サポート サービス)| オープンソースまるごと OpenStandia™(オープンスタンディア)
野村総合研究所


MySQL 5.1.38 リリースノート (日本語翻訳)

 

案MySQL5.1.38より、従来リリースから継承したビルトインバージョンの InnoDB に加え、 InnoDBPlugin がMySQL5.1リリースに追加されました。この InnoDBPlugin のバージョンは 1.0.4 で、ベータ品質と見なされています。

InnoDBPlugin では、新機能が追加され、パフォーマンスとスケーラビリティが向上します。また、信頼性が強化され、柔軟性および使い勝手を高める新たな機能が提供されます。 InnoDBPlugin の主な機能として、「高速インデックス作成」、テーブルおよびインデックスの圧縮、ファイル形式の管理、新たな INFORMATION_SCHEMA テーブル、容量の調整、複数のバックグラウンドI/Oスレッド、グループコミットなどがあります。

これらの機能の詳細については、 InnoDBPlugin のマニュアル( http://www.innodb.com/products/innodb_plugin/plugin-documentation )を参照してください。MySQLでの InnoDB の使用に関する一般情報については、 13.6「TheInnoDBStorageEngine」 を参照してください。

InnoDBPlugin は、ソースディストリビューションおよびバイナリディストリビューションに含まれています。ただし、RHEL3、RHEL4、SuSE9(x86、x86_64、ia64)、および汎用LinuxRPMパッケージには含まれていません。

InnoDBPlugin を使用するには、ビルトインバージョンの InnoDB を無効にし、代わりに InnoDBPlugin を使用するようサーバに指示する必要があります。これを行うには、 my.cnf ファイルで以下の行を使用します。

      [mysqld]
      ignore-builtin-innodb
      plugin-load=innodb=ha_innodb_plugin.so
    

plugin-load オプションの innodb はプラグインに関連付ける名前、 ha_innodb_plugin.so はプラグインコードが含まれる共有オブジェクトライブラリの名前です。拡張子 .so はUnix系システムの場合です。HP-UXonHPPA(11.11)またはWindowsの場合は、拡張子は .so の代わりにそれぞれ .sl または .dll になります。

サーバが起動時にこのプラグインを見つけられない場合、プラグインディレクトリのパス名を指定してください。たとえば、プラグインがMySQLインストールディレクトリ下の lib/mysql/plugin に格納され、MySQLが /usr/local/mysql にインストールされている場合、 my.cnf ファイルで以下の行を使用します。

      [mysqld]
      ignore-builtin-innodb
      plugin-load=innodb=ha_innodb_plugin.so
      plugin_dir=/usr/local/mysql/lib/mysql/plugin
    

上記の例では、 InnoDBPlugin のストレージエンジン部分をアクティブにする方法を示しましたが、このプラグインでは、InnoDBに関連する INFORMATION_SCHEMA テーブルもいくつか実装されます(これらのテーブルの詳細については、 http://www.innodb.com/doc/innodb_plugin-1.0/innodb-information-schema.html を参照)。これらのテーブルを有効にするには、 plugin-load オプションの値として、さらに テーブル名 = ライブラリ のペアを追加します。

      [mysqld]
      ignore-builtin-innodb
      plugin-load=innodb=ha_innodb_plugin.so
      ;innodb_trx=ha_innodb_plugin.so
      ;innodb_locks=ha_innodb_plugin.so
      ;innodb_cmp=ha_innodb_plugin.so
      ;innodb_cmp_reset=ha_innodb_plugin.so
      ;innodb_cmpmem=ha_innodb_plugin.so
      ;innodb_cmpmem_reset=ha_innodb_plugin.so
    

ここでは分かりやすくするために、 plugin-load オプションの値を複数の行に分けて記載しましたが、実際に my.cnf に記述する際は、スペースを入れずに1行でオプション値を指定します。Windowsの場合は、各 .so 拡張子を .dll に置き換えます。

サーバの起動後、 SHOWPLUGINS ステートメントを使用して、 InnoDBPlugin がロードされたことを確認します。たとえば、ストレージエンジンと INFORMATION_SCHEMA テーブルをロードした場合、出力に以下のような行が含まれます。

      mysql>SHOWPLUGINS;
      +---------------------+--------+--------------------+---------------------...
      |Name|Status|Type|Library...
      +---------------------+--------+--------------------+---------------------...
      ...
      |InnoDB|ACTIVE|STORAGEENGINE|ha_innodb_plugin.so...
      |INNODB_TRX|ACTIVE|INFORMATIONSCHEMA|ha_innodb_plugin.so...
      |INNODB_LOCKS|ACTIVE|INFORMATIONSCHEMA|ha_innodb_plugin.so...
      |INNODB_CMP|ACTIVE|INFORMATIONSCHEMA|ha_innodb_plugin.so...
      |INNODB_CMP_RESET|ACTIVE|INFORMATIONSCHEMA|ha_innodb_plugin.so...
      |INNODB_CMPMEM|ACTIVE|INFORMATIONSCHEMA|ha_innodb_plugin.so...
      |INNODB_CMPMEM_RESET|ACTIVE|INFORMATIONSCHEMA|ha_innodb_plugin.so...
      +---------------------+--------+--------------------+---------------------...
    

MySQLをソースディストリビューションからビルドする場合、 InnoDBPlugin はデフォルトでビルドされるストレージエンジンの1つです。MySQLをビルドする際は、たとえば 2.10「MySQLInstallationUsingaSourceDistribution」 の手順に従うなど、通常の方法で行います。ビルドが完了すると、 storage/innodb_plugin ディレクトリ下にプラグインの共有オブジェクトファイルが作成されています。 makeinstall を実行すれば、このファイルがプラグインディレクトリにインストールされます。その後、前述のバイナリディストリビューションでの説明のとおり、 InnoDBPlugin を使用するようMySQLを構成します。

gcc を使用する場合、 gcc 3.xでは InnoDBPlugin をコンパイルできません。代わりに gcc 4.xを使用してください。

追加または変更された機能:

・ レプリケーション :ステートメントベースログ(SBL)を使用する場合、SBLにとってアンセーフなステートメントを繰り返し呼び出すと、各ステートメントについて警告メッセージがエラーログに書き込まれ、この動作を無効にする方法がなかった。今回のリリースでは、 log_warnings 変数が0より大きい場合のみ、サーバは、ステートメントベースログにとってアンセーフなステートメントのメッセージを記録するようになった( Bug#46265 )。

・文書化されていない TRANSACTIONAL および PAGE_CHECKSUM キーワードが文法から削除された( Bug#45829 )。

・これまで、 SELECT...INTOOUTFILE は、文字セットを変換せずにカラム値をダンプしていたため、カラムごとに使用している文字セットが異なる場合に、エラーが生成されることなく、インポートできないデータファイルが生成される可能性があった。その結果、 --tab オプション( SELECT...INTOOUTFILE によってデータをダンプ)が指定されている場合に、 mysqldump で --default-character-set オプションが無視されていた。

今回のリリースでは、 INTOOUTFILE の後に CHARACTERSET 句を続け、ダンプ値の変換先文字セットを指定できるようになった。また、 mysqldump により、データをダンプする際に使用される SELECT...INTOOUTFILE ステートメントに CHARACTERSET 句が追加され、 --tab が指定されていても --default-character-set が無視されなくなった。

SELECT...INTOOUTFILE のその他の変更点として、 ENCLOSEDBY および ESCAPEDBY 引数が単一文字である必要があること、および非ASCIIのフィールドまたは行区切り文字が指定されている場合に SELECT...INTOOUTFILE および LOADDATAINFILE によって警告が生成されることが挙げられる( Bug#30946 )。

・今回のリリースでは、MySQL euckr 文字セットに、 euckr をMicrosoft cp949 文字セット互換にする拡張コード[81...FE][41..5A,61..7A,81..FE]を格納できるようになった。

修正されたバグ:

・ パーティショニング :無効なパーティション定義または矛盾したパーティション定義を使用してテーブルを作成しようとすると、サーバがクラッシュしていた。このようなステートメントの例を以下に示す。

      CREATETABLEt2(s1INT,s2INT)
      PARTITIONBYLIST(s1)SUBPARTITIONBYHASH(s2)SUBPARTITIONS1
      (
      PARTITIONp1VALUESIN(1),
      PARTITIONp2VALUESIN(2)(SUBPARTITIONp3)
      );
    

( Bug#46354 )

・ パーティショニング :デバッグビルドのMySQLを使用している場合、1つ以上の DOUBLE カラムで同じインデックスが使用されているパーティションドテーブルに対してクエリを実行すると、サーバで表明違反が発生していた( Bug#45816 )。

・ パーティショニング :ユーザ定義のパーティショニングが行われているテーブルに対する RENAMETABLE 操作に失敗すると、一部のテーブルファイル名のみが変更され、テーブルが使用不可のままになっていた( Bug#30102 )。

・ レプリケーション :非トランザクショナルテーブルを変更するステートメントが失敗すると、トランザクショナルキャッシュがフラッシュされ、これによって実行履歴とログ履歴に矛盾が生じていた。今回のリリースでは、 COMMIT または ROLLBACK を発行しない限り、トランザクショナルキャッシュがフラッシュされないようになった( Bug#46129 )。

・ レプリケーション :クエリに失敗した場合、またはクエリに成功しても取得された結果が空の場合、内部関数 get_master_version_and_clock() ( sql/slave.cc で定義)でエラーが無視され、そのまま処理が進められていた。今回のリリースでは、ネットワークの一時的な問題によってクエリに失敗した場合、この関数はマスタへの再接続を試み、それ以外の場合は失敗するようになった。また、同じシステム変数がマスタ上に存在しない場合(マスタのMySQLのバージョンがスレーブより大幅に古い場合)、I/Oスレッドが警告を出力するようになった( Bug#45214 )。

・ レプリケーション : MIXED ログ形式を使用している場合、テンポラリテーブルを作成し、ログ形式を ROW に切り替える更新を実行した後も、その形式の切り替えが存続していた。これにより、テンポラリテーブルをドロップするまで、テンポラリテーブルに対する以降のDDLステートメントがバイナリログに書き込まれなくなっていた( Bug#43046 )。

Bug#40013 も参照。

この回帰は Bug#20499 で報告されていた。

・ レプリケーション : --log-bin-trust-function-creators オプションが有効でない場合、 CREATEFUNCTION には DETERMINISTIC 、 NOSQL 、または READSSQLDATA のいずれかの修飾子が必要である。ステートメントベースモードを使用している場合、ストアドファンクションの実行時に同じルールに従う必要があるが、実際には DETERMINSTIC で定義された関数のみ実行可能だった。また、不正なエラーが生成されていた(ER_BINLOG_UNSAFE_ROUTINEではなくER_BINLOG_ROW_RBR_TO_SBR)。

今回のリリースでは、この点に関して、ストアドファンクションの実行と作成を両立できるようになった。 STATEMENT モードで上記のいずれかの修飾子なしでストアドファンクションを実行した場合、正しいエラーが生成され、 NOSQL または READSSQLDATA 、あるいはその両方を使用して(すなわち DETERMINSTIC を使用せずに)定義された関数を実行できるようになった( Bug#41166 )。

・RPMパッケージにテストスイートが含まれていなかった( Bug#46834 )。

・不正なインデックス最適化が、不正な結果またはサーバクラッシュの原因となる可能性があった( Bug#46454 )。

・サーバの起動時に、 max_join_size システム変数値が調整されることを示す警告が出力されていた(これらの警告は無害だが、ユーザが重要な警告として捉える可能性があった)( Bug#46385 )。

・テーブルが満杯状態であるなどのエラーの後に INSERTIGNORE を実行すると、デバッグビルドで表明違反が発生する可能性があった( Bug#46075 )。

・アイテムをサブクエリから外部クエリに移動する最適化により、サーバクラッシュが発生する可能性があった( Bug#46051 )。

・Valgrindのいくつかの警告が修正された( Bug#46003 、 Bug#46034 、 Bug#46042 )。

・デフォルトデータベースが選択されていない場合、 CREATETABLE...SELECT によりサーバクラッシュが発生する可能性があった( Bug#45998 )。

・重複が存在する場合、 MERGE テーブルに対して REPLACE を実行すると、MySQLServerがクラッシュしていた( Bug#45800 )。

・SSL初期化時にSSLファイルの読み取りに問題が発生すると、サーバは、エラーログではなく stderr にエラーメッセージを書き込んでいた( Bug#45770 )。

・RPMパッケージにおけるMySQLABからSunMicrosystems,Inc.へのベンダ名の変更が、RPMパッケージを使用してMySQLをアップグレードしたときにグレースフルに処理されなかった( Bug#45534 )。

・GUIインストーラを使用したWindowsのインストールが失敗し、以下のメッセージが表示されていた。

      MySQLServer5.1SetupWizardendedprematurely
      ThewizardwasinterruptedbeforeMySQLServer5.1.couldbecompletelyinstalled.
      Yoursystemhasnotbeenmodified.Tocompleteinstallationatanothertime,pleaserun
      setupagain.
      ClickFinishtoexitthewizard
    

この問題は、一部の環境で正常に実行できない可能性のあるMSIインストーラの手順が原因である( Bug#45418 )。

・圧縮されたクライアント/サーバプロトコルを使用すると、無効なメモリ読み取りが行われる可能性があった( Bug#45031 )。

・ mysql_real_connect() CAPI関数は、ホスト名について返された最初のIPアドレスにのみ接続を試行していた。ホスト名が複数のIPアドレスにマップされ、最初に返されたIPアドレスにサーバがバインドされていない場合、これが問題になる可能性があった。今回のリリースでは、 mysql_real_connect() は、ドメイン名がマップされているすべてのIPv4/6アドレスへの接続を試行するようになった( Bug#45017 )。

・無効な入力により、解析時に無効なメモリ読み取りが行われる可能性があった( Bug#45010 )。

・AIX tar ファイルのディストリビューションに含まれる一部のファイルが正しいパーミッションで圧縮解除されなかった( Bug#44647 )。

・デバッグビルドでは、ストアドプロシージャをプリペアドステートメントとして実行すると、表明違反が発生することがあった( Bug#44521 )。

・ mysql_stmt_execute() を使用してストアドプロシージャを呼び出すと、サーバクラッシュが発生する可能性があった( Bug#44495 )。

・インスタンス削除後に新規インスタンスを作成すると、セキュリティ設定を正しく適用できないため、インストールが正常に完了しなかった( Bug#44428 )。

・ --csv オプションが引数なしで指定された場合、 mysqlslap でこの引数が無視されていた( Bug#44412 )。

・ --init-file で指定されたファイル内でイベントスケジューラを有効にすると、サーバクラッシュが発生していた( Bug#43587 )。

・サーバが必ずしも hash_init() 関数呼び出しの戻り値をチェックしなかった( Bug#43572 )。

・今回のリリースでは、テーブルキャッシュロック( LOCK_open )は適応mutexになっている。これにより、このロックが過度に競合しているワークロードにおけるパフォーマンスが向上する( Bug#43435 )。

・ mysqladmin--count= X --sleep= Y が、最後の繰り返しから終了まで、不正に Y 秒遅らせていた( Bug#42639 )。

・一部のプラットフォームでスタック成長テストに失敗し、これがサーバクラッシュの原因となっていた( Bug#42213 )。

・ extended-status と一緒に --vertical または --relative を使用すると、 mysqladmin に、すべての変数を追跡するために十分な空間が割り当てられなかった( Bug#40395 )。

・ログテーブルのパーティショニングにより、サーバクラッシュが発生していた( Bug#40281 )。

・ UPDATE および DELETE ステートメントでクイックアクセスメソッドを使用して行を検索すると、クイック条件の評価中に、致命的エラーをクライアントに送信済みかどうかがチェックされなかった。その結果、(エラーに続いて)誤ったOKがクライアントに送信され、エラーが不正に警告に変換されていた( Bug#40113 )。

・ SHOWPROCESSLIST が、同時セッションで実行されたストアドプロシージャの解放メモリにアクセスする可能性があった( Bug#38816 )。

・Windowsへのインストール中、[MySQLInstanceConfigurationWizard]ウィンドウが、使いにくい小さいサイズで開くことがあった( Bug#38723 )。

・ make_binary_distribution により必ずしも正しいディストリビューション名が生成されなかった( Bug#37808 )。

・ SELECTMATCH(a)AGAINST('test')FROMt1ORDERBYMATCH(a)AGAINST('test') のように、SELECTリストと ORDERBY 句に重複した MATCH() 関数呼出しを含むプリペアドステートメントを実行すると、サーバがクラッシュした( Bug#37740 )。

・ビューへの mysqldump--tab の出力に、 IFEXISTS 限定子のない DROPTABLE ステートメントが含まれていた( Bug#37377 )。

・ mysql_upgrade は、メッセージを出力することなく --basedir および --datadir オプションを無視し、後方互換性を受け入れていた。今回のリリースでは、警告を出力するようになった( Bug#36558 )。

・ mysqlimport は、 --use-threads オプションに必要なスレッドサポートが有効になるよう必ずしも正しくコンパイルされなかった( Bug#32991 )。

・ --fix-table-names および --all-in-1 オプションが両方指定された場合、 mysqlcheck はテーブル名の修正に失敗していた( Bug#31821 )。

・PIDファイルを削除せずにMySQLServerを強制終了し、 mysql.serverstop でサーバを停止しようとすると、タイムアウトになるまでに900秒かかった( Bug#31785 )。

・GUIインストーラを使用したWindowsへのインストール中、インストーラがMySQLサービスのインストール完了まで待たないためにインストールに失敗し、 root パスワードなどのセキュリティ設定が正しく適用されない可能性があった( Bug#30525 )。

・ mysql による一部の結果セット行の末尾に余分なスペースが含まれていた( Bug#29622 )。

・ mysql クライアントによる、さまざまな出力形式のカラムデータに含まれるNULバイトの処理が一貫していなかった( Bug#28203 )。

・ mysqlimport で、テーブル識別子とファイル名が正しく引用符で囲まれなかった( Bug#28071 )。

・Windowsサービスのインストール時に、コマンド行構成パラメータを引用符で囲むと、引用符が値だけでなく、コマンド行オプション全体を囲むように不正に配置される可能性があった( Bug#27535 )。

・ readline ライブラリと、 Space を magic-space 関数にマップする .inputrc ファイルを使用して mysql クライアントをビルドすると、スペースを入力できなくなっていた( Bug#27439 )。

・ InnoDB は、同時トランザクション数の制限(1023)に達すると、それに関する説明的なメッセージをエラーログに書き込むが、クライアントには誤解を招く可能性のあるメッセージを返していた。または、表明違反が発生した( Bug#18828 )。

  • 免責条項
  • |  サイト利用規定
  • |  個人情報保護方針
  • |  個人情報の取り扱いについて
  • |  情報セキュリティ対策についての宣言文
  • |  
  • |  アクセスマップ
© Copyright Nomura Research Institute, Ltd. All rights reserved. オープンソースはOpenStandia