㈠ 达梦数据库 如何使用sql语句查询,数据库容量大小和数据库使用量大小
SELECT sum(df.TOTAL_SIZE) - sum(df.FREE_SIZE) as used ,
sum(df.TOTAL_SIZE) as total,
sum(df.FREE_SIZE) as free
FROM "SYS".V$TABLESPACE AS ts, "SYS".V$DATAFILE AS df WHERE ts.ID = df.GROUP_ID;
㈡ 如何查询当前执行过后最消耗内存的sql语句是那句
--当前执行sql语句
SELECT a.SID ,
a.SERIAL# ,
a.USERNAME ,
b.PARSE_CALLS ,
b.PARSING_SCHEMA_NAME ,
b.CPU_TIME / 1000000 ,
b.ELAPSED_TIME / 1000000 ,
b.DISK_READS ,
b.DIRECT_WRITES ,
b.BUFFER_GETS ,
a.event ,
b.sql_text ,
b.SQL_FULLTEXT
FROM v$session a
INNER JOIN v$sqlarea b ON a.SQL_HASH_VALUE = b.hash_value
AND b.PARSING_SCHEMA_NAME = UPPER('smsdb')
--物理读最高sql语句
SELECT a.USERNAME ,
a.USER_ID ,
b.PARSE_CALLS ,
b.PARSING_SCHEMA_NAME ,
b.CPU_TIME / 1000000 ,
b.ELAPSED_TIME / 1000000 ,
b.DISK_READS ,
b.DIRECT_WRITES ,
b.BUFFER_GETS ,
b.sql_text ,
b.SQL_FULLTEXT
FROM dba_users a
INNER JOIN v$sqlarea b ON a.USER_ID = b.PARSING_USER_ID
AND b.PARSING_SCHEMA_NAME = UPPER('smsdb')
AND disk_reads > 1000000
--查询前10名执行最多次数SQL语句
SELECT sql_text 'SQL语句' ,
executions '执行次数'
FROM ( SELECT sql_text ,
executions ,
RANK() OVER ( ORDER BY executions DESC ) exec_rank
FROM v$sqlarea
)
WHERE exec_rank <= 10;
--查询前10名占用CPU最高的SQL语句
select sql_text 'SQL语句',
c_t 'SQL执行时间(秒)',executions '执行次数',cs '每次执行时间(秒)'from (select sql_text,
cpu_time /1000000 c_t,executions,ceil(executions/(cpu_time/1000000))cs,
rank() over(order by cpu_time desc) top_time
from v$sqlarea) where top_time <= 10
--查询前10名执行时间最长SQL语句
SELECT sql_text 'SQL语句' ,
c_t '处理时间(秒)' ,
executions '执行次数' ,
cs '每次执行时间(秒)'
FROM ( SELECT sql_text ,
ELAPSED_TIME / 1000000 c_t ,
executions ,
ceil(executions / ( ELAPSED_TIME / 1000000 )) cs ,
RANK() OVER ( ORDER BY ELAPSED_TIME DESC ) top_time
FROM v$sqlarea
)
WHERE top_time <= 10
--查询前10名最耗资源SQL语句
SELECT sql_text 'SQL语句' ,
DISK_READS '物理读次数' ,
cs '每次执行时间(秒)'
FROM ( SELECT sql_text ,
ELAPSED_TIME / 1000000 c_t ,
executions ,
ceil(executions / ( ELAPSED_TIME / 1000000 )) cs ,
DISK_READS ,
RANK() OVER ( ORDER BY DISK_READS DESC ) top_disk
FROM v$sqlarea
)
WHERE top_disk <= 10
--查询前10名最耗内存SQL语句
select sql_text 'SQL语句',
BUFFER_GETS '内存读次数',cs '每次执行时间(秒)'
from (select sql_text,
ELAPSED_TIME / 1000000 c_t,executions,ceil(executions/(ELAPSED_TIME/1000000))cs,BUFFER_GETS,
rank() over(order by BUFFER_GETS desc) top_mem
from v$sqlarea) where top_mem <= 10
--查看锁表语句
Select
c.sid,
c.serial#,
d.name,
b.object_name,
c.username,
c.program,
c.osuser
from gv$Locked_object a, All_objects b, gv$session c, audit_actions d
where a.object_id = b.object_id
and a.inst_id = c.inst_id(+)
and a.session_id = c.sid(+)
and c.command = d.action;
㈢ sql如何查询一段时间内每个周期里面数值最大的数据
10秒计算公式如下
select
sysdate,sysdate+
10/24/60/60
from
al;
select
*
from
table_name
where
字段>=sysdate
and
字段
<=
sysdate+
10/24/60/60
;
如果要进行10秒为周期查询一次数据,数据需要写入到临时表,数据库会专压力很大
需要做个定时运
属行
就可以了
㈣ SQL 找出指定日期范围最大值的资料
自关联一次,过滤不符合条件.
1. Create Table SLEEST_ANSWER And Init Data
CREATETABLE`sleest_answer`(
`date`datetimeDEFAULTNULL,
`user`varchar(10)DEFAULTNULL,
`correct`int(11)DEFAULTNULL,
`wrong`int(11)DEFAULTNULL,
`total_marker`int(11)DEFAULTNULL
)ENGINE=InnoDBDEFAULTCHARSET=utf8;
INSERTINTO`sleest_answer`VALUES('2016-05-3012:00:00','User1',12,0,12),('2016-05-1809:00:00','User1',14,2,12),('2016-05-1721:00:00','User1',10,1,9),('2016-05-2413:15:00','User2',14,3,11),('2016-05-2713:15:00','User2',15,4,11),('2016-05-3014:00:00','User2',15,4,11),('2016-04-2916:00:00','User1',18,2,16);
2. Query Result
SELECTA.DATE,A.USER,A.CORRECT,A.WRONG,A.TOTAL_MARKER
FROMSLEEST_ANSWERALEFTJOINSLEEST_ANSWERB
ONA.USER=B.USER
AND(A.TOTAL_MARKER<B.TOTAL_MARKER
OR(A.TOTAL_MARKER=B.TOTAL_MARKERANDA.CORRECT<B.CORRECT)
OR(A.TOTAL_MARKER=B.TOTAL_MARKERANDA.CORRECT=B.CORRECTANDA.WRONG>B.WRONG)
OR(A.TOTAL_MARKER=B.TOTAL_MARKERANDA.CORRECT=B.CORRECTANDA.WRONG=B.WRONGANDA.DATE<B.DATE)
)
ANDB.DATEBETWEEN'2016-05-01'AND'2016-05-31'
WHERE1=1
ANDA.DATEBETWEEN'2016-05-01'AND'2016-05-31'
ANDB.USERISNULL
㈤ sql server 2008中三条一样的数据中时间最大的那条
selec 字段1,字段2,max(时间) from 表 group by 字段1,字段2
----------------------
可以先GROUP BY 来查询出最大时间,通过这个时间对应的关键字来联查你的其他表!
㈥ SQL数据库查询最大和最小
select max(t) as 温度最大值,min(t) as 温度最小值,max(p) as 湿度最大值,min(p) as 湿度最小值,max(datetime) as 最后出现时间,min(datetime) as 最早出现时间 from yourtable_name
㈦ 请教 :db2数据库 如何查找出执行时间最长的sql
执行时间最长的20条SQL语句(按时间降序排列),可保存为脚本方便调用:
SELECT rows_read / (num_executions + 1) as avg_rows_read,
rows_written / (num_executions + 1) as avg_rows_written,
stmt_sorts / (num_executions + 1) as avg_sorts,
total_exec_time / (num_executions + 1) as avg_exec_time,
substr(stmt_text,1,1000) as SQL_Stmt
FROM SYSIBMADM.SNAPDYN_SQL ORDER BY avg_exec_time desc fetch first 20 rows only;
祝你学习愉快!
㈧ 怎么查找执行比较慢的sql语句
一、MySQL数据库有几个配置选项可以帮助我们及时捕获低效SQL语句 1,slow_query_log 这个参数设置为ON,可以捕获执行时间超过一定数值的SQL语句。 2,long_query_time 当SQL语句执行时间超过此数值时,就会被记录到日志中,建议设置为1或者更短。 3,slow_query_log_file 记录日志的文件名。 4,log_queries_not_using_indexes 这个参数设置为ON,可以捕获到所有未使用索引的SQL语句,尽管这个SQL语句有可能执行得挺快。 二、检测mysql中sql语句的效率的方法 1、通过查询日志 (1)、Windows下开启MySQL慢查询 MySQL在Windows系统中的配置文件一般是是my.ini找到[mysqld]下面加上 代码如下 log-slow-queries = F:/MySQL/log/mysqlslowquery。log long_query_time = 2 (2)、Linux下启用MySQL慢查询 MySQL在Windows系统中的配置文件一般是是my.cnf找到[mysqld]下面加上 代码如下 log-slow-queries=/data/mysqldata/slowquery。log long_query_time=2 说明 log-slow-queries = F:/MySQL/log/mysqlslowquery。 为慢查询日志存放的位置,一般这个目录要有MySQL的运行帐号的可写权限,一般都将这个目录设置为MySQL的数据存放目录; long_query_time=2中的2表示查询超过两秒才记录;
㈨ 如何查询数据库中日期最大值的内容 MSSQL
select * from tablename
where 你的日期型字段名 in
( select MAX(你的日期型字段名) from tablename
)
这个已经可以显示所有的记录了哟。