Yii2.0.54如何开启Schema缓存提升数据库性能

阿涛同学_6896

阿涛同学_6896

2026-10-22

249人浏览

原创

yii 2.0.54开启schema缓存需三步:配置cache组件(如filecache或redis)、数据库中启用enableschemacache并指定schemacacheduration和schemacache、验证缓存落盘;改表后须手动刷新,asarray()查询不走该缓存。

yii2.0.54如何开启schema缓存提升数据库性能

Yii 2.0.54 开启 Schema 缓存能显著减少重复查询 information_schema 的开销,尤其在使用 Active Record 时效果明显。核心不是“加个开关”,而是三步配齐:启用缓存组件、配置数据库连接、确保环境适配。

必须先配好 cache 组件

Schema 缓存依赖一个已注册的缓存组件,默认名是 'cache'。若未配置,即使开启 enableSchemaCache,也会静默退化为无缓存。

  • 用文件缓存(开发/小流量适用):
    'cache' => ['class' => 'yii\caching\FileCache']
  • 用 Redis(推荐线上):
    'cache' => ['class' => 'yii\redis\Cache', 'redis' => ['hostname' => 'localhost', 'port' => 6379, 'database' => 0]]
  • 确保该组件在 config/web.php 的 'components' 下注册,且名称与后续 schemaCache 值一致

db 配置要写全三个关键项

仅设 enableSchemaCache => true 不够,必须同时指定缓存时长和缓存组件名:

DrugBank 数据库
DrugBank 数据库

访问并分析来自 DrugBank 数据库的全面药物信息,包括药物属性、相互作用、靶点、通路、化学结构和药理学数据。用于药物数据、药物发现研究、药理学研究、药物-

下载
  • 'enableSchemaCache' => true —— 显式开启,不能省略
  • 'schemaCacheDuration' => 3600 —— 单位秒,建议 1 小时起;设为 0 表示永不过期(慎用)
  • 'schemaCache' => 'cache' —— 必须与上面 cache 组件的键名完全一致

完整示例片段:

return [
  'components' => [
    'cache' => ['class' => 'yii\caching\FileCache'],
    'db' => [
      'class' => 'yii\db\Connection',
      'dsn' => 'mysql:host=localhost;dbname=test',
      'username' => 'root',
      'password' => '',
      'enableSchemaCache' => true,
      'schemaCacheDuration' => 3600,
      'schemaCache' => 'cache',
    ],
  ],
];

验证是否真正生效

配完不等于跑通。需手动触发一次表结构读取,并检查缓存是否落盘:

  • 在任意控制器里执行:
    Yii::$app->db->getSchema()->getTableSchema('user');
  • 查 Redis:
    keys "schemacache:*" —— 应看到类似 schemacache:test:user 的键
  • 若用 FileCache,检查 runtime/cache/ 目录下是否有 schemacache- 开头的文件
  • 如果都为空,说明缓存组件未启用或路径权限不足

上线后要注意的两个现实问题

Schema 缓存虽快,但有副作用,必须提前管理:

  • 改表结构后必须刷新:执行 ALTER TABLE 后,旧缓存会导致字段缺失或类型错误。立刻执行:
    Yii::$app->db->schema->refreshTableSchema('user'); 或运行命令:
    ./yii cache/flush-schema
  • asArray() 查询不走 Schema 缓存:如果你大量用 User::find()->asArray()->all(),这部分查询不会受益于 Schema 缓存,优化重点应转向数据缓存或查询缓存

相关文章

数码产品性能查询
数码产品性能查询

该软件包括了市面上所有手机CPU,手机跑分情况,电脑CPU,电脑产品信息等等,方便需要大家查阅数码产品最新情况,了解产品特性,能够进行对比选择最具性价比的商品。

下载

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
PHP Yii框架专题
PHP Yii框架专题

本专题专注于PHP主流框架Yii的应用,系统讲解MVC架构、路由机制、数据库操作、表单处理、安全验证与RESTful API 开发等核心内容。通过电商网站、后台管理系统与内容管理平台等实战项目,帮助学员快速掌握Yii框架的开发技巧与实战经验。

2025.09.04

3050

22

Golangci-lint安装与入门教程
Golangci-lint安装与入门教程

本专题讲解Golangci-lint的安装、初始化、基础命令和首次代码检查,覆盖本地环境、Docker及多平台用法,帮助Go开发者快速上手。

2026.10.22

0

15

PHP2Shell高危漏洞修复教程
PHP2Shell高危漏洞修复教程

PHP2Shell漏洞是什么,哪些PHP版本和运行环境会受到影响,服务器应该如何检测与修复?本专题提供版本自查脚本、Linux与Docker升级命令、PHP-FPM和Apache排查步骤,以及修复验证、临时缓解和应急响应方案。

2026.10.22

0

12

剧云人物设定与关系管理教程
剧云人物设定与关系管理教程

本专题介绍剧云人物设定与关系管理,讲解角色小传、性格职业、人物目标、背景资料和关系网络的创建及维护方法。

2026.10.22

0

16

剧云故事大纲与分场规划教程
剧云故事大纲与分场规划教程

本专题讲解剧云梗概与多级大纲功能,覆盖全局、分集、分场结构生成,以及主线冲突、剧情节点和场次顺序调整。

2026.10.22

0

15

VibeKnow PPT讲解视频教程汇总
VibeKnow PPT讲解视频教程汇总

本专题介绍VibeKnow PPT讲解模式的素材准备、旁白生成、页面节奏、画面呈现与导出设置,适合课程和培训场景。

2026.10.22

0

16

VibeKnow PDF转视频教程合集
VibeKnow PDF转视频教程合集

本专题围绕VibeKnow的PDF转视频功能,讲解文件准备、内容解析、脚本生成、重点可视化及配音字幕检查方法。

2026.10.22

0

12

二狗PPT模板与视觉设计
二狗PPT模板与视觉设计

本专题介绍二狗PPT的职场模板、主题风格与页面版式,覆盖模板切换、色彩选择、内容匹配和正式汇报场景下的视觉优化方法。

2026.10.22

0

13

php漏洞修复方法
php漏洞修复方法

PHP漏洞聚合专题,持续整理PHP最新高危漏洞、CVE安全预警、受影响版本、自查命令及修复方案,覆盖PHP-FPM、Docker、Ubuntu与Linux服务器环境,帮助开发者快速完成漏洞排查、版本升级和安全加固。

2026.10.22

20

31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Yii2.0框架开发实战视频教程
Yii2.0框架开发实战视频教程

共22课时 | 9.3万人学习

Revel 官方 app.conf 文档
Revel 官方 app.conf 文档

共0课时 | 0人学习