SQL SERVER数据库重建索引的方法
一.查询思路
1.想要判断数据库查询缓慢的问题,可以使用如下语句,可以列出查询语句的平均时间,总时间,所用的CPU时间等信息
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_offsetEND
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_offsetEND
qs.statement_start_offset)/2) + 1) not like %fetch%
ORDER BY total_elapsed_time / execution_count DESC;
2.列出数据库每个表的数据量,并且需要运维人员对业务足够了解,知道大概哪些表是查询量最多的,可以查看“排在前面的表的磁盘使用情况”:
3.查看表碎片的情况,可以使用命令
DBCC SHOWCONTIG
可以看到该表扫描密度只有33.52%(最佳状态是100%,每个表页都写满数据),远远低于最佳计数,也就是说这个表的利用率很低,本来扫描一页 就能出结果,现在可能需要扫描三页,增加了查询时间;而逻辑碎片和区碎片都很多(一般认为超过30%就需要优化了),也就是说同样一页,数据很少而碎片很 多,占用了过多的数据库资源。
4.根据你对业务的了解,找出查询最多的表,对比他的数据,查询时间,和碎片程度可以判断出该表是否需要整理碎片,重建索引,以提高数据库性能。
重建索引的语句为:
use[数据库名]
ALTER INDEX ALL ON [表名称] REBUILD;
重建后,同样的一张表NWME_Company_Index,再次查询表碎片情况的结果如下:
可以看到密度已经变为96.9%,而逻辑碎片几乎没有了。
5.现在可以看一下整理碎片后,是否真的对查询性能优化了,再次运行第一点列出的命令查看可以发现,大部分查询语句所用的平均时间都下降了接近一半:
现在可以到前台实际体验优化后的效果了。
我想要获取技术服务或软件
服务范围:MySQL、ORACLE、SQLSERVER、MongoDB、PostgreSQL 、程序问题
服务方式:远程服务、电话支持、现场服务,沟通指定方式服务
技术标签:数据恢复、安装配置、数据迁移、集群容灾、异常处理、其它问题
本站部分文章参考或来源于网络,如有侵权请联系站长。
数据库远程运维 SQL SERVER数据库重建索引的方法
相关文章
- SQL Server 2005“备份集中的数据库备份与现有的数据库不同”解决方法
- sql文件怎么导入sql server数据库_sql怎么导入数据库
- SQL开发知识:SQL Server Management Studio(SSMS)复制数据库的方法
- 教你如何处理SQL Server数据库附加失败的处理方法
- sql server 2012 备份集中的数据库备份与现有的xxx数据库不同
- SQL Server数据库复制失败的原因及解决方法
- sql server 2000 数据库自动备份设置方法
- SQL Server中聚合历史备份信息对比数据库增长的方法
- SQL Server 2005 数据库转 SQL Server 2000的方法小结
- 清除SQL Server数据库日志(ldf文件)的方法汇总
- SQL Server解析/操作Json格式字段数据的方法实例
- SQL Server 2005数据库备份还原错误及解决方法详解数据库
- Oracle 参数 RDBMS_SERVER_DN 官方解释,作用,如何配置最优化建议
- 使用Python连接SQL Server数据库(python连接sqlserver数据库)
- 使用SQL Server实现数据库快速查询(sqlserver方法)
- 库恢复SQL Server数据库的一种方法(sqlserver还原)
- 数据库快速删除SQL Server数据库的方法(如何删sqlserver)
- 数据库时遇到的坑踩坑记:建立SQL Server 数据库之路(在建立sqlserver)
- 使用SQL Server中间件实现数据库管理的绝佳之道(中间件sqlserver)
- 用SQL Server降低版本,改善数据库性能(sqlserver 降级)
- SQL Server分区:提高数据库性能的新方法(sqlserver的分区)
- 怎样的数据库SQL Server:多功能的数据库解决方案(sqlserver是一个)
- SQL Server数据库备份失败,该怎么办?(sqlserver备份失败)
- SQL Server数据库恢复:从混乱到清空(sqlserver卡恢复)
- SQL Server与百度云:云端数据库管理新解决方案(sqlserver百度云)
- 对SQL Server赋予中文名:唯物主义数据库(sqlserver中文名)
- SQL Server 9.0.4:实现更快速、更稳定数据库管理(sqlserver904)
- 管理SQL Server数据库用户的秘籍(sqlserver数据库用户)
- SQL Server:培养出数据库性能的真菜鸟(辣鸡sqlserver)