2011年6月23日木曜日

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"に反映されていることがわかります。


念のためRDSもリブートしておきます。(当然上記のDBパラメータグループが付与された形で)

もう一度、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         |
+-------------------------+-----------+

DBパラメータグループのパラメータ変更がコンソールでできるようになりますように。 #AWS77
--------
http://www.suz-lab.com

0 コメント: