RDS(MySQL)にクエリキャッシュを設定するには、DBパラメータグループのquery_cache_sizeの設定で行えます。

クエリキャッシュが利用できない場合は、下記のようにサイズが0になっているはずです。

mysql> show variables like 'query_cache_size';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| query_cache_size | 0     |
+------------------+-------+

PHPなどで下記のようにquery_cache_sizeに任意のサイズを割り当て、DBパラメータグループに設定します。

require_once("/opt/aws/php/sdk.class.php");

define("AWS_KEY"       , "AAAAAAAA");
define("AWS_SECRET_KEY", "SSSSSSSS");

$rds = new AmazonRDS();
$rds->set_region(AmazonRDS::REGION_APAC_NE1);

$response = $rds->modify_db_parameter_group("suz-lab-mysql55", array(
    array(
        "ParameterName"  => "query_cache_size",
        "ParameterValue" => "268435456",
        "ApplyMethod"    => "immediate"
    )
));

var_dump($response);

AWS Management Consoleで見てみると、下記のように上記で設定した値が
パラメータquery_cache_sizeに反映されていることが確認できます。


上記のDBパラメータグループが付与された形で、一応、RDSもリブートしておきます。

再度、RDS(MySQL)上のquery_cache_sizeの値を見てみると、
上記の値が反映されていることが確認できます。

mysql> show variables like 'query_cache_size';
+------------------+-----------+
| Variable_name    | Value     |
+------------------+-----------+
| query_cache_size | 268435456 |
+------------------+-----------+

そして、適当にSELECT文を何回か実行すると、
下記のようにクエリキャッシュが機能していることが確認できます。

mysql> SHOW STATUS LIKE 'Qcache%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 1         |
| Qcache_free_memory      | 268415920 |
| Qcache_hits             | 4         |
| Qcache_inserts          | 1         |
| Qcache_lowmem_prunes    | 0         |
| Qcache_not_cached       | 91        |
| Qcache_queries_in_cache | 1         |
| Qcache_total_blocks     | 4         |
+-------------------------+-----------+

RDSのDBパラメータグループのパラメータ変更がAWSコンソールでできるようになりますように。 #AWS77less than a minute ago via Tweet-Watch Favorite Retweet Replysuz-lab
suz_lab

(AWSの七夕お願いtweetより)

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら