第七章 性能优化

随着系统使用时间的增长,系统的性能问题会日益凸显出来,比如查询慢的问题,那么该如何查找问题的结点呢?

SQL调优

首先,我们想到的是能不能把系统中的查询SQL输出出来,以方便我们进行排查。显然Odoo官方考虑到了这个问题,在配置文件中的log_level提供了一个debug_sql选项,我们设置了这个配置之后,就可以在后台日志中看到各种查询语句以及他们的耗时分析。

例子:

2021-07-21 01:40:29,230 24225 DEBUG erp odoo.sql_db: query: SELECT MAX(CASE WHEN perm_create THEN 1 ELSE 0 END)
                              FROM ir_model_access a
                              JOIN ir_model m ON (m.id = a.model_id)
                              JOIN res_groups_users_rel gu ON (gu.gid = a.group_id)
                             WHERE m.model = 'stock.move.line'
                               AND gu.uid = 186
                               AND a.active IS TRUE
2021-07-21 01:40:29,230 24225 DEBUG erp odoo.sql_db: query: SELECT MAX(CASE WHEN perm_unlink THEN 1 ELSE 0 END)
                              FROM ir_model_access a
                              JOIN ir_model m ON (m.id = a.model_id)
                              JOIN res_groups_users_rel gu ON (gu.gid = a.group_id)
                             WHERE m.model = 'stock.move.line'
                               AND gu.uid = 186
                               AND a.active IS TRUE
2021-07-21 01:40:29,233 24225 DEBUG erp odoo.sql_db: SQL LOG from:
2021-07-21 01:40:29,233 24225 DEBUG erp odoo.sql_db: table: res_users: 0:00:00.000169/1
2021-07-21 01:40:29,233 24225 DEBUG erp odoo.sql_db: table: ir_ui_view: 0:00:00.001444/7
2021-07-21 01:40:29,233 24225 DEBUG erp odoo.sql_db: table: ir_model_data: 0:00:00.001455/7
2021-07-21 01:40:29,233 24225 DEBUG erp odoo.sql_db: SUM from:0:00:00.003068/42 [13746]
2021-07-21 01:40:29,233 24225 DEBUG erp odoo.sql_db: SUM into:0:00:00/42 [13746]

从日志中我们可以看出,odoo会帮我们打印出每个请求对应的SQL语句,并且收集请求中共涉及到了哪些表及耗时分析。我们可以从日志中找到查询慢的表,从而进一步找出导致查询慢的原因。

results matching ""

    No results matching ""