情况
:
上周,公司一项目新上线,刚上线的第2天,在后台发现数据库服务器与IIS服务器的网络IO出现瓶颈,1GB的网络带宽,占用了70%-100%,也就是每秒传输数据700MB-1GB,数据库使用内存高达21GB。
IIS服务器CPU使用率时常爆至80%-90%,导致网站频频出现连接超时。
原因
:
晚上只好暂时关闭网站,进行服务器维护,作全面的检查跟踪,发现是一句Select语句导致:
这条语句,语法是没问题的,但在应用上出了问题。Table1存储的是10多万行数据,表数据每天都会上万的增长。
为了统计总行数,频频调用这语句,每秒刷新不低于1000次。
也因此导致网络出现瓶颈。
解决:
后面把Select语句改成
Select
Count
(1
) from
Table1
即可解决问题,网络 IO数据马上降至10MB以下,数据库使用内存也保持在预计范围12GB。
看似非常简单的问题,其实不然。解决这问题,所花的时间周期是6小时,检查问题使用1小时,修改代码使用5小时。
小结:
java进阶 做事要细心,不要犯低级错误,有时候成功取决于细节。
更多信息请查看 java进阶网 http://www.javady.com
分享到:
相关推荐
这个问题的核心在于一个简单的`SELECT`语句如何引发了严重的性能瓶颈,并如何通过优化SQL查询来解决。首先,我们来看一下原始的`SELECT`语句:`Select * From Table1`。这个语句的作用是从`Table1`中选取所有的列,...
在SQL Server 2000中,优化SELECT语句对于提升数据库性能至关重要。本文主要探讨了几个关键的优化方法和工具,旨在帮助开发者和DBA理解如何改进查询效率。 首先,SET STATISTICS IO是一个用于检查查询I/O活动的实用...
Oracle 提供了多种方式来获得一条 SQL 语句的查询计划,例如使用 explain plan 命令,在 SQLDeveloper 里面按 F6 快捷键等。但是,在 sqlplus 工具下,使用 set autotrace on 和 set timing on 的方式是比较简便的...
这有助于我们识别并解决可能导致系统瓶颈的问题,提升整体数据库性能。 首先,让我们看看"Script 4-6 查找CPU最高消耗的10个语句.sql"这个脚本。这个脚本的目标是列出最近执行的SQL语句中,CPU消耗最大的前10个。...
这条SQL语句通过连接`v$session`和`v$sqlarea`两个视图来获取当前会话中执行的SQL语句及其完整文本。其中`v$session`包含了所有活动会话的信息,而`v$sqlarea`则存储了最近执行过的SQL语句的元数据。通过`a.sql_...
比如,通过一次执行多个INSERT或UPDATE语句来替代单条语句的多次执行。 #### 5. 使用工具增强性能 - **SQL*Plus、SQL*Forms等工具**:这些工具提供了丰富的特性来帮助开发者更好地管理和优化SQL语句。例如,调整...
以下是一个示例输出片段,展示了一条SELECT语句的执行情况: ```plaintext 5) Statement Event ... Appl Handle: 12 Appl Id: *LOCAL.DB2.030421054225 Appl Seq number: 0001 Record is the result of a flush: ...
### Oracle常用性能监控SQL语句知识点详解 #### 1. 监控高磁盘读取的SQL区域 ...每一条SQL语句都针对特定的问题进行了设计,通过对这些SQL语句的理解和应用,可以有效地提升数据库的性能并解决各种性能问题。
使用循环中的SELECT语句会随着数据量的增加而呈现出线性增长的性能下降趋势,而采用一次性查询的方式则可以有效地避免这种性能瓶颈,尤其是在处理大规模数据时,其优势更加明显。 ### 结论 总之,优化ABAP中的SQL...
本文将详细介绍如何查看Oracle数据库中执行最慢和查询次数最多的SQL语句,以帮助DBA(数据库管理员)识别潜在的性能瓶颈。 首先,我们来看如何查询执行最慢的SQL语句。在Oracle中,可以使用`v$sqlarea`视图来获取...
你可能会去的一条十分独特的记录,或者只是刚好检查了任何存在的记录数,他们都满足了你的 WHERE 子句。在这种情况下,增加一个 LIMIT 1 会令你的查询更加有效。 4. 索引中的检索字段 索引不仅是主键或唯一键。...
- 第一个 SQL 语句涉及三个表的连接操作: ```sql SELECT t1.pid, t2.userid, t3.count, t1.date FROM _mydata AS t1 LEFT JOIN _myuser AS t3 ON t1.userid=t3.userid LEFT JOIN _mydata_body AS t2 ON t1....
第一条命令返回 `sys.dm_os_wait_stats` 动态管理视图中的前10条记录,这些记录按照等待时间 (`wait_time_ms`) 降序排列。 2. 第二条命令则专门筛选出等待类型为 `PAGELATCH` 和 `LAZYWRITER_SLEEP` 的记录。 ###...
由于一条SQL语句可能跨越多个块,所以按`address`和`piece`排序可以确保语句的完整性和顺序。 4. **SQL查询的执行**: - 在SQL*Plus或任何支持Oracle的开发工具中,你可以直接输入这个查询来获取结果。这将列出...
本文将探讨如何在MySQL中查询最近一条记录,并提供不同级别的查询优化策略。 首先,我们来分析一下基础的SQL语句。一个简单的查询最近一条记录的方法是通过`ORDER BY`和`LIMIT`结合,如下所示: ```sql SELECT * ...
游标的使用应当非常谨慎,因为它可能会导致性能瓶颈。 #### 26. 避免循环中的游标使用 如果可以在游标之前找到更高效的解决方案,则应优先考虑。 #### 27. 避免使用不可前进游标 除非必要,否则应避免使用不可...
特别是在高并发环境下,一条不合理的SQL语句就可能导致整个数据库系统的性能瓶颈,甚至引发故障。 #### 二、提高SQL效率的方法 为了编写出高效的SQL语句,可以从以下几个方面入手: ##### 1. 合理运用新特性 随着...
1. 使用第一条SQL语句找到被锁定的表和会话。 2. 查看锁定的详细信息,确认锁定的类型和原因。 3. 如果确认需要解除锁定,执行 `ALTER SYSTEM KILL SESSION` 命令终止相关会话。 4. 验证锁定是否已经解除。 通过...