您可能会注意到一个性能问题,像下面这样的MySQL查询会对数据库造成很大的负载。当访问者有数千次访问时,就会发生这种情况。

SELECT visit_last_action_time, visit_first_action_time, idvisitor, idvisit, user_id, visit_exit_idaction_url, visit_exit_idaction_name, visitor_returning, visitor_seconds_since_first, visitor_seconds_since_order, visitor_count_访问量,visit_goal_buyer, location_country, location_region, location_city, location_latitude, location_longitude, referer_name, referer_keyword, referer_type, idsite, profilable, visit_entry_idaction_url, visit_total_actions, visit_total_interactions,Visit_total_searches, referer_url, config_browser_name, config_client_type, config_device_brand, config_device_model, config_device_type, visit_total_events, visit_total_time, location_ip, location_browser_lang, campaign_content, campaign_group, campaign_id, campaign_keyword, campaign_medium, campaign_name, campaign_placement, campaign_source, last_idlink_va, custom_维度_1,custom_维度_2,custom_维度_3,custom_维度_4,custom_维度_5,custom_维度_6,custom_var_k1,custom_var_v1, custom_var_k2, custom_var_v2, custom_var_k3, custom_var_v3, custom_var_k4, custom_var_v4, custom_var_k5, custom_var_v5 FROM log_visit FORCE INDEX (index_idsite_idvisitor) WHERE idsite = '1' AND visit_last_action_time <= '2020-12-07 20:34:48' AND idvisitor = '…'ORDER BY visit_last_action_time DESC LIMIT

如果您正在使用用户ID特性特性,那么解决这个性能问题的方法可以是调整您的配置/ config.ini.php并设置下面的配置选项。了解更多关于此选项在如何跟踪具有用户ID的请求?

(追踪)enable_userid_overwrites_visitorid = 0

如果用户ID特性没有使用,或者如果你不想改变上面的配置,使用下面的两个MySQL查询来调整数据库索引可能会有所帮助(其中matomo_DB表前缀需要根据配置进行调整)。请注意,这些查询可能需要很长时间来执行,并且可能会在它们未完成时降低Matomo的速度。在一个高流量的Matomo安装你可能需要暂时禁用跟踪直到这两个查询完成。

DROP INDEX ' index_idsite_idvisitor ' ON matomo_log_visit创建索引index_idsite_idvisitor在matomo_log_visit (idsite, idvisitor, visit_last_action_time DESC)
以前的常见问题:我如何禁用在我的服务器上花费太长时间的优化查询?
Baidu