我知道如果集群索引更大的页面大小可以提高范围和多点查询的性能。
当我们有非集群索引时,更大的页面大小是否会影响性能。因为通常行彼此不存在。在这种情况下,大页面大小会读取更多不需要读取的行。
写入操作(插入和更新)的情况相同。通常我们需要更新和插入单行。
对于 4K 和 16 KB,一个 IO 是否需要相同的时间?
我知道如果集群索引更大的页面大小可以提高范围和多点查询的性能。
当我们有非集群索引时,更大的页面大小是否会影响性能。因为通常行彼此不存在。在这种情况下,大页面大小会读取更多不需要读取的行。
写入操作(插入和更新)的情况相同。通常我们需要更新和插入单行。
对于 4K 和 16 KB,一个 IO 是否需要相同的时间?
对于索引顺序的批量操作,较大的页面大小可以显着提高性能,有时甚至是显着的性能提升。对于非常随机的访问,尤其是许多小写入,也有类似的性能显着降低的潜力。
假设驱动器磁头当时位于正确的位置,单次读取 16K 块所需的时间是读取 4K 块的时间的四倍,但读取四个连续的 4K 块几乎与读取单个 16Kb 块相同.
不幸的是,我们无法为您提供更准确的建议,尤其是在没有大量关于您的应用程序 I/O 模式的信息的情况下 - 您可能需要在测试环境中对您的特定应用程序进行基准测试以确保.
通常选择 4Kb 作为默认值(至少在基于 x86 或 a64 的 CPU 上),因为它与底层操作系统和有时硬件中的页面大小相匹配,因此在一般情况下更有效,因为它是“自然大小”。但是,数据库的特定考虑会覆盖这一点,这可能是 MS SQL Server 使用 8Kb 页面大小的原因。