|
|
1
2
|
|
|
2
1
RedGate's Data Generator 在其中获取大量测试数据,以查看模式在负载下的性能。你说得对,在不了解使用模式的情况下,很难制定出一个完美的测试计划,但我认为你必须对将针对它运行的查询类型有一个大致的想法。
|
|
|
3
1
建模数据模式非常重要,因为大多数SQL执行计划都基于表“统计数据”,即计数和比率,现代RDBMS使用这些数据来计算最佳查询执行计划。有些人写过关于所谓的 "query optimizers" 例如。 Cost Based Oracle Fundamentals 由于缺乏内部工作原理的文档(通常是有意的,因为RDBMS供应商不想透露太多细节),解决其中一些问题往往是一个挑战。 回到你的问题,我建议采取以下步骤:
|
|
|
4
1
创建一个单独的“数字”表,其中包含数百万行示例数据。该表可能包含随机字符串、GUID、数值等。 编写一个过程,将示例数据插入到您的模式中。使用数字列的模数(%)来模拟不同的UserID等。
创建一个“TestLog”表,您可以在其中记录测试查询的行数、开始时间和结束时间。
如果性能看起来很快,请考虑缓存未命中的可能性! 例如,如果您的生产服务器有32GB RAM,而您的表预计为128GB,则随机行查找>75%可能在缓冲区缓存中找不到。 为了模拟这种情况,您可以在运行查询之前清除缓存:
您可能会注意到性能下降了100倍,因为现在必须从磁盘加载索引和数据页。
使用标准技术来了解您的查询访问模式(扫描与查找)并调整性能。
|
|
John D · 需要为NULL或NOT NULL的WHERE子句 10 月前 |
|
|
Nebula Tech · 在SQL Server中搜索字符串中单词的多次出现 10 月前 |
|
Marc Guillot · 记录值时忽略冲突 11 月前 |
|
|
Fachry Dzaky · 正确使用ROW_NUMBER 11 月前 |
|
|
GH DevOps · 多对多关系中同类型的SQL Server关系表设计 11 月前 |
|
|
TriumphTruth · 从满足特定条件的数据集中选择1行 11 月前 |