2017-09-25 1 views
0

からinnodb_buffer_pool_sizehttps://console.cloud.google.comに設定することはできません。このパラメータはありません。mysqlのinnodb_buffer_pool_sizeをgoogle cloud sqlに設定するにはどうすればよいですか?

私はまた、SQLでinnodb_buffer_pool_sizeを設定することはできません。

mysql> SET GLOBAL innodb_buffer_pool_size=2147483648; 
ERROR 1227 (42000): Access denied; you need (at least one of) the SUPER privilege(s) for this operation 
+0

私のGoogleクラウドsqlインスタンスは、メモリ使用量がマシンRAMの近くにあると、非コミットトランザクションのデータサイズが200Mより大きく、sqlのqpsが約3K/sになると常に再開します。 –

答えて

1

それは現在可能ではありません - 私たちは常に機械のRAMの75%のようなものにinnodb_buffer_pool_sizeを設定します。

あなたのケースでは、接続ごとのバッファにはさらに多くのメモリが必要で、innodb_buffer_pool_sizeには少なくて済むようです。このような状況を自動的に検出し、innodb_buffer_pool_sizeを減らす方法については考えていますが、実際には何もありません。

実用的な回避策は、インスタンスサイズを増やすことです。メモリを増やすと、トランザクションごとにバッファが増えます。おそらくあまり実用的ではない回避策は、同時クエリの実行が少ない(接続数が限られている接続プールを使用する)か、単純化する(JOINなどが少ない)ことにより、データベースの負荷を軽減することです。

+0

innodb_buffer_pool_sizeの割合を10%から75%の範囲で変更できることは素晴らしいことかもしれません。私は接続pool.Itを使用していましたが、最大10同時実行で自動再起動されます。 スレッド制限.5最大スレッドでは再起動しませんが、最大5スレッドの同時スレッドでは十分ではありません。私が使用しているSQLはjoin.Justをxxx(xxx、xxx)、(xxx、xxx)に置き換え、xx、xxをxxから選択します(xx、xx)xx。非コミットトランザクションのデータサイズ今はあまりにも多いです。 –

関連する問題