我创建了一个数据库,其中包含用户活动的下表:
user_id | INTEGER | user being notified
actor_id | INTEGER | user performing the action
activity_type | STRING | classname/type of the object being notified
activity_id | INTEGER | id of the object being notified
context_type | STRING | classname/type of the object's parent
context_id | INTEGER | id of the object's parent
read/view_at | DATETIME | timestamp of when user saw it
我不知道这种设计在性能方面是否合适。所以我想以某种方式测试它。 我可以使用大量数据填充数据库并打开我需要从此表中获取数据的页面,但我不知道这是否是相关测试。
当Feed表中有10.000
个用户和50.000.000
条记录时,是否有一种很好的方法可以了解此设计的效果?
我不知道这是否有用,但我正在使用MS SQL Server
答案 0 :(得分:0)
关于绩效,没有假设是安全的。您应该按照以下步骤操作:
定义有关负载和响应时间的性能目标。您应该确定特定数据加载的已接受响应时间。
定义资源。并非每台机器配置都表现相同。您应该使用目标配置构建虚拟机。
执行load testing。您可以使用SQL Server load generator等工具来完成此操作。
希望这有帮助!
答案 1 :(得分:0)
到目前为止,这对我有用:
如您所见,数据库设计不仅仅是满足业务需求。实际上,理解客户打算如何访问数据是设计过程中不可或缺的一部分。
换句话说,传统上虽然“逻辑设计”是不够的 - 在逻辑和物理设计之间需要有一条“双向的街道”。
当Feed表中有10.000个用户和50.000.000条记录时,是否有一种很好的方法可以了解此设计的执行情况?
该句子中没有足够的信息可供回答。
首先告诉您如何访问数据,然后我们可以帮助您(重新)设计数据库以有效地支持该特定访问模式。
1 例如,如果“加载页面”对于用户体验(通常是这样)至关重要,请创建通常在该过程中执行的查询列表。
2 其中包括“物理”技术,如索引,聚类,分区等,但也可以包括传统上作为“逻辑”设计的一些方面,例如键和关系的设计。如果您了解典型DBMS使用的基础数据结构,您将能够预测大多数设计决策的性能结果。 Use The Index, Luke!是关于该主题的精彩介绍。
答案 2 :(得分:0)
如果性能至关重要,则需要将其构建到开发管道中。
我对性能至关重要的项目所做的事情: