Yii2数据库开启表结构缓存以及清除缓存

Yii2开启表结构缓存,因为当运用模型(model)时,AR的一些公共属性都会从DB中获取,这样会导致服务器负担一些额外的资源开销,实际上对于成品来说,服务器这些开始销是多余的,故应该阻止这种默认行为,把表结构进行缓存起来,提高效率.Yii2的缓存值得深入研究学习.

开启数据库表结构的schema缓存的方法:

//配置文件的方式
'db'=>array(
    ...
    'enableSchemaCache' => true,
    'schemaCacheDuration' => 86400, // time in seconds
    ...
),
 
//区分环境--代码基类里面实现
$dsn = "mysql:host=" . $config['host'] . ":" . $config['port'] . ";dbname=" . $config['name'];
$connection = new Connection([
    'dsn' => $dsn,
    'username' => $config['user'],
    'password' => $config['password']
]);
$connection->charset = "utf8mb4";
if(YII_ENV == 'prod'){              //正式环境才开启
    $connection->enableSchemaCache = true;
}
//........
return $connection;


当开启了数据库的表结构缓存之后,需要改动或执行一些改变表结构的sql语句的时候,就会出现表结构被缓存了无法立即修复BUG或故障。这个时候就需要刷新或者清除数据库表结构的缓存信息。

//方法一:清空表结构缓存的方法
 
//flush all the schema cache
Yii::$app->db->schema->refresh();
 
//clear the particular table schema cache
Yii::$app->db->schema->refreshTableSchema($tableName);
 
 
//方法二:清空所有的缓存--不仅仅是mysql表结构
Yii::$app->cache->flush();
 
 
//方法三:使用 yii命令行的方式commond清除缓存
cache/flush                Flushes given cache components.
cache/flush-all            Flushes all caches registered in the system.
cache/flush-schema         Clears DB schema cache for a given connection component.
cache/index (default)      Lists the caches that can be flushed.
 
//执行 
./yii cache/flush-all


  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值