web-dev-qa-db-ja.com

MySql 5.6:my.iniのinnodb_page_size設定を無視します

そのため、my.iniでこの値を設定して、innodb_page_sizeを32kに増やしてみました。

innodb_page_size=32k

次に、MySqlサービスを停止して再起動しました。 Winのサービスは次のようになります。

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MySQL56

そして私は正しいファイルを編集して保存しました:

enter image description here

しかし、変数を HeidiSql で見ると、16kの標準値が表示されます。

enter image description here

私は何が間違っているのかわかりません...どんな助けでもありがたいです!

1
Ted

innodb_page_size のMySQLドキュメントによると、段落2

innodb_page_sizeは、MySQLインスタンスを初期化する前にのみ設定でき、後で変更することはできません。値が指定されていない場合、インスタンスはデフォルトのページサイズを使用して初期化されます。セクション14.6.1「InnoDB起動設定」を参照してください。

最初にデータベースを作成してmysqldを初めて起動した日にmy.iniでその値を初期化する必要がありました。その後mysqldを再起動しても、これを変更することはできません。

innodb_page_size の新しいサイズでMySQLインスタンスを作成する場合

  1. データなしで新しいdatadirをセットアップする必要があります(ただし、mysqldを開始しないでください)
  2. その新しいインスタンスのmy.iniでinnodb_page_sizeを32768に設定します
  3. 新しいmy.iniおよび新しいdatadirに対してmysqldを起動します
  4. mysqldumpは古いインスタンスからデータを取り出します
  5. mysqldumpを新しいインスタンスにロードします

それを試して教えてください!!!

警告

ディスクI/Oの変更に注意してください。 同じ文書の段落 は言う:

デフォルトの16kページサイズは、広範囲のワークロード、特にテーブルスキャンを伴うクエリや、一括更新を伴うDML操作に適しています。 OLTP単一のページに多くの行が含まれる場合に競合が問題になる可能性がある、小さな書き込みが多く含まれるワークロードの場合、ページサイズが小さい方が効率的です。SSDストレージデバイスでは、小さいページも効率的です。小さなブロックサイズを使用します。InnoDBページサイズをストレージデバイスのブロックサイズに近づけると、ディスクに再書き込みされる変更されていないデータの量が最小になります。一般的なI/Oチューニングのアドバイスについては、セクション8.5.8「InnoDBディスクI/Oの最適化」を参照してください。 」。

1
RolandoMySQLDBA

非標準のページサイズが特に必要な場合は、聞かせてください。私は何千ものレビューをしましたが、誰かがその設定を変更した1つのケースを思い出せません。さらに、変更のユースケースを考えるのは難しいと思います。いくつかの提案されたユースケースは、標準から逸脱することを邪魔するほど十分に利益をもたらす可能性は低いです。

これについてさらに説明するには、ディスクの特性(SSD対HDD、RAID、ハードウェアブロックサイズなど)、インデックスの特性(UUID、範囲スキャン、ポイントクエリなど)、レコードサイズ(およびそれが異なるサイズにならない理由)を含めます。 。

UUID + SSDは、より小さなpage_sizeの恩恵を受ける可能性があります。

通常、大きなレコードサイズは、より大きなページサイズに頼るのではなく、垂直分割によって分割できます。

0
Rick James