首页 > 解决方案 > 关于PostgreSQL性能表的问题

问题描述

我正在重新设计一项服务以对其进行优化,但我不知道为表选择哪个选项。
我有两张表,里面有很多条目。

表 1:logs(10M 行)
表 2:user_agents(2M 行)

logs
+----+-----+---------------+-----+
| id | ... | user_agent_id | ... |
+----+-----+---------------+-----+

user_agents
+----+------+
| id | name |
+----+------+

目前我的表logs有一个user_agent_id可以直接去user_agent关联用户访问的日志。
当新访问者在将日志保存到数据库之前发送日志时,我会检查此用户代理是否已在user_agent表中,否则我会添加它。

只要logs没有在数据库中注册,用户就无法访问他想要的页面。

我想优化日志表中的写入速度,我想知道将其数据分成 2 个表这一事实在写入时间方面是否真的很重要。

另一种方法是将一user_agent列放回日志表中。

获取 id/insert user_agent 的字体

public function get_ua_id($headers)
{
    return ListUA::firstOrCreate(['name' => isset($headers['HTTP_USER_AGENT']) ? utf8_encode($headers['HTTP_USER_AGENT']) : '']);
}

标签: databaselaravelpostgresql

解决方案


推荐阅读