Yii2 甲骨文性能



我经常使用 Yii2,但通常使用 MySQL。这是我第一次在甲骨文中使用它。不过,我发现性能很差。我已经在谷歌上搜索了一些,发现虽然使用 Yii2 + Oracle 似乎并不常见,但似乎确实有人在谈论它很慢。

我想知道可以使用哪些建议/技巧/流程/软件包来提高性能?

我正在加载一张非常小的桌子。它有 8 行,整个表有 4 列。它们是使用 6.4MB 数据的 27 个数据库调用,运行大约需要 3 秒。查看日志,我看到很多我不太明白的东西:

 SELECT D.CONSTRAINT_NAME, D.CONSTRAINT_TYPE, C.COLUMN_NAME, C.POSITION, D.R_CONSTRAINT_NAME, E.TABLE_NAME AS TABLE_REF, F.COLUMN_NAME AS COLUMN_REF, C.TABLE_NAME 
 FROM 
 ALL_CONS_COLUMNS C 
 INNER JOIN ALL_CONSTRAINTS D ON D.OWNER = C.OWNER AND D.CONSTRAINT_NAME = C.CONSTRAINT_NAME
 LEFT JOIN ALL_CONSTRAINTS E ON E.OWNER = D.R_OWNER AND E.CONSTRAINT_NAME = D.R_CONSTRAINT_NAME 
 LEFT JOIN ALL_CONS_COLUMNS F ON F.OWNER = E.OWNER AND F.CONSTRAINT_NAME = E.CONSTRAINT_NAME AND F.POSITION = C.POSITION

SELECT a.column_name, a.data_type, a.data_precision, a.data_scale, a.data_length,
a.nullable, a.data_default,
(   SELECT D.constraint_type
    FROM ALL_CONS_COLUMNS C
    inner join ALL_constraints D on D.OWNER = C.OWNER and D.constraint_name = C.constraint_name
    WHERE C.OWNER = B.OWNER
       and C.table_name = B.object_name
       and C.column_name = A.column_name
       and D.constraint_type = 'P') as Key,
com.comments as column_comment
FROM ALL_TAB_COLUMNS A
inner join ALL_OBJECTS B ON b.owner = a.owner and ltrim(B.OBJECT_NAME) =  ltrim(A.TABLE_NAME)
LEFT JOIN all_col_comments com ON (A.owner = com.owner AND A.table_name = com.table_name AND A.column_name = com.column_name)

然后是更多关于触发器的东西。

当我尝试使用诸如

Model::find()->with('relationName')->all();

我得到

'ORA-01795: maximum number of expressions in a list is 1000 error .

这些表总共有大约 17k 行。一个表中大约有 11k,另一个表中大约有 7k 是链接的。

我使用 fk 约束作为表中的引用。

在数据库配置中添加/使用以下设置。

'schemaCacheDuration' => 7200,
'schemaCache' => 'cache',
'enableSchemaCache' => true,

YII_DEBUGtrue更改为false,将YII_ENVdev更改为prod

这将减少不必要的 SQL 执行。

最新更新