在设计和优化将在大型数据库服务器上运行的存储过程时,我应该考虑什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在设计和优化将在大型数据库服务器上运行的存储过程时,我应该考虑什么?相关的知识,希望对你有一定的参考价值。

在工作中有人说

当我们设计和优化存储过程时,我们必须考虑到它们将在大型数据库服务器上运行的事实。

我在很多方面都对这种说法感到困惑:

  1. “大型数据库服务器”是否意味着大量数据,如果是这样,它会如何影响存储过程的设计?
  2. 存储过程的设计和优化是否与常规SQL的设计和优化相同?
  3. “设计和优化”是多余的吗?换句话说,如果您设计好存储过程,是否会自动针对性能进行优化?
答案
  1. 大型数据库服务器通常在几个方面与小型服务器不同:更多数据,更多CPU,更多RAM,以及更大,更快的磁盘或SAN。某些查询在该环境中的运行方式与在小型计算机上运例如,针对大型表的复杂连接可能在那里运行得相当快,并且在较小的机器上速度过慢。还有一些缓存和内存管理方法在大型机器上有意义,这些机器在小型机器上几乎没用。
  2. 不是完全。例如,当您处理存储过程时,您还要考虑批处理边界和可能的多个结果集。 SP还可能存在与动态SQL或参数化查询不存在的安全相关问题。
  3. 不。设计意味着构建正常工作并满足业务需求的东西。优化与速度或可扩展性或两者相关。 SP可能很慢,但仍然可以做它应该做的事情。通常的最佳实践(尽管我并不总是同意)是首先使其正常工作,然后在必要时进行优化。
另一答案
  1. 通常,是的。当您使用数据库时,如果您正在处理大量数据,那么在小数据集上快速运行的事情在大数据集上可能会非常慢。
  2. 不,因为存储过程是一种恰好包含SQL的普通编程语言。
  3. 不必要。您可以拥有两个独立的设计,一个易于编码,易于维护等,但对于大量数据也很慢。另一个可能有一个不太干净,不太简单的设计,但为了性能增加了复杂性。

以上是关于在设计和优化将在大型数据库服务器上运行的存储过程时,我应该考虑什么?的主要内容,如果未能解决你的问题,请参考以下文章

史上最强大型分布式架构详解:高并发+数据库+缓存+分布式+微服务+秒杀

SQL Server——存储过程

mysql数据库优化概述详解

Sql优化 PostgreSQL存储过程

SQL Server T—SQL 存储过程 触发器

存储过程的优缺点