gpt4 book ai didi

sql-server - 估计生产 SQL Server 系统的 IOPS 要求

转载 作者:行者123 更新时间:2023-12-03 13:19:58 31 4
gpt4 key购买 nike

我们正在开发一个每天为数千名用户提供服务的应用程序(其中 90% 的用户将在工作时间处于事件状态,并在工作日不断地使用该系统)。该系统的主要目的是查询多个数据库并将数据库中的信息组合成一个单一的响应给用户。根据用户输入,对于一个有 1000 个用户的系统,我们的查询负载可能是每秒大约 500 个查询。这些查询中有 80% 是读取查询。

现在,我使用 SQL Server Profiler 工具进行了一些分析,我平均获得了大约 300 次读取查询的逻辑读取(我还没有为写入查询而烦恼)。对于 1k 个用户,这相当于每秒 150k 逻辑读取。完整的生产系统预计将拥有约 1 万名用户。

我如何估计这些数据库对存储的实际读取需求?我很确定实际的物理读取量会比这少得多,但我该如何估计呢?当然,我不能在生产环境中进行实际运行,因为生产环境还没有,我需要告诉硬件人员我们需要多少 IOPS 才能让他们知道要做什么买。

我尝试了之前答案中建议的 HP 选型工具,但它只建议 HP 产品,没有实际的性能估计。任何见解都值得赞赏。

编辑:主要的只读数据集(大多数查询将去的地方)是磁盘上的几个 gigs(数量级 4gigs)。这可能会显着影响逻辑与物理读取。任何见解如何获得这个比率?

最佳答案

磁盘 I/O 需求因许多因素而有很大差异,包括:

  • RAM 中有多少数据
  • 架构的结构(索引、行宽、数据类型、触发器等)
  • 查询的性质(连接、多个单行与行范围等)
  • 数据访问方法(ORM 与面向集合、单命令与批处理)
  • 读取与写入的比率
  • 磁盘(数据库、表、索引)碎片状态
  • SSD 与旋转介质的使用

  • 由于这些原因,估计生产磁盘负载的最佳方法通常是构建一个小型原型(prototype)并对其进行基准测试。如果可以,请使用生产数据的副本;否则,请使用数据生成工具来构建类似大小的数据库。

    准备好示例数据后,构建一个简单的基准测试应用程序,该应用程序会生成您所期望的各种类型的查询。如果需要,缩放内存大小。

    使用 Windows 性能计数器测量结果。最有用的统计数据是物理磁盘:每次传输的时间、每秒的传输、队列深度等。

    然后,您可以对这些结果应用一些启发式方法(也称为“经验”),并将它们推断为生产 I/O 需求的初步估计。

    如果您绝对无法构建原型(prototype),则可以根据初始测量做出一些有根据的猜测,但这仍然需要工作。首先,打开统计信息:
    SET STATISTICS IO ON

    在运行测试查询之前,请清除 RAM 缓存:
    CHECKPOINT
    DBCC DROPCLEANBUFFERS

    然后,运行查询,查看物理读取 + 预读以查看物理磁盘 I/O 需求。在不先清除 RAM 缓存的情况下重复一些混合操作,以了解缓存有多少帮助。

    话虽如此,我建议不要单独使用 IOPS 作为目标。我意识到 SAN 供应商和 IT 经理似乎喜欢 IOPS,但它们是磁盘子系统性能的一个非常误导性的衡量标准。例如,当您从顺序 I/O 切换到随机 I/O 时,可交付的 IOPS 可能存在 40:1 的差异。

    关于sql-server - 估计生产 SQL Server 系统的 IOPS 要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8702174/

    31 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com