sql 逻辑读取次数

dbcc freeProcCache
set statistics io on

 

 

SELECT creation_time N'语句编译时间'

,last_execution_time N'上次执行时间'

,total_physical_reads N'物理读取总次数'

,total_logical_reads/execution_count N'每次逻辑读次数'

,total_logical_reads N'逻辑读取总次数'

,total_logical_writes N'逻辑写入总次数'

, execution_count N'执行次数'

, total_worker_time/1000 N'所用的CPU总时间ms'

, total_elapsed_time/1000 N'总花费时间ms'

, (total_elapsed_time / execution_count)/1000 N'平均时间ms'

,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,

((CASE statement_end_offset

WHEN -1 THEN DATALENGTH(st.text)

ELSE qs.statement_end_offset END

- qs.statement_start_offset)/2) + 1) N'执行语句'

FROM sys.dm_exec_query_stats AS qs

CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st

where SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,

((CASE statement_end_offset

WHEN -1 THEN DATALENGTH(st.text)

ELSE qs.statement_end_offset END

- qs.statement_start_offset)/2) + 1) not like '%fetch%'

ORDER BY total_elapsed_time / execution_count DESC;

转载于:https://www.cnblogs.com/q101301/p/4434914.html

### 查看和减少SQL查询中的数据页读取次数 #### 使用性能分析工具查看数据页读取次数 为了监控SQL查询的数据页读取情况,可以利用数据库管理系统自带的性能分析工具。例如,在MySQL中可以通过`SHOW PROFILES;`命令来获取最近执行语句的性能统计信息[^1]。 对于更详细的诊断,特别是针对特定查询的操作行为,如InnoDB存储引擎下的页面访问模式,则可借助于扩展日志功能或第三方插件实现深入追踪。具体来说,通过设置参数开启慢查询日志并调整其阈值能够捕捉到那些耗时较长且可能频繁触发磁盘I/O操作(即多次读取不同数据页)的SQL指令[^2]。 #### 减少数据页读取的方法 ##### 合理设计索引结构 创建合适的索引是降低数据页读取频率的有效手段之一。如果经常基于某些字段进行条件筛选、排序或是分组聚合运算,则应该优先考虑为这些列建立索引。需要注意的是,并不是所有的场景都适合加索引,过多不必要的索引反而会影响写入性能以及增加维护成本。因此,在决定是否要新增某个索引之前,应当充分评估实际需求及其潜在影响。 另外,考虑到LIKE表达式可能导致全表扫描的情况,应尽量避免使用通配符位于字符串开头的方式匹配目标值,因为这会让索引失效。相反地,采用前缀固定形式(`name LIKE 'abc%'`)则有助于发挥已有索引的作用从而加快检索速度[^3]。 ##### 调整缓存策略 适当增大缓冲池大小可以让更多常用的数据驻留在内存里,进而减少了物理磁盘上的随机读取动作。不过这项改动涉及到服务器资源配置的整体规划,需谨慎权衡利弊后再做决策。 ```sql -- 设置 MySQL 缓冲区大小 (仅作示例, 实际配置方式取决于操作系统及版本) SET GLOBAL innodb_buffer_pool_size = 4*1024*1024*1024; ``` #### 数据库优化建议总结 综上所述,想要有效控制SQL查询过程中的数据页读取次数,一方面可以从改进查询逻辑出发,另一方面也要重视基础设施层面的支持力度。合理运用各种辅助工具和技术措施相结合的办法往往能取得更好的效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值