提升 Azure SQL 性能与利用多模型能力的综合指南
1. 原生编译存储过程
原生编译存储过程是将 T - SQL 存储过程编译为机器代码,而非像常规存储过程那样由查询执行引擎解释执行。它与 Azure SQL 中的内存中 OLTP 表配合使用,能为应用程序中对性能要求极高的频繁执行查询提供极快的响应时间。
- 性能优势 :使用原生编译存储过程的性能优势会随着处理的行数和逻辑量的增加而提升。在执行聚合操作、对大量行进行嵌套循环连接、多语句的选择、插入、更新和删除操作,或复杂的过程逻辑(如条件语句和循环)时效果最佳。
- 执行流程 :
- 当使用传统解释型 Transact - SQL 语句访问内存中 OLTP 表时,查询处理流程与基于磁盘的表非常相似,只是行数据是从内存引擎而非传统缓冲池中检索。
- 当使用原生编译存储过程时,过程分为两部分。首先,解析器、代数器和优化器为存储过程中的所有查询创建优化的查询执行计划,然后将存储过程编译为本地代码并存储在 .dll 文件中。当调用存储过程时,内存中 OLTP 运行时定位存储过程的 DLL 入口点,执行 DLL 中的机器代码,并将结果返回给客户端。
- 创建示例 :
create or alter procedure cache.[Test]
with native_compilation, schemabinding
as
begin atomic with (transaction isolation level = snapsho