当前位置:首页 » 编程语言 » sql数据库性能

sql数据库性能

发布时间: 2025-01-02 07:33:39

㈠ 如何查询oracle 数据库性能,sql资源占用

作为一个开发/测试人员,或多或少都得和数据库打交道,而对数据库的操作归根到底都是SQL语句,所有操作到最后都是操作数据,那么对sql性能的掌控又成了我们工作中一件非常重要的工作。下面简单介绍下一些查看oracle性能的一些实用方法:

1、查询每台机器的连接数

selectt.MACHINE,count(*)fromv$sessiontgroupbyt.MACHINE

这里所说的每台机器是指每个连接oracle数据库的服务器,每个服务器都有配置连接数据库的连接数,以websphere为例,在数据源中,每个数据源都有配置其最大/最小连接数。

执行SQL后,可以看到每个服务器连接oracle数据库的连接数,若某个服务器的连接数非常大,或者已经达到其最大连接数,那么这台服务器上的应用可能有问题导致其连接不能正常释放。

2、查询每个连接数的sql_text

v$session表里存在的连接不是一直都在执行操作,如果sql_hash_value为空或者0,则该连接是空闲的,可以查询哪些连接非空闲,web3是机器名,就是WebSphereApplicationServer的主机名。

selectt.sql_hash_value,t.*fromv$sessiontwheret.MACHINE='web3'andt.sql_hash_value!=0

这个SQL查询出来的结果不能看到具体的SQL语句,需要看具体SQL语句的执行下面的方法。

3、查询每个活动的连接执行什么sql

selectsid,username,sql_hash_value,b.sql_text

fromv$sessiona,v$sqltextb

wherea.sql_hash_value=b.HASH_VALUEanda.MACHINE='web3'

orderbysid,username,sql_hash_value,b.piece

orderby这句话的作用在于,sql_text每条记录不是保存一个完整的sql,需要以sql_hash_value为关键id,以piece排序,如图

Username是执行SQL的数据库用户名,一个sql_hash_value下的SQL_TEXT组合成一个完整的SQL语句。这样就可以看到一个连接执行了哪些SQL。

4、.从V$SQLAREA中查询最占用资源的查询

selectb.usernameusername,a.disk_readsreads,a.executionsexec,

a.disk_reads/decode(a.executions,0,1,a.executions)rds_exec_ratio,

a.sql_textStatement

fromv$sqlareaa,dba_usersb

wherea.parsing_user_id=b.user_id

anda.disk_reads>100000

orderbya.disk_readsdesc;

用buffer_gets列来替换disk_reads列可以得到占用最多内存的sql语句的相关信息。

V$SQL是内存共享SQL区域中已经解析的SQL语句。

该表在SQL性能查看操作中用的比较频繁的一张表,关于这个表的详细信息大家可以去http://apps.hi..com/share/detail/299920#上学习,介绍得比较详细。我这里主要就将该表的常用几个操作简单介绍一下:

1、列出使用频率最高的5个查询:

selectsql_text,executions

from(selectsql_text,executions,

rank()over

(orderbyexecutionsdesc)exec_rank

fromv$sql)

whereexec_rank<=5;

该查询结果列出的是执行最频繁的5个SQL语句。对于这种实用非常频繁的SQL语句,我们需要对其进行持续的优化以达到最佳执行性能。

2、找出需要大量缓冲读取(逻辑读)操作的查询:

selectbuffer_gets,sql_text

from(selectsql_text,buffer_gets,

dense_rank()over

(orderbybuffer_getsdesc)buffer_gets_rank

fromv$sql)

wherebuffer_gets_rank<=5;

这种需要大量缓冲读取(逻辑读)操作的SQL基本是大数据量且逻辑复杂的查询中会遇到,对于这样的大数据量查询SQL语句更加需要持续的关注,并进行优化。

3、持续跟踪有性能影响的SQL。

SELECT*FROM(

SELECTPARSING_USER_ID,EXECUTIONS,SORTS,

COMMAND_TYPE,DISK_READS,sql_textFROMv$sqlarea

ORDERBYdisk_readsDESC

)

WHEREROWNUM<10

这个语句在SQL性能查看中用的比较多,可以明显的看出哪些SQL会影响到数据库性能。

本文主要介绍了使用SQL查询方式查看oracle数据库SQL性能的部分常用方法。此外还有许多工具也能实现SQL性能监控,大家可以在网上搜索相关知识进行学习。


转载仅供参考,版权属于原作者

㈡ GBase8s数据库SQL语句性能缓慢从哪个方面入手分析

在实际的生产运行环境中,很多客户现场都看到开发人员和系统管理人员遇到很多有关于GBase 8s 数据库引起的性能问题,进而被多次问起如何进行GBase 8s 数据库性能调优,

性能优化原则
包括:

性能规划:深入了解应用与数据库的交互特征,确立良好的设计、开发、测试迭代过程,上线前消除模型上的性能瓶颈。
实例调优:建立性能基准,对比调节数据库、操作系统、存储、网络等的配置,主动监控、消除瓶颈。
SQL 调优:书写高效 SQL,优化相关数据库对象,充分借助优化器,确定最佳执行计划。
性能优化流程
首先执行下面的初始检查:
– 获取直接用户的使用反馈,确定性能目标和范围。
– 获取性能表现好与坏时的操作系统、数据库、应用统计信息。
– 对数据库做一次全面健康检查。
根据收集的信息,以及对应用特性的了解,构建性能概念模型,明确性能瓶颈所在,以及导致性能的根本原因。
– 首先应该排除操作系统、硬件资源造成的瓶颈。
– 然后针对数据库系统性能进行分析
– 必要时,还需要检查应用日志,因为系统性能问题也可能由于应用非 SQL 部分造成瓶颈。
提出一系列针对的优化措施,并根据它们对性能改善的重要程度排序,然后逐一加以实施。不要一次执行所有的优化措施,必须逐条尝试,逐步对比。
通过获取直接用户的反馈验证调节是否已经产生预期的效果,否则,需要重新提炼性能概念模型,直到对应用特性了解进一步准确。
重复上述,直到性能达到目标或由于客观约束无法进一步优化。
常见调优技巧
找到 CPU 占用最高的 SQL

在 sysmaster 库中执行
select sqx_estcost, sqx_sqlstatement
from syssqexplain
order by sqx_estcost desc
1
2
3
注意:此时看到的仅仅是当前正在执行的 SQL
需要多看几次

onstat 命令
onstat -g act 得到当前正在执行的 SQL

根据 rstcb 列
onstat -u | grep 57c68220
1
从第三列 sessid 得到 SESSION
onstat -g ses SESSION 即可得到当时正在执行的 SQL
一般多找几个 threads 后,就基本可以确定问题 SQL

得到 SQL 后,利用 set explain on 分析其查询路径,看是否未利用索引,在对大表进行全表扫描,根据需要创建相应索引。

找到全表扫描较多的表及其 SQL
得到全表扫描较多的表
-- 系统顺序扫描较多时,被多次顺序扫描的大表,如果有,应该考虑增加索引
select first 5
substr(t.tabname,0,20) tabname,
substr(dbsname,0,10) dbname,
nrows*rowsize*p.seqscans costs,
substr(p.seqscans,0,8) seqscans,
substr(nrows,0,8) nrows
from sysmaster:sysptprof p , systables t,sysmaster:sysprofile s
where p.tabname = t.tabname
and p.seqscans > s.value/50
and s.name = 'seqscans'
--and s.value > 2000000 and nrows > 2000
order by 3 desc
1
2
3
4
5
6
7
8
9
10
11
12
13
利用 onstat –g ses 0 –r 5/ onstat –g stm 的输出信息,根据表名,找到可能的 SQL 语句。由于以上获取 SQL 的办法是有局限的,如果无法获取,建议通过查看应用日志或联系开发人员查看源代码的方式来找到。

利用 set explain on 分析其查询路径,确认是在对表进行全表扫描,根据需要创建相应索引。

㈢ 数据库比较-SQL与NoSQL(MySQL,PostgreSQL,Redis,MongoDB)

为了分析数据库性能,本文选择了SQL与NoSQL,包括MySQL、PostgreSQL、Redis与MongoDB。两者核心差异在于SQL的垂直扩展性与NoSQL的水平扩展性。
由于构建原理不同,比较SQL与NoSQL数据库困难重重。用户Euphoric在StackExchange上表示,NoSQL并非SQL的持久性技术集合,而是包含文档、键值、事件等多类型数据库,它们在结构、查询、性能与工具上大相径庭。
比较中仅关注插入、选择、更新与删除操作。MySQL与PostgreSQL作为主流SQL数据库,MySQL由开源公司赞助,支持C与C++,兼容现代操作系统;PostgreSQL则是社区驱动的,提供高级数据类型与优化。Redis与MongoDB作为NoSQL示例,前者是内存中键值存储数据库,后者是文档型分布式数据库。
为进行比较,使用了Python语言及Docker管理服务,设计了Docker-compose与数据库调度程序以执行CRUD操作。结果显示,MongoDB与Redis在插入操作上表现最佳,MySQL与PostgreSQL性能相似。选择操作中,SQL数据库性能下降,NoSQL数据库时间相对稳定。更新与删除操作中,Redis表现突出,MySQL与PostgreSQL时间增加。
综上,NoSQL数据库在特定操作上展现出更快的性能,尤其是在单个数据处理上。然而,SQL数据库在复杂操作支持上更具优势。数据库性能取决于具体应用需求。NoSQL数据库因其结构优化,更适合特定场景,如博客文章相关数据集中管理。
通过比较,了解到不同数据库在处理CRUD操作时的性能差异,NoSQL数据库在特定数据处理场景中展现出优势,而SQL数据库在复杂操作与多任务支持上表现出色。选择数据库时应考虑应用需求,以达到最佳性能与效率。

㈣ 如何优化sqlserver 数据库性能优化

SQL Server数据库查询速度慢的原因有很多,常见的有以下几种:
1、没有索引或者没有用到索引(这是查询慢最常见的问题,是数据库设计的缺陷)
2、I/O吞吐量小,形成了瓶颈效应。
3、没有创建计算列导致查询不优化。
4、内存不足
5、网络速度慢
6、查询出的数据量过大(可以采用多次查询,其他的方法降低数据量)
7、锁或者死锁(这也是查询慢最常见的问题,是程序设计的缺陷)
8、sp_lock,sp_who,活动的用户查看,原因是读写竞争资源。
9、返回了不必要的行和列
10、查询语句不好,没有优化

热点内容
java培训到底怎么样 发布:2025-03-11 01:31:19 浏览:999
开机密码怎么设 发布:2025-03-11 01:31:18 浏览:511
公司邮箱收发件服务器怎么填 发布:2025-03-11 01:20:30 浏览:137
云主机怎么配置云桌面 发布:2025-03-11 01:17:39 浏览:208
c语言tinyxml 发布:2025-03-11 01:12:39 浏览:823
数据库inner 发布:2025-03-11 01:06:55 浏览:900
ice解压 发布:2025-03-11 00:54:50 浏览:379
网址批量访问 发布:2025-03-11 00:40:38 浏览:750
粉红视频脚本 发布:2025-03-11 00:39:56 浏览:446
服务器名称或ip从哪里看 发布:2025-03-11 00:35:44 浏览:493