目前我的数据库设计尚未规范化。
当用户访问网站时,存储所有数据,例如完整的浏览器名称,操作系统名称等。这导致数据库以每天约10GB的速度快速增长,每天只有200万人(每天200万次插入)。但是,这仅表示每个数据只有一个插入。我正在使用mysql和php。
现在我想知道如果我将数据规范化会更快。我的意思是为操作系统名称和操作系统ID,浏览器名称和浏览器ID创建单独的表。然后使用流量日志表中的ID。 在这种情况下,浏览器表中会有两个查找,并且对于ids的os表,如果它们不存在那么两个插入,然后在流量日志表中另一个插入浏览器id和os id。因此2选择2个潜在插入和1个插入。
哪一个可能更快。还有任何其他选项的基于文件的方法来存储操作系统等,或者可能存储所有可能的浏览器,操作系统在数组中,然后只有当访问者有其中一个浏览器或其他只是插入其他人时才插入。
答案 0 :(得分:3)
你真的在看速度与空间的问题;更复杂的表结构可能比将大量批量数据插入单个表要慢一些。在这种情况下,通常认为通过一点点速度牺牲来降低数据库大小增长率是合适的;以您描述的方式规范化表格应该提供完全妥协。
此外,将数据拆分为多个表格并进行交叉引用将使您以后可以更轻松地对数据进行查询,例如,如果您决定要对用户的网站运行分析。