11 SQL调优概述
11.3调优程序/减轻负载
如果期望减轻数据库服务器整体的CPU或者I/O负载,可通过以下步骤确定资源密集型的SQL语句:
1.选择在应用程序的处理高峰期检测。
2.在以上周期内,收集操作系统及Oracle统计信息。需要收集的Oracle统计信息至少包括文件的I/O(通过视图V$FILESTAT),系统统计信息(V$SYSSTAT),以及SQL统计信息(V$SQLAREA
, V$SQL
or V$SQLSTATS
,
V$SQLTEXT
, V$SQL_PLAN
, and V$SQL_PLAN_STATISTICS
)。
3.通过第二步收集的统计信息来确定使用最多资源的SQL语句,可以通过对V$SQL中的数据排序来断定资源的使用情况。一般关注的资源是:
Buffer gets (V$SQL
.BUFFER_GETS
, 较耗CPU的语句)
Disk reads (V$SQL
.DISK_READS
, 较耗I/O的语句)
Sorts (V$SQL
.SORTS
, 大量排序)
较注重CPU的优化,可以首先从buffer gets值较高的语句入手,否则,对于I/O来说,从DISK_READS较高的SQL语句开始。
11.5.1验证优化器统计信息
查询优化器使用从表、索引收集的统计信息来决定最优的执行计划。如果统计信息未收集或者存储在数据库中数据库的统计信息已不具代表性,则优化没有足够的统计信息来生成最优的执行计划。
1.最好为所有表收集统计信息,特别是SQL语句中表连接涉及的表需要收集统计信息。
2.表中的实际行数(row count)与DBA_TABLES.NUM_ROWS的值做比较,是一个检验数据字典的统计信息是否过时的好方法。
相关文档:
之前为了方便操作就在Sql Server的企业管理器里注册了远程服务器,但是前一段时间在远程服务器上修改了该数据库的密码,每次点击该注册服务器系统要等很长时间,象死机一样;修改连接属性也修改不了,点击后也没有反应,于是就想删除重新注册,既然无法在管理器里删除,就想从注册表里删除,找了好久终于找到了,对应的sql ......
很早做过的一个delphi项目,把里面用到的技术总结一下,主要是针对象我这样的delphi新手,技术上做个积累吧!
假设我们的数据库配置文件ServerInfo.ini内容如下:
[ServerInfo]
ServerIP=192.168.1.5
SQLDBName=Data
SQLUserID=sa
SQLPwd=
我们定义一个连接数据库的过 ......
今天想连接SQL Server服务器时发现没法连接,发现端口号不是默认的端口号,需要指定端口号,刚开始以为是IP地址加冒号再端口号就行了,结果发现没用,google一把发现原来不是冒号,是逗号,哈。比如:127.0.0.1,1451 , 格式就是:[IP],[Port] 。 完毕。 ......
“Where” 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。
“Having”是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。
在说区别之前,得先介绍GROUP BY这个子句,而在说GROUP子句前 ......