目前我的数据库设计没有规范化。
当用户访问网站时,所有数据(例如完整的浏览器名称、操作系统名称等)都会被存储。这导致数据库以每天约 10GB 的速度快速增长,每天只有 200 万人(每天 200 万插入)。然而,这仅意味着每个数据只有一个插入。我正在使用 mysql 和 php。
现在我想知道如果我对数据进行标准化是否会更快。我的意思是为操作系统名称和操作系统 ID、浏览器名称和浏览器 ID 创建单独的表。然后使用流量日志表中的 ID。 在这种情况下,将在浏览器表和 os 表中查找 id,如果它们不存在,则进行两次插入,然后在流量日志表中使用浏览器 id 和 os id 进行另一个插入。所以 2 个选择和 2 个潜在插入和 1 个设置插入。
哪个可能更快。还有其他基于文件的方法来存储操作系统等的选项,或者可能将所有可能的浏览器、操作系统存储在数组中,然后仅当访问者拥有这些浏览器之一或操作系统时才插入,否则将它们作为无。
最佳答案
您实际上是在研究速度与空间的问题;与将大量批量数据插入单个表相比,更复杂的表结构可能会慢一些。在这些情况下,通常认为牺牲一点速度来降低数据库大小的增长速度是合适的;以您描述的方式规范化表格应该提供准确的折衷。
此外,将数据拆分到多个表中并进行交叉引用将使您以后可以更轻松地查询数据,例如,如果您决定要对您网站的用户进行分析。
关于mysql - 运行一个分析网站....1 重插入 vs 几个轻选择和插入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6781233/