database - 关于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']) : '']);
}
解决方案
推荐阅读
- php - 如何将数据URI转换为文件并将其保存到目录
- arrays - iOS Swift如何从另一个数组中的部分字符串中删除数组中的字符串
- r - 关于在r中计算样本相关性的困惑
- python - 迭代从 excel 文件列创建的 pandas 数据框时出错
- php - 如果价格在 Woocommerce 3 中更新,则更改产品状态
- python - 如何测试 Django CreateView 和 form_valid
- vue.js - 如何将 eslint 添加到现有的 vue-cli 项目中?
- amazon-web-services - 将 AWS API Gateway 连接到由 ECS 微服务支持的内部 NLB
- javascript - Express.js:在启动时填充 mongodb 表的最佳方式
- c++ - 已释放对象的校验和不正确 - 对象可能在被释放后被修改