Yii2 开启 Schema 缓存,提高性能。
19-10-16 11:30
字数 1451
阅读 3039
通过Yii2 debug toolbar 发现有大量这种查询
SELECT
kcu.constraint_name,
kcu.column_name,
kcu.referenced_table_name,
kcu.referenced_column_name
FROM information_schema.referential_constraints AS rc
JOIN information_schema.key_column_usage AS kcu ON
(
kcu.constraint_catalog = rc.constraint_catalog OR
(kcu.constraint_catalog IS NULL AND rc.constraint_catalog IS NULL)
) AND
kcu.constraint_schema = rc.constraint_schema AND
kcu.constraint_name = rc.constraint_name
WHERE rc.constraint_schema = database() AND kcu.table_schema = database()
AND rc.table_name = 'my_user' AND kcu.table_name = 'my_user'
这个在查询数据库的 schema 信息,但是对于线上的产品,这样的查询是没有意义的,所以可以打开 Schema 缓存来避免多余的性能开销。
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=mydatabase',
'username' => 'root',
'password' => '',
'enableSchemaCache' => true, // 开启schema缓存
// Duration of schema cache.
'schemaCacheDuration' => 3600, // 缓存有效时间
// Name of the cache component used to store schema information
// 用来存储 schema 信息的缓存组件名称
'schemaCache' => 'cache',
],
提示
1、如果查询数据的时候使用了 asArray()
方法返回数组,是用不到 schema 缓存的。
2、如果修改了数据表的结构,比如增删字段,需要删除 schema 缓存才能生效,不然会报错。
// 方法一: 清空表结构缓存的方法
// 刷新 schema cache
Yii::$app->db->schema->refresh();
// 清楚指定表的 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
0人点赞>
请登录后发表评论
相关推荐
文章归档
2024-11
1 篇
2024-06
1 篇
2024-05
2 篇
2024-04
2 篇
2024-03
2 篇
展开剩余 68 条
2024-01
1 篇
2023-10
1 篇
2023-09
1 篇
2023-08
1 篇
2023-06
1 篇
2023-04
1 篇
2022-12
2 篇
2022-06
1 篇
2022-04
4 篇
2022-03
3 篇
2022-01
6 篇
2021-12
2 篇
2021-11
2 篇
2021-10
2 篇
2021-09
1 篇
2021-08
2 篇
2021-07
4 篇
2021-06
1 篇
2021-05
3 篇
2021-04
3 篇
2021-01
2 篇
2020-11
1 篇
2020-10
3 篇
2020-09
2 篇
2020-08
1 篇
2020-07
5 篇
2020-06
5 篇
2020-05
1 篇
2020-04
1 篇
2020-03
2 篇
2020-02
3 篇
2020-01
1 篇
2019-11
5 篇
2019-10
10 篇
2019-09
12 篇
2019-08
17 篇
2019-07
8 篇
2019-05
3 篇
2019-04
8 篇
2019-03
7 篇
2019-02
8 篇
2019-01
5 篇
2018-12
7 篇
2018-11
8 篇
2018-10
4 篇
2018-09
7 篇
2018-08
12 篇
2018-07
9 篇
2018-06
6 篇
2018-05
11 篇
2018-04
18 篇
2018-03
1 篇
2018-02
2 篇
2018-01
10 篇
2017-12
14 篇
2017-11
44 篇
2017-10
13 篇
2017-09
4 篇
2017-08
12 篇
2017-07
5 篇
2017-06
4 篇
2017-05
2 篇
2017-04
3 篇
2017-03
9 篇
2017-02
3 篇
2017-01
2 篇
2016-12
10 篇
2016-11
4 篇
最新文章
最受欢迎
11-07 19:00
06-26 11:51
05-17 17:08
05-17 10:59
04-11 17:05
13 评论
11 评论
10 评论
开启了 有的时候gii可能会发生运行时错误,使用gii的时候,关闭先Schema缓存。